
日本語のEpub電子書籍サンプルです。
Epubは、アップル(Apple)のアイブックストア(iBookStore)、グーグルエディション(Google Editions)、ソニーリーダー(Sony reader)などが採用した公開電子書籍フォーマットです。
アマゾン(Amazon)のキンドルブック(Kindle book)の入稿形式としても利用可能です。
このサンプルは2009年9月時点で下記のリンクにあった英語のEpub 2.0のサンプルを元に作成しました。
Epub eBooks Tutorial (with a sample hand-written .epub book)
(現在はもっと充実したEpubチュートリアルの一部になっている)
Epub形式は、XHTMLの本文と、目次やファイル一覧などのXMLファイルをZIPファイルにまとめたものです。 このすべてをテキストエディタで手書きして作成しました。
もとはEpub 2.0の時に作成したものです(2009/09/18)。 その後、ルビや縦書きなど日本語対応が進んだEpub 3.0の機能を盛り込みました(2011/11/03)。 さらに今回、Epub 3.0対応の検証ツール、Epubcheckのベータ版(3.0b5)を用いて、Epub仕様に厳密に(おおむね)合うよう修正を行いました(2012/07/05)。
また、今回は、ページ送りのテストをするために、横書き用と縦書き用とEpubファイルを二つに分けました。
ダウンロード: sample-epub.zip
Epubファイルを直接ビューアで読み込む場合は下記のリンクをクリックかタッチしてください。
両方試す場合には先に前のものを削除してから読み込んでください。
よこ: sample-yoko.epub
たて: sample-tate.epub
このサンプルブックはタイトルページと三つの章からなります。 最初の二章は図や表、箇条書きやリンクなど、HTMLの主要な構文を試すものです。 最後の章は特にEpub 3.0で導入された縦書き表示を試したものです。
次のビューアでのテスト表示をお見せします。
WindowsのDigital Edition 1.8.3の表示例です。
|
|
|
|
画像をクリックするとその画像だけを表示できます。
横書き表示は、Epub 2.0対応のDigital Edition 1.7.2(12/07/09現在最新のオフィシャル版)でも、Epub 3.0を一部サポートしているとされるプレビュー版の1.8.3ともに問題ないと思います。 ただし、1.8.3の場合、横書き縦書きに関わらず常にページ送りが右から左(縦組み用)になるのが奇妙でした(後述「ページ送り」参照)。
縦書き表示は1.8.3でOKです。
iPadのiBooksリーダーの表示例です。
|
|
|
|
画像をクリックするとその画像だけを表示できます。
横書き表示は問題ないと思います。
縦書き表示は、上記のDigital Editionの場合とは反対に、縦書き表示であってもページが左からはじまります(詳細は「ページ送り」で後述)。
Epubとは、電子ブック(eBook)の公開規格のひとつで、ファイルの拡張子が.epubのため、この名前があります。 International Digital Publishing Forum(IDPF)という団体が規格を決めています。
Epubの最大の特徴は、PDFとは異なり固定のページ境界がなく、画面やフォントの大きさに応じて、表示のたびにページ境界が変動することです。 このため、画面の小さな携帯機器でも読書が可能になりました。
Epubの仕様を簡単にまとめると(Epub 2.0の場合):
Epub仕様は、ファイルのまとめかた、ページをめくる順序の指定方法、目次の書き方などを定めたもので、中身の文書形式についてはWebのHTMLやCSSをそのまま採用しています。 どのタグを入れて、どの属性を入れないか、などを決めているだけです。 このため、Epub準拠のeBookリーダーのなかには、Epubが規定したサブセットを超えてHTMLやCSSの仕様をサポートするものもあります。
EpubがベースにしているWeb標準の最新仕様(CSS3、HTML5)では、日本を含む極東アジア地域の言語で書かれた文書を、縦書きやルビなど伝統的な体裁で表示できる仕様が追加されました。 これがEpub 3.0で採用されました。
このサンプルでは縦書き、ルビ、縦中横、圏点、禁則を試しました。
Epub 3.0ではつぎのような改訂がありました。
ところで、Epubのファイルが2.0なのか3.0なのかはどこで決まるのでしょうか?
それは、content.opfのpackageタグのversion属性です。
<?xml version="1.0" encoding="UTF-8"?>
<package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/"
...
しかしながら、ビューアによって対応は異なります。
EpubcheckというのはEpubファイルの検証を行うツールです。
http://code.google.com/p/epubcheck/downloads/list
元はAdobeが作成したツールで今はオープンソースで開発が行われています。 iBooksのオーサリングガイドを読むと、iBooksストアにEpubファイルをアップする前にepubcheckを通すことを求めています。
2012/07現在、Epubcheckには対応Epubバージョンの違いにより二つのバージョンがあります。
3.0対応のベータ版を用いてこのサンプルファイルの検証を行いました。
今回、Epubcheckを通すために行った修正は次のとおりです。
このサンプルでは、ひとつを除いてすべてのエラーを除くことができました。そのひとつとは:
[java] Epubcheck Version 3.0b5
[java] Validating against EPUB version 3.0
[java] ERROR: epub/sample.epub/OEBPS/navdoc.html(12,31): attribute "epub:type" not allowed here; expected attribute "accesskey", ...
[java] ERROR: epub/sample.epub/OEBPS/navdoc.html(6,7): assertion failed: Exactly one 'toc' nav element must be present
[java] Check finished with warnings or errors
[java] Java Result: 1
これは、Epub 3.0の目次ファイル(navdoc.html)のnavタグにエラーがあるというもので、原因不明です。
その後、次のページを見つけて、同じ書き方(xmlns:epub宣言を<html>要素から<nav>へ移す)をしてみたらエラーは出なくなりました。
うかつにも最近まで知らなかったことですが、Epub 3.0で縦組みを実現するには、次の二つのレベルの指定が必要です。
はじめにiBooksリーダーの場合です。
2012/07/07現在、iBooksリーダでsample-tate.epubを読み込むと、最初のページが左側から表示されます。
ページをめくると、各章の行が右から左へ流れるように表示されます。
ファイル単位の組方向の指定は効いているが、ブック全体の指定が効いてないための現象に見えます。 iBooksがEpub 3.0のpage-progression-directionをサポートしていないのが原因と思います。
Digital Edition 1.8.3の場合は、反対に横組みでページ送りが反対(右から左)になる現象です。 page-progression-directionのデフォルト値は欧文の横組みに合わせた"ltr"(左から右)と定義されているにも関わらずです。 page-progression-direction属性にわざわざ"ltr"を指定しても結果は同じでした。
いずれも今後改善されることを期待します。
サンプルのZIPファイル(sample-epub.zip)を解凍すると、次のファイルがあります。
epub sample-yoko.epub sample-tate.epub sample/ mimetype META-INF/ container.xml OEBPS/ content.opf toc.ncx navdoc.html title_page.xhtml chap01.xhtml chap02.xhtml chap03.xhtml stylesheet.css images/ koma.png stylesheet-yoko.css stylesheet-tate.css content-yoko.opf content-tate.opf
sample-yoko.epubとsample-tate.epubがEpub形式のZIPファイルです。
横書き表示と縦書き表示用の二つです。
その中身がsampleフォルダ以下に置いてあります。
sampleフォルダのソースファイルをZIPファイルにまとめたものがsample.epubです。
sample-xxxx.epubの拡張子部分を「zip」に付け替えて解凍すれば元のフォルダーの中身が現れます。
次のファイル群はEpub仕様に準じたメタファイルです。
| mimetype | Epub形式のZIPファイルであることをリーダーに知らせるファイル |
| META-INF/container.xml | 次のOPFファイルの場所を示すファイル |
| OEBPS/content.opf | ブック本文を構成するファイル一覧。XHTML、CSS、画像などすべて。ページの表示順(spineという)もここに記述する。 |
| OEBPS/toc.ncx | Epub 2.0対応目次。 |
| OEBPS/navdoc.html | Epub 3.0対応目次。 |
次のファイル群は、Epubブックの本文を構成するファイルで、このままWebでも表示可能です。
title_page.xhtml chap01.xhtml chap02.xhtml chap03.xhtml stylesheet.css koma.png
最後に次の二種類のファイルは縦組みと横組みとで中身の異なるファイルです。
スタイルシートとメタファイルです。
「-yoko」のつくのが横組用、「-tate」がつくのが縦組用で、それぞれを、sampleフォルダー内のstylesheet.cssとcontent.opfにコピーしてZIPしたものがsample-yoko.epubとsample-tate.epubです。
stylesheet-yoko.css stylesheet-tate.css content-yoko.opf content-tate.opf
ソースからEpub形式のZIPファイルを作るには、なんらかのZIPツールを使用します。
ただ、ひとつやっかいな条件があります。
mimetypeがZIPファイルの最初のファイルで、しかも圧縮されてないことが条件です。
三つの方法をご紹介します。
LinuxやMacintoshにはInfo-ZIPというコマンドラインツールが含まれています。 それぞれ、ターミナルを開いて使用します。
WindowsでもInfo-ZIPをインストールすればコマンドプロンプトから使えます。
ZIPコマンドの実行方法です。
cd sample zip -0 -X ../sample.epub mimetype zip -r ../sample.epub * -x mimetype cd ..
ここで、-0オプションは圧縮しない指定、-Xは不要なヘッダを除外する指定、-rは下位フォルダも格納する指定、-xは除外するファイルの指定です。
Windowsでは、フォルダやファイルを選んで右クリックして、[送る|圧縮(ZIP形式)フォルダー]を選ぶとZIPファイルが作れます。
Windows 7で実際に試してみました。Windows XPでも同様と予想します。
まず、最初にmimetypeだけを選び、ZIPファイルを作ります。 続けて、残りのファイルを選び、そのZIPファイルにドロップします。 結果をInfo-ZIPで調べてみます。 「unzip -v」でZIPファイルの中身を見ることができます。
c:\Temp\sample>unzip -v test.zip
Archive: test.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
20 Stored 20 0% 2012/07/05 21:00 2cab616f mimetype
241 Defl:N 163 32% 2012/07/05 21:00 d3c8670a META-INF/container.xml
2006 Defl:N 1156 42% 2012/07/05 23:12 3f5fefff OEBPS/chap01.xhtml
2329 Defl:N 1281 45% 2012/07/05 23:11 7a375863 OEBPS/chap02.xhtml
1938 Defl:N 1070 45% 2012/07/06 01:20 4e103098 OEBPS/chap03.xhtml
1734 Defl:N 749 57% 2012/07/06 01:59 696c89c3 OEBPS/content.opf
0 Stored 0 0% 2012/07/12 05:24 00000000 OEBPS/images/
1914 Defl:N 1197 38% 2012/07/05 21:00 2760b6de OEBPS/images/koma.png
1002 Defl:N 567 43% 2012/07/06 01:59 b8cdba9a OEBPS/navdoc.html
1078 Defl:N 443 59% 2012/07/06 02:00 8325797e OEBPS/stylesheet.css
752 Defl:N 461 39% 2012/07/06 02:00 f7272379 OEBPS/title_page.xhtml
1187 Defl:N 482 59% 2012/07/06 02:00 9cf9d99c OEBPS/toc.ncx
-------- ------- --- -------
14201 7589 47% 12 files
偶然かもしれませんが、mimetypeが最初のファイルで、圧縮されていないことがわかります。
最後に拡張子を「epub」に変えます。 At last, change the extention to "epub."
最近わたしはドキュメントの取扱いをプログラマ用の開発環境(Eclipse)を使って行っています。 Eclipseでは、Antという自動化ツール(昔からあるUNIXのmakeのようなもの)が使え、EpubコンテンツのZIP化やその他の一括変換処理が簡単に行えます。
私が使用しているEpubファイル作成のAntタスクの例です。
<target name="zip-epub" description="create zipped epub file">
<delete file="${epub.file}"/>
<!-- merge non-compressed mimetype and rest of the files in epub folder -->
<zip destfile="${epub.dir}/mimetype.zip" basedir="${epub.dir}" compress="false" includes="mimetype" />
<zip destfile="${epub.dir}/others.zip" basedir="${epub.dir}" level="9" compress="true" includes="OEBPS/** META-INF/**" />
<zip destfile="${epub.file}" update="true" keepcompression="true" encoding="UTF-8">
<zipfileset src="${epub.dir}/mimetype.zip" />
<zipfileset src="${epub.dir}/others.zip" />
</zip>
<!-- delete temp files -->
<delete file="${epub.dir}/mimetype.zip"/>
<delete file="${epub.dir}/others.zip"/>
</target>
EclipseはWindowsでも、Mactintoshでも、Linuxでも全く同じように使えます。
このサイトの関連リンクです。
横浜工文社の関連ビジネスです。
このEpubサンプルに関すること、広くテキスト・XMLベースの文書作成、電子出版など、お問い合わせ、コメント、お困りの点のご相談など、歓迎いたします。
提供: 横浜工文社
作成: 2009/09/18(初版)
更新: 2012/04/27(改訂版)
更新: 2012/07/05(第三版)
更新: 2013/01/03 NAVDOCのepub:typeエラー解消
公開するサンプルは試作品で、完全なものではありません。
この解説書とサンプルの転載はご遠慮ください。
リンク張りやお問合せやコメントを歓迎いたします。