content.opfの書き方|タグと属性の意味を整理

package・metadata・manifest・spineの役割と、主な属性を仕様で確認

分類:EPUBの基礎 最終更新日:2026年10月11日 読む目安:約5分

この記事のポイント

  • パッケージ文書は、metadata(本の情報)・manifest(ファイル一覧)・spine(読む順番)で構成される
  • metadataには、dc:identifier・dc:title・dc:languageと、最終更新日(dcterms:modified)が仕様で求められている
  • packageのversionは3.0と指定する。manifestのidは一意にし、spineはmanifestのidで参照する

EPUBの中で、いちばん重要なファイルが、パッケージ文書(content.opf)です。リーダーは、このファイルを読んで、本の情報、含まれるファイル、読む順番を知ります。

この記事では、パッケージ文書の書き方を、EPUB 3.3の仕様で確認できた範囲で整理します。ファイル全体の構成は、EPUBファイルの中身と構成|フォルダとファイルの役割を参照してください。

先に知っておきたいこと

拡張子は.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要素の主な属性です。

属性内容
idmanifest内で一意の識別子。spineなどから参照される
hrefファイルの場所(パッケージ文書からの相対パス)
media-typeファイルの種類。XHTMLはapplication/xhtml+xml、CSSはtext/css
properties特別な役割を示す(任意)
fallback代替リソースの指定(任意)

properties属性の主な値

仕様の付録に定義されている値です。

値内容
navナビゲーション文書であることを示す。出版物に1つ
cover-image表紙画像であることを示す。設定は推奨されるが任意。付ける場合は出版物に1つ
scriptedスクリプトを含む文書
svgSVGを含む文書
mathmlMathMLを含む文書
remote-resources外部のリソースを参照する文書

spine要素

本文を読む順番を、itemref要素を並べて書きます。

<spine page-progression-direction="rtl">
  <itemref idref="ch1"/>
  <itemref idref="ch2" linear="no"/>
</spine>
要素・属性内容
itemrefのidrefmanifestのitemのidを指す
itemrefのlinearyes(既定)かno。読む順番に含めるか
itemrefのproperties見開きの左右の指定など(page-spread-left、page-spread-rightが仕様の語彙にある)
spineのpage-progression-directionページをめくる方向。ltr・rtl・default。日本語の縦書きの右綴じはrtl

toc属性は、EPUB 2のNCXを指す旧来の属性として、仕様では扱われています。

書くときの注意点

  1. idを一意にする: manifestのidは、重複しないように付ける
  2. manifestに漏れなく載せる: 画像・CSS・フォントも、manifestに載せる
  3. hrefのパスを合わせる: ファイルの場所と、大文字・小文字も含めて一致させる
  4. dcterms:modifiedを入れる: 仕様で求められている項目なので、入れ忘れない
  5. 最後に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|ルビ・縦中横・傍点の書き方にまとめています。

手で書くのは大変です。

通常は、変換ツールや編集ソフトが書き出します。仕組みを知っておくと、書き出されたファイルを確認するときに役立ちます。

参考リンク

情報は変わることがあります。最新の内容は、各公式サイトで確認してください。

Word原稿を、そのままKindle本に

会員登録(無料)のあと、Wordの原稿をアップロードしてテンプレートを選ぶだけです。

変換する