<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Markdown &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/markdown/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Thu, 13 Feb 2014 01:53:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>MarkdownからEPUB データを生成する「grunt-mdeb」を書いてみた</title>
		<link>https://blog.mach3.jp/2014/02/13/grunt-mdeb.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 13 Feb 2014 01:53:12 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[EPUB]]></category>
		<category><![CDATA[Grunt]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Markdown]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3823</guid>

					<description><![CDATA[先日の記事で軽く触れた、Markdown から EPUB データを生成する Grunt タスクの体裁を整えてパブリッシュしてみました。 grunt-mdeb mach3/grunt-mdeb @ GitHub Grunt [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先日の記事で軽く触れた、Markdown から EPUB データを生成する Grunt タスクの体裁を整えてパブリッシュしてみました。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-xyzdsDoO95M/Uvi88blGlPI/AAAAAAAACcs/l11vRUxF410/s400/2014-0210-00.png" alt="MarkdownからEPUB データを生成する「grunt-mdeb」を書いてみた"/></figure>



<p></p>



<span id="more-3823"></span>



<h2 class="wp-block-heading">grunt-mdeb</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><a href="https://github.com/mach3/grunt-mdeb">mach3/grunt-mdeb @ GitHub</a><br />
  Grunt task to publish markdown docs as EPUB 3.0 book.</p>
</blockquote>



<p>Markdown書類とJSONの設定ファイルからEPUBデータを作成します。 ナビゲーションドキュメント（論理目次＋視覚目次）はMarkdownを元に出力されるXHTMLから抽出されて自動的に生成されます。 名前の「mdeb」は「Markdown to eBook」の略です。</p>



<h3 class="wp-block-heading">動作環境</h3>



<p>タスクの中でシェルコマンドを叩いている箇所があるので、 bash等が動く環境でないと動作しません。 Mac OSX や Linux なら問題ありませんが、 Windowsの場合は Git CUI（MinGW）や cygwin 環境で使用する必要があります。 Git CUI は msysgit で Git 環境を導入していれば同梱されているのでお勧めです。</p>



<ul class="wp-block-list">
<li><a href="http://msysgit.github.io/">Git for Windows</a></li>



<li><a href="http://www.mingw.org/">MinGW | Minimalist GNU for Windows</a>（Git CUIの中身です）</li>



<li><a href="http://www.cygwin.com/">Cygwin</a></li>
</ul>



<h3 class="wp-block-heading">デモ兼ドキュメント</h3>



<p>ドキュメントは grunt-mdeb のリポジトリの「demo」の中に document.epub として保存されています。 これは実際に mdeb タスクで生成された EPUB データです。 変換される前の Markdown は demo/src に、EPUBデータにコンパイルされる前の XHTML データは demo/dest/tmp に格納されています。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/mach3/grunt-mdeb/tree/master/demo/src">demo/src （Markdownデータ）</a></li>



<li><a href="https://github.com/mach3/grunt-mdeb/tree/master/demo/dest/tmp">demo/dest/tmp （XHTMLデータ）</a></li>
</ul>



<h2 class="wp-block-heading">基本的な使い方</h2>



<h3 class="wp-block-heading">1. インストール</h3>



<p>npm でタスクをインストールします。</p>


<pre class="wp-block-code"><span><code class="hljs">$ npm install grunt-mdeb
</code></span></pre>


<h3 class="wp-block-heading">2. タスクの設定</h3>



<p>Gruntfile.js で &#8220;grunt-mdeb&#8221; を読み込み、&#8221;mdeb&#8221; タスクを設定します。</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">grunt</span><span class="hljs-selector-class">.loadNpmTasks</span>("<span class="hljs-selector-tag">grunt-mdeb</span>");

<span class="hljs-selector-tag">grunt</span><span class="hljs-selector-class">.initConfig</span>({
    <span class="hljs-attribute">mdeb</span>: {
        dist: {
            options: {},
            <span class="hljs-selector-tag">src</span>: "<span class="hljs-selector-tag">src</span>",
            <span class="hljs-selector-tag">dest</span>: "<span class="hljs-selector-tag">dest</span>"
        }
    }
});
</code></span></pre>


<p><strong>src</strong> と <strong>dest</strong> は必須項目で、それぞれ元データと出力データの格納ディレクトリを指定します。 <a href="https://github.com/mach3/grunt-mdeb/blob/master/demo/src/data/06.md">options</a> は任意でオプションを設定してください。</p>



<h3 class="wp-block-heading">3. データ構成</h3>



<p>src ディレクトリの中に元データを格納していきますが、次のような構成にします。 （各ディレクトリの名前は先述のオプションで変更する事ができます）</p>


<pre class="wp-block-code"><span><code class="hljs">src/
├ assets/
├ data/
│ ├ cover.md
│ ├ 01.md
│ ├ 02.md
│ └ ...
└ publish.json
</code></span></pre>


<p><strong>data</strong> ディレクトリにはコンテンツの元になる Markdown 書類を格納します。 <strong>assets</strong> ディレクトリにはスタイルシートや画像などの依存ファイルを格納します。 assets ディレクトリの中身は全て複製されて EPUB データに同梱されます。</p>



<h3 class="wp-block-heading">4. publish.json</h3>



<p>publish.json には、タイトルや著者名をはじめ、EPUBデータを構成する為の情報を全て記述します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">{
    <span class="hljs-string">"meta"</span>: {
        <span class="hljs-string">"name"</span>: <span class="hljs-string">"document"</span>,
        <span class="hljs-string">"title"</span>: <span class="hljs-string">"My First Book"</span>,
        <span class="hljs-string">"author"</span>: <span class="hljs-string">"mach3"</span>,
        ...
    },
    <span class="hljs-string">"assets"</span>: {
        <span class="hljs-string">"coverImage"</span>: <span class="hljs-string">"assets/img/cover.jpg"</span>,
        <span class="hljs-string">"commonStyle"</span>: <span class="hljs-string">"assets/css/common.css"</span>,
        ...
    },
    <span class="hljs-string">"items"</span>: &#91;
        <span class="hljs-string">"data/cover.md"</span>,
        <span class="hljs-string">"data/01.md"</span>,
        <span class="hljs-string">"data/02.md"</span>
        ...
    ]
}
</code></span></pre>


<p>中のデータは３つのセクションにわかれています。</p>



<ul class="wp-block-list">
<li><strong>meta</strong><br /><br />書籍の基本的な情報を格納する</li>



<li><strong>assets</strong><br /><br />画像やスタイルシート等の情報を格納する</li>



<li><strong>items</strong><br /><br />コンテンツドキュメントの元となる Markdown ドキュメントを列挙する</li>
</ul>



<p>items の一番最初のドキュメントは表紙ページとして扱われる点にご注意ください。 項目のさらなる詳細やサンプルは <a href="https://github.com/mach3/grunt-mdeb/blob/master/demo/src/data/03.md">ドキュメント</a> に記してあります。</p>



<h3 class="wp-block-heading">5. コンパイルする</h3>



<p>mdeb タスクを実行して EPUB ファイルを生成します。</p>


<pre class="wp-block-code"><span><code class="hljs">$ grunt mdeb
</code></span></pre>


<p>コンパイルに成功すると、dest ディレクトリの中に生成した EPUB データと、EPUB に固める直前のデータが格納されています。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">dest/
├ tmp/
│ ├ OEBPS/
│ ├ META-INF/
│ └ mimetype
└ <span class="hljs-built_in">document</span>.epub
</code></span></pre>


<h2 class="wp-block-heading">注意点</h2>



<ul class="wp-block-list">
<li><br /><p>中のシェルスクリプトには rm -r なども含まれているので、使用にはご注意ください。 コンパイルを開始する前に dest ディレクトリ内の *.epub ファイルと temp ディレクトリの中全てを削除してクリーンな状態にする様になっています。</p><br /></li>



<li><br /><p>一応バリデーションは通るように書かれていますが、あまり盲信せずに一応確認するようにしましょう。 <a href="https://github.com/mach3/grunt-mdeb/blob/master/demo/src/data/06.md">オプション</a> で、 コンパイル完了時に epubcheck を実行する事も出来るようになっています。 （別途 <a href="https://github.com/IDPF/epubcheck">epubcheck</a> のインストールが必要です）</p><br /></li>



<li><br /><p>grunt-mdeb を使用して被ったいかなる損害についても、対応はいたしかねます。</p><br /></li>
</ul>



<h2 class="wp-block-heading">まとめ</h2>



<p>私は物を書くときにいつも Markdown だったので、 そのまま EPUB に出来たら楽だろうな、と思って作ってみたパッケージです。 ブログを Markdown で書かれている方も多いと思うので、 何かの役に立つことがあれば。</p>



<h2 class="wp-block-heading">追記</h2>



<dl>
<dt>2014/02/13</dt>
<dd>サンプルコードの initConfig の中身が間違っていたので修正</dd>
</dl>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
