日本語Epubブックサンプル - 横浜工文社

ホーム > Epubサンプル | English



横浜工文社

連絡先



第三版 日本語Epubブックサンプル

はじめに

日本語の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で導入された縦書き表示を試したものです。

次のビューアでのテスト表示をお見せします。

Digital Edition

WindowsのDigital Edition 1.8.3の表示例です。

Title page with Digital Edition on Windows Chapter 1 with Digital Edition on Windows
Chapter 2 with TOC on left with Digital Edition on Windows Chapter 3 with iBooks on iPad

画像をクリックするとその画像だけを表示できます。

横書き表示は、Epub 2.0対応のDigital Edition 1.7.2(12/07/09現在最新のオフィシャル版)でも、Epub 3.0を一部サポートしているとされるプレビュー版の1.8.3ともに問題ないと思います。 ただし、1.8.3の場合、横書き縦書きに関わらず常にページ送りが右から左(縦組み用)になるのが奇妙でした(後述「ページ送り」参照)。

縦書き表示は1.8.3でOKです。

iBooks

iPadのiBooksリーダーの表示例です。

画像をクリックするとその画像だけを表示できます。

横書き表示は問題ないと思います。

縦書き表示は、上記のDigital Editionの場合とは反対に、縦書き表示であってもページが左からはじまります(詳細は「ページ送り」で後述)。

Epubについて

Epubとは、電子ブック(eBook)の公開規格のひとつで、ファイルの拡張子が.epubのため、この名前があります。 International Digital Publishing Forum(IDPF)という団体が規格を決めています。

Epubの最大の特徴は、PDFとは異なり固定のページ境界がなく、画面やフォントの大きさに応じて、表示のたびにページ境界が変動することです。 このため、画面の小さな携帯機器でも読書が可能になりました。

Epubの仕様を簡単にまとめると(Epub 2.0の場合):

Epub仕様は、ファイルのまとめかた、ページをめくる順序の指定方法、目次の書き方などを定めたもので、中身の文書形式についてはWebのHTMLやCSSをそのまま採用しています。 どのタグを入れて、どの属性を入れないか、などを決めているだけです。 このため、Epub準拠のeBookリーダーのなかには、Epubが規定したサブセットを超えてHTMLやCSSの仕様をサポートするものもあります。

Epub 3.0

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/"
       ...

しかしながら、ビューアによって対応は異なります。

Epubの検証

EpubcheckというのはEpubファイルの検証を行うツールです。

http://code.google.com/p/epubcheck/downloads/list

元はAdobeが作成したツールで今はオープンソースで開発が行われています。 iBooksのオーサリングガイドを読むと、iBooksストアにEpubファイルをアップする前にepubcheckを通すことを求めています。

2012/07現在、Epubcheckには対応Epubバージョンの違いにより二つのバージョンがあります。

Epubcheck 1.2
Epub 2.0対応の最新安定版
Epubcheck 3.0b5
Epub 3.0仕様にも対応したベータ版

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 - 最初の一歩

ページ送りの方向

うかつにも最近まで知らなかったことですが、Epub 3.0で縦組みを実現するには、次の二つのレベルの指定が必要です。

ブック全体のページの進行方向の指定
content.opfのspine要素のpage-progression-direction属性に"rtl"つまり右から左を指定
各ファイルやファイルの一部の行の進行方向の指定
CSSのwriting-mode属性にvertical-rlつまり行が右から左へ流れることを指定

はじめに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.epubsample-tate.epubがEpub形式のZIPファイルです。 横書き表示と縦書き表示用の二つです。 その中身がsampleフォルダ以下に置いてあります。 sampleフォルダのソースファイルをZIPファイルにまとめたものがsample.epubです。 sample-xxxx.epubの拡張子部分を「zip」に付け替えて解凍すれば元のフォルダーの中身が現れます。

次のファイル群はEpub仕様に準じたメタファイルです。

mimetypeEpub形式のZIPファイルであることをリーダーに知らせるファイル
META-INF/container.xml次のOPFファイルの場所を示すファイル
OEBPS/content.opfブック本文を構成するファイル一覧。XHTML、CSS、画像などすべて。ページの表示順(spineという)もここに記述する。
OEBPS/toc.ncxEpub 2.0対応目次。
OEBPS/navdoc.htmlEpub 3.0対応目次。

次のファイル群は、Epubブックの本文を構成するファイルで、このままWebでも表示可能です。

	title_page.xhtml
	chap01.xhtml
	chap02.xhtml
	chap03.xhtml
	stylesheet.css
	koma.png

最後に次の二種類のファイルは縦組みと横組みとで中身の異なるファイルです。 スタイルシートとメタファイルです。 「-yoko」のつくのが横組用、「-tate」がつくのが縦組用で、それぞれを、sampleフォルダー内のstylesheet.csscontent.opfにコピーしてZIPしたものがsample-yoko.epubsample-tate.epubです。

	stylesheet-yoko.css
	stylesheet-tate.css
	content-yoko.opf
	content-tate.opf

Epubファイルの作成

ソースからEpub形式のZIPファイルを作るには、なんらかのZIPツールを使用します。

ただ、ひとつやっかいな条件があります。 mimetypeがZIPファイルの最初のファイルで、しかも圧縮されてないことが条件です。

三つの方法をご紹介します。

コマンドラインツール

LinuxやMacintoshにはInfo-ZIPというコマンドラインツールが含まれています。 それぞれ、ターミナルを開いて使用します。

WindowsでもInfo-ZIPをインストールすればコマンドプロンプトから使えます。

Info-ZIP

ZIPコマンドの実行方法です。

	cd sample
	zip -0 -X ../sample.epub mimetype
	zip -r ../sample.epub * -x mimetype
	cd ..

ここで、-0オプションは圧縮しない指定、-Xは不要なヘッダを除外する指定、-rは下位フォルダも格納する指定、-xは除外するファイルの指定です。

Windows内蔵ZIPツール

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."

Antタスク

最近わたしはドキュメントの取扱いをプログラマ用の開発環境(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でも全く同じように使えます。

参考: Eclipse環境で作るオーサリング環境

参考

このサイトの関連リンクです。

横浜工文社の関連ビジネスです。

このEpubサンプルに関すること、広くテキスト・XMLベースの文書作成、電子出版など、お問い合わせ、コメント、お困りの点のご相談など、歓迎いたします。

Contact


Kobu.Com Logo

提供: 横浜工文社
作成: 2009/09/18(初版)
更新: 2012/04/27(改訂版)
更新: 2012/07/05(第三版)
更新: 2013/01/03 NAVDOCのepub:typeエラー解消

公開するサンプルは試作品で、完全なものではありません。
この解説書とサンプルの転載はご遠慮ください。
リンク張りやお問合せやコメントを歓迎いたします。