メディアドゥ でリードエンジニアを担当している沓名です。
今回はEPUBファイルを手で作る方法を通して、EPUBフォーマットについて解説します。
EPUBとは
W3Cが仕様策定を行なっている国際的な電子書籍のフォーマットです。元々はEPUB推進団体IDPFで仕様の策定が行われていましたが、2017年2月1日にW3C と正式統合*1されました。
EPUBファイルフォーマットを理解する
EPUBは一定のルールに従った構造をもつ、Zipアーカイブファイルです。EPUBファイル構造を簡単に絵にすると、次の通りとなります。今回は、EPUBバージョン3.0をベースにしています。
ファイルの配置位置、名称まで仕様で固定されたものと、任意でファイル名、配置位置を変更できるものとの2つに分かれます。一つずつ、その役割について見ていきましょう。
mimetype
ファイルのメディアタイプを指定するためのファイルです。電子書籍フォルダの直下に配置します。ファイル名は固定です。ファイル内容も以下の内容を記載します。
application/epub+zip
META-INF/container.xml
「container.xml」は名称固定のファイルです。META-INFフォルダ配下に配置することがルール付けされています。
<?xml version="1.0" ?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OEBPS/package.opf" media-type="application/oebps-package+xml" /> </rootfiles> </container>
rootfileタグにて、パッケージドキュメントのファイルパスを指定します。 ここでは、OEBPSフォルダ配下にある、「package.opf」ファイルをパッケージドキュメントとして指定します。
パッケージドキュメント
電子書籍そのものの情報を管理するためのファイルです。ファイルの配置先、名前は任意ですが、上記「container.xml」ファイルにてそのパスを指定する必要があります。
<?xml version="1.0" encoding="utf-8"?> <package unique-identifier="idName" version="3.0" xmlns="http://www.idpf.org/2007/opf" xml:lang="ja"> <!-- 書籍情報 --> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:identifier id="idName">urn:uuid:0fa99cb8-f735-4994-91fd-6fb3667582d0</dc:identifier> <dc:publisher>メディアドゥ </dc:publisher> <dc:title>はじめての電子書籍</dc:title> <dc:language>ja</dc:language> <meta property="dcterms:modified">2018-09-19T13:50:40Z</meta> </metadata> <manifest> <item id="nav" href="toc.xhtml" media-type="application/xhtml+xml" properties="nav" /> <item id="main_xhtml" href="main.xhtml" media-type="application/xhtml+xml" /> </manifest> <spine page-progression-direction="default"> <itemref idref="nav" /> <itemref idref="main_xhtml" /> </spine> </package>
ナビゲーションドキュメント(目次)
ファイル名は任意で決められます。どのファイルがナビゲーションファイルかは上記パッケージドキュメントにて指定します。ここでは「toc.xhtml」としています。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops"> <head> <title>目次</title> </head> <body> <nav epub:type="toc"> <h1>目次</h1> <ol> <li><a href="main.xhtml">最初のページ</a></li> </ol> </nav> </body> </html>
書籍内容
書籍内容そのものを保持するファイルです。ファイル名は任意です。また、複数ファイルに分割することも可能です。サイズが大きくなるようなケースでは、複数ファイルに分割することが推奨されています。ファイルの表示順序については、パッケージドキュメント内にて定義できます。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops"> <head> <title>本文</title> </head> <body> 手作り電子書籍です。 </body> </html>
EPUBを手作りしてみる
EPUBファイルの構造を理解したところで、上記の構造に合わせてそれぞれのファイルを配置します。あとは、そのファイル一式をZipアーカイブするだけとなります。
ただし、その前にもう一つだけ知っておかなければならないEPUBフォーマットの仕様として、「Zipファイルの先頭ファイルは非圧縮の状態のmimetypeファイルを含んでいる必要がある」 というものがあります。
そのため、Zip圧縮する際は以下の手順となります。
① mimetypeを圧縮率0 (非圧縮)でZipファイルにエントリ。
# zip -0 sample.epub mimetype
② その他ファイルを圧縮率最高(9)でZipファイルにエントリ。
# zip -9r sample.epub META-INF OEBPS
実際に出来上がったEPUBファイルをEPUBビューワーで開けるか確認しましょう。 次のように開ければ、無事にEPUBファイル作成完了です。
まとめ
今回はEPUBファイルの作成方法を通じて、簡単なEPUBフォーマットの説明を行いました。少しでもEPUBフォーマットに興味を持っていただければ幸いです。