読者です 読者をやめる 読者になる 読者になる

本好きに送る「電子書籍のつくり方」講座

誰でも 簡単 手作り 電子書籍

電子書籍づくり実践(書誌情報を書く)

EPUBテンプレートを元に、ここまで電子書籍として制作を進めてきたフォルダの中に、「standard.opf」というファイルがあります。今回はこのファイルの構造を理解しながら、内容を書き替えていきます。

.opfは「書誌情報のファイル」

この.opfファイルには「書誌情報(本の属性情報)」が記述されており、電子書籍を「本」として成立させているパーツのひとつです。

まずは最初に、opfファイル全体の構造について説明していきます。

「standard.opf」をテキストエディタで開いていただき、その内容と下の画像と見比べながら全体の構造ルールを押さえておきましょう。

opfファイルの構成

それでは上から順に見ていきましょう。

宣言文の中身

このopfファイルにおける「宣言文」は

<?xml version="1.0" encoding="UTF-8"?>

になります。

これはいじる必要はありません。

metadataの中身

次にmetadata要素の中身を見ていきます。

その1:作品名

最初に入力するのは「作品名」です。

テンプレートは下記の内容になっています。

<!-- 作品名 -->
<dc:title id="title">作品名1</dc:title>
<meta refines="#title" property="file-as">セイレツヨウサクヒンメイカナ01</meta>

これの「作品名」と「作品名のカタカナ表記」を差し替えます。

今回作業を進めている『こころ』の場合、下のようになります。

<!-- 作品名 -->
<dc:title id="title">こころ</dc:title>
<meta refines="#title" property="file-as">ココロ</meta>

ちなみに一行目の

<!-- 作品名 -->

の表記は「コメント」と呼ばれるもので、コンピュータのソースコードに書き込まれた「覚え書き」です。

そのため、この部分はブラウザで表示されるわけでも、何かの動作に関与するわけでもありません。ここでは「<!-- 作品名 -->」と日本語で書いておくことによって、「ああここに作品名をいれるんだな」とコードを読んだ人がすぐに理解できるようにするための記述です。

その2:著者名

次に入力するのは著者名です。

テンプレートは下記の内容になっています。

<!-- 著者名 -->
<dc:creator id="creator01">著作者名1</dc:creator>
<meta refines="#creator01" property="role" scheme="marc:relators">aut</meta>
<meta refines="#creator01" property="file-as">セイレツヨウチョサクシャメイカナ01</meta>
<meta refines="#creator01" property="display-seq">1</meta>

 

<dc:creator id="creator02">著作者名2</dc:creator>
<meta refines="#creator02" property="role" scheme="marc:relators">aut</meta>
<meta refines="#creator02" property="file-as">セイレツヨウチョサクシャメイカナ02</meta>
<meta refines="#creator02" property="display-seq">2</meta>

上にある通り、テンプレートでは2名分の入力ができるようになっています。これは例えば「絵」と「文」が別々の作者であるような場合に、それぞれの名前をいれるために用意されています。

今回は著者は1名ですので「著者名2」の部分は丸々削除して、

<!-- 著者名 -->
<dc:creator id="creator01">夏目漱石</dc:creator>
<meta refines="#creator01" property="role" scheme="marc:relators">aut</meta>
<meta refines="#creator01" property="file-as">ナツメソウセキ</meta>
<meta refines="#creator01" property="display-seq">1</meta>

とします。

その3:出版社名

次に入力するのは出版社名なのですが、個人が趣味で作った電子書籍の場合は特に入れる必要がないので、この要素自体を削除してしまってもいいです。今回『こころ』のデータは青空文庫からお借りしているので、

<!-- 出版社名 -->

<dc:publisher id="publisher">青空文庫</dc:publisher>

<meta refines="#publisher" property="file-as">アオゾラブンコ</meta>

としておきます。

その4:言語

ここはテンプレートで既に「ja」と、日本語表記が設定済みなのでこのままで良いです。

その5:ファイルid

販売用の電子書籍にはここにユニークなid(英数字の組み合わせ)を振る必要があるのですが、個人が趣味で作る電子書籍の場合、その内容にこだわる必要はないと思います。テンプレートのデータに既にそれらしい番号が振られているのでそのままにしておいて良いと思います。

その6:更新日

電子書籍をつくった日(最終的に内容を更新した日時)を書き込みます。個人で作る電子書籍の場合はあまり厳密に入力する必要はありませんが、数値の表記部分については必ず「2桁」で書くのが決まりです。
たとえば更新日が2月20日の0時ちょうどなら、記述は「2014-02-20T00:00:00Z」となります。十の位に「0」を入れることを忘れずに。

その7:etc

ここはこのままでOKです。ここに記述されている

<meta property="ebpaj:guide-version">1.1.1</meta>

は「電書協制作ガイドver1.1.1に則った構成になっている」という旨の表記です。

これでmetadata要素の記述は完了です。

manifestの中身

続いてmanifest要素の中身を見ていきます。

manifest要素では、EPUBを構成するファイル類が、

  • どんな役割りで
  • どの場所に
  • どんな名前で

存在しているのかについて、その情報が記述してあります。

その1:navigation

ここには「論理目次ファイル」の情報が記述されます。今回の作業では論理目次(navigation-documents.xhtml)の属性情報*1は変更してないので、ここはこのままでOKです。

その2:style

ここにはスタイルを制御する「CSSファイル」の情報が記述されます。今回の作業ではCSSファイルの属性情報も変更してないので、ここも変更なしでOKです。

その3:image

ここには電子書籍で表示する「画像ファイル」の情報を記述します。

今回『こころ』では

cover.jpg

という画像ファイルを使用しているので、このファイルの情報を記述します。

いま上に「記述します」と書きましたが、実は既にテンプレートにおいて「表示画像としてcover.jpgを使う」という記述はされているので、今回行うのは「表紙以外の画像情報についての記述の削除」です。

現在テンプレートは

<!-- image -->

<item media-type="image/jpeg" id="cover"      href="image/cover.jpg" properties="cover-image"/>

<item media-type="image/png"  id="logo-bunko" href="image/logo-bunko.png"/>

<item media-type="image/jpeg" id="kuchie-001" href="image/kuchie-001.jpg"/>

<item media-type="image/jpeg" id="img-001"    href="image/img-001.jpg"/>

<item media-type="image/jpeg" id="ad-001"     href="image/ad-001.jpg"/>

となっていますが、表紙画像の記述以外を削除し、

<!-- image -->

<item media-type="image/jpeg" id="cover"      href="image/cover.jpg" properties="cover-image"/>

となればOKです。

補足:opfファイルの「情報記述のルール」

表紙以外に画像を使うこともありますので、その際は下記のルールに則って、画像ファイルの情報を記述してください。

また画像以外の「manifestの中身」(navigation、style、xhtml)についても、書き替えが必要な場合は同じルールでファイル情報を記述して下さい。

opfファイルの情報記述のルール

上にある通り、「薄赤」のマークをした部分二カ所を、ファイル名に変更します。

例えば
本文で「ph01.jpg」という画像を表示させてい場合、opfファイルでの記述は

<item media-type="image/jpeg" id="ph01" href="image/ph01.jpg"/>

となります。

なお、行末に「properties=”〜”」とある記述は、特定の役割りのあるファイル(例えば「properties="cover-image"」なら、それは表紙画像のファイル)の場合に付与されます。

その4:xhtml

ここには電子書籍で表示する「ページファイル」の情報を記述します。

今回『こころ』では

  • p-cover.xhtml(表紙用)
  • p-titlepage.xhtml(本扉用)
  • p-toc.xhtml(本文目次用)
  • p-001.xhtml(本文用)
  • p-002.xhtml(本文用)
  • p-003.xhtml(本文用)
  • p-colophon.xhtml(奥付用)

というページファイルを使用しているので、このファイルの情報が記述する必要があります。

記述のルールは先に説明した「画像ファイル」の場合と同じで、各行の該当する二カ所を、ページファイル名に変更します。

<item media-type="application/xhtml+xml" id="p-cover" href="xhtml/p-cover.xhtml"/>

<item media-type="application/xhtml+xml" id="p-titlepage" href="xhtml/p-titlepage.xhtml"/>

<item media-type="application/xhtml+xml" id="p-toc" href="xhtml/p-toc.xhtml"/>

<item media-type="application/xhtml+xml" id="p-001" href="xhtml/p-001.xhtml"/>

<item media-type="application/xhtml+xml" id="p-002" href="xhtml/p-002.xhtml"/>

<item media-type="application/xhtml+xml" id="p-003" href="xhtml/p-003.xhtml"/>

<item media-type="application/xhtml+xml" id="p-colophon" href="xhtml/p-colophon.xhtml"/>

このようになればOKです。

これでmanifest要素の記述は完了です。

spineの中身

続いてspine要素の中身を見ていきます。

spine要素では、ページファイルが、どんな順番で並ぶのかの情報が記述してあります。

まず、現在制作中の『こころ』で記述すべきspine要素を下に記します。

<spine page-progression-direction="rtl">

<itemref linear="yes" idref="p-cover"       properties="page-spread-left"/>

<itemref linear="yes" idref="p-titlepage"   properties="page-spread-left"/>

<itemref linear="yes" idref="p-toc"         properties="page-spread-left"/>

<itemref linear="yes" idref="p-001"         properties="page-spread-left"/>

<itemref linear="yes" idref="p-002"         properties="page-spread-left"/>

<itemref linear="yes" idref="p-003"         properties="page-spread-left"/>

<itemref linear="yes" idref="p-colophon"    properties="page-spread-left"/>

</spine>

このように記述されていればOKです。

それではその記述内容の意味をお伝えします。

rtl と ltr
一行目の「<spine 」の後ろに記述されているのは「ページをどちらに進めていくか」の定義です。現在の行末にある、「rtl」は「right to left」の意味で「ページが右から左に進む」を表します。

右から左にページが進むということは、その表記は自ずと「縦書」となります。その逆に横書きの電子書籍の場合は、ここを「ltr(left to right:左から右)」とします。

ltrとrtlの考え方

二行目以降は、行内の「idref=」の後ろにページファイル名を記述します。 ここで指定する「上から下への並び順」が、電子書籍データとして「表示される順番」になります。

spine要素内の記述ルール

また、行末にある「properties="page-spread-〜」は、各ファイルが「左右どちらのページからスタートするか」についての記述(見開き表示時)で、

properties="page-spread- left "
の場合は「左側」から
properties="page-spread-right"
の場合は「右側」から

ページがスタートします。*2

properties="page-spread-left" の場合

properties=

properties="page-spread-right" の場合

properties=

なお、この記述は省略することができ、その場合ページファイルのスタートは「なりゆきで前詰め」となります。

以上で.opfへの書誌情報の記述は完了です。

なお、EPUBのopfの記述内容について、より詳しいルールを知りたい方は下記を参照してみてください。

Package Document の定義(EPUB Publications 3.0.1 日本語訳 内)
http://blog.imagedrive.jp/epub/spec/epub301/epub301-publications.xhtml#sec-package-def

今日のまとめ

opfファイルとは、書誌情報が書き込まれたファイルです。

その内容は

package要素という大枠の中に

  • metadata
  • manifest
  • spine

という三つの要素が記述されている。

その内容は

  • その書籍の属性情報
  • EPUB内で使われているファイルの属性情報
  • ページファイルの並び順

が記述されている。

次回は
電子書籍づくり実践(圧縮とエラー確認)についてお話します。

*1:属性情報とは「ファイル名」や「ファイルの置いてある場所」のことです。

*2:現時点(2014年3月)ではこの記述に対応できるリーディングシステムの数は多くありません。リーディングシステムが対応していない場合、ページファイルのスタートは「なりゆき」になります。