Rakeを利用した電子書籍ビルドの自動化
はじめての電子書籍執筆を支えたソフトウェアで紹介した通り、 Re:VIEWとkindlegenとmd2reviewを導入することで、Markdownで執筆を行ないながら、コマンドを実行するだけで、MarkdownファイルからEPUB, PDF, MOBI(以下、これらを総称して電子書籍ファイルと呼びます)を生成することが可能となりました。
ゲラの執筆段階では、たまに電子書籍ファイルを生成するだけですが、校正段階に入ると、表示確認のために頻繁に電子書籍ファイルを生成するようになりました。
MarkdownファイルからEPUB, MOBI, PDFを生成するために必要なコマンドは次のようになります。
$ md2review d2review chapter1.md > ./chapter1.re # .md を .re に変換 $ review-epubmaker config.yml # EPUB作成 $ kindlegen book.epub # MOBI作成 $ review-pdfmaker config.yml # PDF作成
これらを随時実行するのは、なかなか手間です。そこで、RubyのビルドツールであるRakeを利用するのが鉄板のようです。
好みがあるため、Rakefileの書き方は人それぞれあるのですが、ここでは、私が実際に利用したRakefileを紹介します。
Fuzoku実践入門で利用したRakefile
執筆と平行して必要に応じて改良をほどこしていたのですが、現時点での最終形は以下になっています。
なお、Re:VIEWやmd2reviewなどのGemはbundle install
を使ってインストールしているため、それぞれのコマンド実行にはbundle exec
が付いています。
require 'rake' desc 'create all books (.epub, .pdf, .mobi)' task all: [:epub, :pdf, :mobi] desc 'create .epub' task :epub do sh 'bundle exec review-epubmaker config.yml' end desc 'create .pdf' task :pdf do sh 'rm -rf *pdf' sh 'bundle exec review-pdfmaker config.yml' end desc 'create .mobi' task :mobi do sh 'rm -f *.mobi' sh 'kindlegen learning-fuzoku-sample.epub || true' end desc 'send to kindle' task :send_to_kindle do sh 'bundle exec kindlemail -f learning-fuzoku-sample.mobi' end desc 'convert ./src/*.md to ./*.re' task :md2review do Dir.glob('./src/*.md') do |md| re = File.basename(md).sub(/\.md$/, '.re') sh "bundle exec md2review #{md} > ./#{re}" end end desc 'clean working files' task :clean do sh 'rm -rf learning-fuzoku-sample-*' sh 'rm -f *.epub' sh 'rm -f *.pdf' sh 'rm -f *.mobi' end task default: :all
rake -T
で表示されるタスクは次の通りです。
rake all # create all books (.epub, .pdf, .mobi) rake clean # clean working files rake epub # create .epub rake md2review # convert ./src/*.md to ./*.re rake mobi # create .mobi rake pdf # create .pdf rake send_to_kindle # send to kindle
タスクの説明
それでは、これらのタスクの説明をしていきます。
MarkdownをRe:VEIW形式に変換する:rake md2review
ゲラを執筆するMarkdownファイルは、./src/chapter1.md
のような形で、srcディレクトリ以下に保存しています。
rake md2review
は、srcディレクトリの中にある .md ファイルを全て .re に変換して、トップディレクトリに配置してくれます。
電子書籍ファイルを作成する:rake epub, rake mobi, rake pdf, そして rake all
rake epub
, rake mobi
, rake pdf
は、それぞれEPUB, MOBI, PDFを生成するコマンドを実行してくれます。
MOBI は EPUBから変換しているため、EPUBファイルがなければエラーになります。そこで、もしEPUBがない状態でMOBIを作成したい場合は、rake epub mobi
と実行します。
rake all
は、EPUB, MOBI, PDFの電子書籍ファイルを一気に生成してくれるコマンドです。処理速度が気にならない場合は、これを実行するのが一番楽で、私はこれを多用していました。
作業ファイルを削除する:rake clean
電子書籍ファイルを生成すると、次のようなファイルやディレクトリが作成されます。
これらを自動的に削除してくれるのがrake clean
です。
Kindle へ送信する:rake send_to_kindle
kidlemailを使ってコマンドラインからKindleへファイルを送るで紹介した機能をRakeから実行できるようにしています。
これにより、EPUBを作成してKindleへ送るという作業が、rake epub send_to_kindle
というコマンドだけで自動的に完了できます。
まとめ
というわけで、本記事では、私が実際に執筆で利用したRakefileを紹介してみました。
この記事で紹介したRakefile及び、該当するリポジトリは、GitHubで公開していますので、興味がある方はご欄下さい。
なお、EPUBを生成と同時に開きたい場合、Macであればopen
コマンドにEPUBファイル指定してあげると開くことができるので、私はまれに次のようなコマンドも使っていました。
$ rake epub && open learning-fuzoku-sample.epub
頻繁に利用する方は、こちらもrakeコマンド化しておくのも良いかもしれません。
Fuzoku実践入門: 裏打ちされた知識で正々堂々とデビューする
- 作者: 村雨秋乃
- 発売日: 2014/11/01
- メディア: Kindle版
- この商品を含むブログを見る