先に知っておきたいこと
拡張子は.opf、名前は決まっていない
パッケージ文書の拡張子は.opfが一般的です。ファイル名をcontent.opfにするのも慣例で、場所は、META-INF/container.xmlのfull-pathで指します。
最小の例
仕様の考え方に沿った、最小の例です。この記事のために新しく書いたもので、実際に使うときは、EPUBCheckなどで確認してください。
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf"
version="3.0" unique-identifier="book-id" xml:lang="ja">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:identifier id="book-id">urn:uuid:12345678-1234-1234-1234-123456789abc</dc:identifier>
<dc:title>本の題名</dc:title>
<dc:language>ja</dc:language>
<meta property="dcterms:modified">2026-10-11T00:00:00Z</meta>
</metadata>
<manifest>
<item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
<item id="ch1" href="chapter1.xhtml" media-type="application/xhtml+xml"/>
<item id="css" href="styles/style.css" media-type="text/css"/>
</manifest>
<spine>
<itemref idref="ch1"/>
</spine>
</package>
package要素
パッケージ文書のいちばん外側の要素です。
| 属性 | 内容 |
|---|---|
version | 仕様は、3.0と指定することを定めている(EPUB 3.3でも同じ) |
unique-identifier | 本の識別子(dc:identifier)のidを指す |
xml:lang | 言語(任意)。値は、正しい言語タグ(BCP 47)にする |
prefix | 標準以外の語彙を使うときの宣言(任意) |
dir | 文字の方向(任意) |
metadata要素
本の情報を書きます。仕様で求められている項目は、次のとおりです。
| 項目 | 内容 |
|---|---|
dc:identifier | 本の識別子。仕様は、出版物ごとに一意であることを求めている。idを付け、packageのunique-identifierが指す |
dc:title | 題名 |
dc:language | 言語。仕様は、BCP 47の言語タグに従うことを求めている(日本語はja) |
dcterms:modified | 最終更新日時。YYYY-MM-DDThh:mm:ssZの形式(UTC) |
dc:creator(著者)、dc:publisher(出版者)、dc:date(日付)は、任意の項目です。
manifest要素
本に含まれるリソース(ファイル)の一覧です。EPUB 3.3の仕様は、META-INFの中身とmimetypeを除くすべてのリソースを、manifestに載せることを定めています。
item要素の主な属性です。
| 属性 | 内容 |
|---|---|
id | manifest内で一意の識別子。spineなどから参照される |
href | ファイルの場所(パッケージ文書からの相対パス) |
media-type | ファイルの種類。XHTMLはapplication/xhtml+xml、CSSはtext/css |
properties | 特別な役割を示す(任意) |
fallback | 代替リソースの指定(任意) |
properties属性の主な値
仕様の付録に定義されている値です。
| 値 | 内容 |
|---|---|
nav | ナビゲーション文書であることを示す。出版物に1つ |
cover-image | 表紙画像であることを示す。設定は推奨されるが任意。付ける場合は出版物に1つ |
scripted | スクリプトを含む文書 |
svg | SVGを含む文書 |
mathml | MathMLを含む文書 |
remote-resources | 外部のリソースを参照する文書 |
spine要素
本文を読む順番を、itemref要素を並べて書きます。
<spine page-progression-direction="rtl">
<itemref idref="ch1"/>
<itemref idref="ch2" linear="no"/>
</spine>
| 要素・属性 | 内容 |
|---|---|
itemrefのidref | manifestのitemのidを指す |
itemrefのlinear | yes(既定)かno。読む順番に含めるか |
itemrefのproperties | 見開きの左右の指定など(page-spread-left、page-spread-rightが仕様の語彙にある) |
spineのpage-progression-direction | ページをめくる方向。ltr・rtl・default。日本語の縦書きの右綴じはrtl |
toc属性は、EPUB 2のNCXを指す旧来の属性として、仕様では扱われています。
書くときの注意点
- idを一意にする: manifestの
idは、重複しないように付ける - manifestに漏れなく載せる: 画像・CSS・フォントも、manifestに載せる
- hrefのパスを合わせる: ファイルの場所と、大文字・小文字も含めて一致させる
- dcterms:modifiedを入れる: 仕様で求められている項目なので、入れ忘れない
- 最後にEPUBCheckで確認する: 構文や参照のミスを見つけられる
結論:4つの要素の関係を押さえる
| 要素 | 役割 | 仕様で求められる主な内容 |
|---|---|---|
| package | 全体 | version="3.0"、unique-identifier |
| metadata | 本の情報 | dc:identifier・dc:title・dc:language・dcterms:modified |
| manifest | ファイル一覧 | 各itemのid・href・media-type |
| spine | 読む順番 | itemrefのidref |
よくある質問
表紙画像は、どう指定しますか?
EPUB 3.3の仕様では、表紙画像がある場合、そのitemにproperties="cover-image"を付けることが推奨されています(任意)。付ける場合は、出版物に1つです。KDPで出す本の表紙画像の条件は、EPUB変換で崩れる原因と対策6つ|注意点まとめで触れています。
右綴じ(縦書き)にするには?
spine要素に、page-progression-direction="rtl"を指定します。縦書きの設定の全体は、縦書きEPUBのCSS|ルビ・縦中横・傍点の書き方にまとめています。
手で書くのは大変です。
通常は、変換ツールや編集ソフトが書き出します。仕組みを知っておくと、書き出されたファイルを確認するときに役立ちます。