個人でも可能な電子出版 誰でもできる電子出版 第二十五回

写真拡大 (全2枚)

■はじめに
前回は「EPUB3の中身を見てみよう」ということで、でんでんコンバーターで作成したEPUBファイルの拡張子を.zipに変更して解凍しました。

解凍したデータの内部構成を軽く確認し、その中の拡張子「.opf」がついたファイル、パッケージドキュメントに注目してみました。

パッケージドキュメントはEPUBの書籍としての情報を定義するためのファイルで、このファイルがなければ、EPUBファイルはHTMLファイルの寄せ集めという印象が強くなってしまいます。

さて、今回はこのパッケージドキュメントの中を少し見てみようと思います。

■パッケージドキュメント内のタグ構成
パッケージドキュメントはテキストベースのXMLファイルなので、Windowsの「メモ帳」やMacの「テキストエディット」といった一般的なテキストエディターで開けます。

次の画像は以前でんでんコンバーターで作成した「おおかみと七ひきのこどもやぎ」のEPUBファイルに含まれるパッケージドキュメント「content.opf」をテキストエディターで開き、インデントを追加してドキュメントの入れ子構造を分かりやすくしたものです。

XMLはHTMLの親戚のような言語なので、書式はHTMLとよく似ていますが、そこで使われているタグが独自のものとなっています。以下、大まかな構成を紹介します。

パッケージドキュメントは全体がpackageタグで囲まれていて、その中に3つの必須要素が含まれます。

1つめは「metadata要素」です。metadata要素では書籍タイトル、著者名、出版社、出版日、更新日、使用言語、権利表記、概要など、書籍に関するさまざまな情報を定義できます。

また、書籍固有のIDも定義する必要があります。EPUB仕様で必須の項目とされているものは、書籍ID、書籍タイトル、使用言語、更新日となっています。

それらを定義するタグは次の通りです。

・書籍ID:dc:identifierタグ
・書籍タイトル:dc:titleタグ
・使用言語:dc:languageタグ
・更新日:metaタグ+property属性の値「dcterms:modified」

固定レイアウト型の電子書籍を作成する場合などは、その書籍が固定レイアウト型であることを示す情報や、関連情報もmetadata要素内で指定します。固定レイアウト関連も、機会があれば紹介したいところです。

2つめは「manifest要素」です。ここでは、コンテンツを構成するファイル(XHTMLファイル、画像ファイル、CSSファイルなど)を「item要素」でリストアップします。

item要素ではそのファイルのメディアタイプ(MIMEタイプ)やEPUBファイル内でのIDも指定します。特殊な用途を持ったファイルに「properties属性」で用途を指定します。例えば目次用のファイルはproperties属性の値に「nav」を指定します。

3つめは「spine要素」です。ここではコンテンツ本編を構成するXHTMLファイルの表示順を「itemref要素」で指定します。

itemref要素ではidref属性でXHTMLファイルを指定しますが、ファイル名ではなくmanifest要素内のitem要素で指定したidを使います。

その他、spine要素のpage-progression-direction属性でページの開き方向も指定できます。

パッケージドキュメントで使われるXMLタグはIDPFが策定したEPUB仕様で決められていますが、HTMLと比べて日本語の資料が少なくとっつきにくい状況です。

シンプルなテキストベースの電子書籍をでんでんコンバーターなどのツールを使って作成する場合には、そのツールが生成したパッケージドキュメントを直接編集することはほとんどないでしょう。

それでも、パッケージドキュメントの概要は知っておくに越したことはありません。また、制作ツールがあまり無い固定レイアウト型の電子書籍を制作する場合には、パッケージドキュメントを直接編集する機会は少なからず出てくるでしょう。

■最後に
この電子書籍ブログは隔週で掲載していますが、私の記憶では次回から2年目に入ります。

より電子書籍のラインナップが増加すると共に、電子書籍ストアの淘汰も進んでくることでしょう。技術的な内容だけでなく情報系のお話しも扱っていきたいと考えています。

下記セミナーに登壇させていただきます。ぜひご参加ください!

『電子書籍「もうひとつの“イプシロン・ザ・ロケット”」企画・制作・リリースまでの一部始終〜ソニー・ミュージックコミュニケーションズ初の電子出版の軌跡〜』

■著者プロフィール
林 拓也(はやし たくや)
テクニカルライター/トレーニングインストラクター/オーサリングエンジニア
Twitter:@HapHands
Facebook:https://www.facebook.com/takuya.hayashi

ITライフハック
■ITライフハック Twitter
■ITライフハック Facebook