テキストファイル群を1つのEPUB3としてまとめる手法を調査し、実際に作成してみた。
作成したEPUB書籍を読む対象はKobo glo/Kobo Touchと、Android端末である。
なんやかんやあった末、作成できたわけですが、一番参考にしたのは、日本電子書籍出版社協会発行の「電書協EPUB 3 制作ガイド」に含まれるpdfとサンプルepub(book-template.epub)でした。
今回はテキストファイルのepub化なので、リフロー型とよばれる形式になるので、そのサンプルepubであるbook-template.epubを元に作成していきました。
book-template.epubをunzipで解体し、その内容を流用していき、不明な点があったら、それについてグーグルで探してみる、という感じでやるのが、わかりやすかったです。
不明な点についてはイースト株式会社の「EPUB日本語文書作成チュートリアル」を見ればだいたいおっけーでした。
実際に作ってみた後は、「epubcheckツール」を使って論理的な整合性チェックを実施。
上記のURLだとソースコードしか入手できないように見えますが、「https://github.com/IDPF/epubcheck/releasesの方にあるzipファイルからepubcheck.jarを入手できます。
epubcheck.jarの実行は、「java -jar epubcheck.jar EPUBファイル名」という感じでコマンドライン指定で行います。
詳しいオプションについては「Running from Commandline」を参照のこと。
以下は作成した際に引っかかった点。
・Kobo touch/gloの仕様上拡張子「.epub」では日本語フォントをデフォルト選択してくれない
拡張子「.kepub.epub」にすると表示してくれる。
最初は、stylesheetでフォント指定をすれば拡張子.epubでも表示できるんじゃないかとがんばってみたけど、書籍を選択した状態で処理が非常に重くなり、結局表示できない、という状態になってしまった。
同じモノでも、.kepub.epubにすると、すぐに表示できる。
なんでも、.epubと.kepub.epubの場合で、EPUBを解釈するエンジンが違うんだとか・・・
・「mimetype」ファイルに改行が入っていたらepubcheckに引っかかった
・navigation documentで<li>~</li>とやったら、「<a>」か「<span>」を入れないと不正、とかepubcheckで言われてしまった
・standard.opfでファイル更新日のmetaタグ dcterms:modifiedを入れなかったら、epubcheckで引っかかった。
・epubファイルの作成はepubのルートディレクトリにて以下を実行
zip -0 -q -X ../$title.epub mimetype
zip -r -q ../$title.epub * -x mimetype
・navigation documentと目次の違いがいまいち理解できていない
電書協と角川のサンプルだと、navigation documentへは「表紙」「目次」「本文の開始」「奥付」ぐらいの登録しかなく、実際の章立てに関わる目次は「目次ページ」内で記載する、という雰囲気になっている。
が・・・そういった構造で作ってみると、EPUBビューアの目次表示機能で、目次として認識してくれない。
このため、navigation documentにも目次を記載した。
ついでに、縦書きビューワの目次にも対応させるために、ncx形式の目次も追加した。
今後の参考
・KADOKAWA-EPUB 制作仕様
角川書店系列のepub仕様書。
サンプルepubもある。
KindleとかiBookを考えた場合の処理について参考になった。
・iBooks Asset Guide 5.1 Revision 2
AppleのiBooks用のepub仕様書。
いま不明な点。
spineアイテム数が84個あるepubを、epubcheck 4.0にかけると、以下の警告が出るという点。
$ java -jar epubcheck.jar ファイル名.epub
Validating against EPUB version 3.0 - custom validation
WARNING(OPF-020): n5884z.epub/item/standard.opf(-1,-1): Excessive number of spine items.
Validating using EPUB version 3.0 rules.
Check finished with warnings
epubcheck completed
$ export LANG=ja_JP.utf8
$ java -jar epubcheck.jar ファイル名.epub
Validating against EPUB version 3.0 - custom validation
WARNING(OPF-020): n5884z.epub/item/standard.opf(-1,-1): spineアイテムの数が多す ぎます.
EPUB version 3.0 のルールを使って検証します.
警告が検出されました
epubcheck completed
$
消したり増やしたりで確認してみたところ、itemrefが50個以上で警告がでた。
spineアイテム数の制限に関する記述を発見できていない。