techdo.mediado.jp
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" xmllang="ja">
<metadata xmlnsdc="http://purl.org/dc/elements/1.1/">
<dcidentifier id="idName">urn:uuid:0fa99cb8-f735-4994-91fd-6fb3667582d0</dcidentifier>
<dcpublisher>メディアドゥ </dcpublisher>
<dctitle>はじめての電子書籍</dctitle>
<dclanguage>ja</dclanguage>
<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" xmlnsepub="http://www.idpf.org/2007/ops">
<head>
<title>目次</title>
</head>
<body>
<nav epubtype="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" xmlnsepub="http://www.idpf.org/2007/ops">
<head>
<title>本文</title>
</head>
<body>
手作り電子書籍です。
</body>
</html>
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フォーマットに興味を持っていただければ幸いです。