Trema本は、執筆中の原稿データがgithub上で公開されており、ダウンロードした原稿データからPDFやepub形式の電子書籍データを自分でビルドできる。ビルドの手順も、有志がblogにアップしてくれているので簡単。Kindleはepubに対応してないので、epubからmobi形式に変換する。PDFでも読めるけど、フォントサイズが固定になってしまうのでmobi形式の方が良いでしょう。
まずは、Trema本をビルドする環境を整える。
自分はMac OSXを使ってるので、同じくMac OSXでTrema本をビルドした@q_megumi_p さんの記事を参考にした。
※Trema本の公式サイトではTexのインストールを要求しているけど、Texが無くてもepubのビルドはできるらしい。
次に、gitコマンドで原稿データをダウンロード。原稿データ一式がtrema-bookというディレクトリ配下にダウンロードされる。
takeruko@macmini:~/work$ git clone https://github.com/yasuhito/trema-book.git Cloning into 'trema-book'... remote: Counting objects: 2199, done. remote: Compressing objects: 100% (940/940), done. remote: Total 2199 (delta 1295), reused 2131 (delta 1227) Receiving objects: 100% (2199/2199), 36.58 MiB | 481 KiB/s, done. Resolving deltas: 100% (1295/1295), done. takeruko@macmini:~/work$ ls ./ ../ trema-book/
trema-bookディレクトリ直下で「rake epub」を実行すれば、Trema本のepubファイルがビルドされる。
takeruko@macmini:~/work$ cd trema-book/ takeruko@macmini:~/work/trema-book$ rake epub rm -f trema.epub review-epubmaker trema.yaml adding: mimetype (stored 0%) adding: META-INF/container.xml (deflated 29%) 〜(中略)〜 adding: OEBPS/whats_openflow.html (deflated 69%) takeruko@macmini:~/work/trema-book$ ls trema.epub trema.epub
epubをmobiに変換するには、Amazonで無料配布しているkindlegenを使えば良い。
Windows版・Mac OSX版・Linux版がそれぞれ用意されているので、Mac OSX版をダウンロードして、適当な場所に解凍する。
takeruko@macmini:~/work$ ls ./ KindleGen_Mac_i386_v2_7.zip ../ trema-book/ takeruko@macmini:~/work$ unzip KindleGen_Mac_i386_v2_7.zip -d kindlegen_2.7 Archive: KindleGen_Mac_i386_v2_7.zip creating: kindlegen_2.7/docs/ creating: kindlegen_2.7/docs/chinese/ 〜(中略)〜 inflating: kindlegen_2.7/manual.html takeruko@macmini:~/work$ ls ./ kindlegen_2.7/ ../ trema-book/ KindleGen_Mac_i386_v2_7.zip解凍したファイルのうちの「kindlegen」がmobi形式ファイルを作るツール。 実行権限を付けてから、引数にTrema本のepubファイルを指定して実行すれば、epubファイルと同じディレクトリにmobi形式のファイルが作成される。
akeruko@macmini:~/work$ ls kindlegen_2.7/ ./ ../ EULA.txt EULA_Japanese.txt KindleGen Legal Notices 2009-11-10 Mac.txt docs/ kindlegen manual.html takeruko@macmini:~/work$ chmod +x kindlegen_2.7/kindlegen takeruko@macmini:~/work$ kindlegen_2.7/kindlegen trema-book/trema.epub ********************************************************* * Amazon.com kindlegen(MAC OSX) V2.7 build 1019-d6e4792 * * A command line e-book compiler * * Copyright Amazon.com 2012 * ********************************************************* Info(prcgen):I1047: Added metadata dc:Title "新ネットワーク制御技術 OpenFlow 実践入門" 〜(中略)〜 Info(prcgen):I1037: Mobi file built with WARNINGS! takeruko@macmini:~/work$ ls trema-book/trema.mobi trema-book/trema.mobiできたmobi形式のファイルをKindleのdocumentsフォルダ配下に入れれば、読むことができる。Kindleで表示すると、こんな感じ。
目次(table of contents)も使えないみたいだし。
※【2012/10/27 22:29 追記】見栄えの悪さは、後述の修正方法をタカミヤさんが速攻で取り込んでくれたので、すでに直ってます。仕事が速いぜ!タカミヤさん!
takeruko@macmini:~/work$ unzip trema-book/trema.epub -d ./trema_epub
Archive: trema-book/trema.epub
extracting: ./trema_epub/mimetype
inflating: ./trema_epub/META-INF/container.xml
〜(中略)〜
inflating: ./trema_epub/OEBPS/whats_openflow.html
解凍すると、こんな感じにHTMLファイルやCSSファイル、画像ファイルを見ることができる。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link rel="stylesheet" type="text/css" href="trema.css" /> <meta name="generator" content="ReVIEW" /> <title>OpenFlow って何?</title> </head> <body> <h1><a id="h1" />第1章 OpenFlow って何?</h1> <div class="lead"> <p>ネットニュースをにぎわせている OpenFlow って何でしょうか?一体どんな仕組みで何がうれしいのでしょうか?本章を読むと、難しいネットワーク用語を知らなくても、身近なたとえ話ですっきりと理解できます。</p> </div> <div class="image"> <img src="images/whats_openflow/incredible_machine.png" alt="" width="20%" /> </div> 〜(以下略)〜epubのビルドの設定はtrema.yamlで行う。見るとCSSファイルの指定が漏れているので、trema.yamlの設定でtrema.cssを指定する。
takeruko@macmini:~/work$ vi trema-book/trema.yaml
# review-epubmaker向けの設定ファイルの例。 # yamlファイルをReVIEWファイルのある場所に置き、 # 「review-epubmaker yamlファイル」を実行すると、ちなみに、kindleではncxファイルで定義した目次はtable of contentsに使われないらしい。 table of contentsを使えるようにするためには、目次ページをHTMLで作成して、opfファイルのguide要素で指定するだとか何とか難しいことをする必要があるらしいんだけど、trema.yamlで以下のように指定すれば良いらしい。.epubファイルが # 生成されます。 # このファイルはUTF-8エンコーディングで記述してください。 〜(中略)〜 # CSSファイル (yamlファイルおよびReVIEWファイルを置いたディレクトリにあること) # stylesheet: book.css stylesheet: trema.css 〜(以下略)〜
# EPUB標準の目次以外に目次を作成するか
mytoc: true
あと、画像ファイルのサイズや表の罫線の見栄えを良くするためにtrema.cssを編集。とりあえず画像サイズは70%、表はborderを指定するようにしてみた。
takeruko@macmini:~/work$ vi trema-book/trema.css
img { width: 70%; text-align: center; } table { border: solid 1px #000000; width: 90%; margin-bottom: 1em; border-collapse: collapse; } th { border: solid 1px #000000; background: #800000; color: #ffffff; } td { border: solid 1px #000000; }trema.yamlとtrema.cssを編集し終えたら、再度epubをビルドしてからmobi形式に変換。 Kindleで表示してみると、こんな感じ。
見栄えが良くなった!
table of contentsも有効になってる。
Trema本をあらためて読んでみると、コミカルな文調かつ分かりやすい説明でありながらも、要所要所にタカミヤさんのプログラマとしての美学・哲学が随所に主張されており、かなり骨太な内容。特に若い技術者はいい勉強になるので絶対に読むべき。
「OpenFlow 実践入門」の発売は2013年初旬とか。
楽しみです。
0 件のコメント:
コメントを投稿