EPUB工房EPUB KOBO
EPUBを知る / 基礎知識
基礎知識

EPUBの中身はどうなっているのか
解凍して仕組みを見てみる

EPUBファイルの正体はZIPです。拡張子を変えれば、誰でも中身を開いて確かめられます。この記事では、実際に解凍すると何が入っているのか、それぞれのファイルが何をしているのかを順番に見ていきます。仕組みが分かると、うまく表示されないときに「どこを見ればいいか」の見当がつくようになります。
この記事の内容
  1. EPUBを解凍してみる
  2. 中身の全体像
  3. mimetype ── いちばん特殊なファイル
  4. container.xml ── 案内板
  5. content.opf ── 本の心臓部
  6. nav.xhtml ── 目次
  7. 本文・CSS・画像
  8. 手作業で作るのが大変な理由

EPUBを解凍してみる

まず手を動かしてみましょう。手元にEPUBファイルがあれば、次の手順で中身を見られます。

1EPUBファイルをコピーする(元のファイルを壊さないため)
2拡張子を .epub から .zip に変える
3いつも通り解凍する

これだけです。特別なソフトは要りません。EPUBはZIPそのものなので、警告も出ずに普通に展開されます。

逆はうまくいきません

「解凍できるなら、フォルダをZIPで固めて拡張子を .epub にすればEPUBができる」と思うかもしれませんが、そう単純ではありません。次章以降で説明する圧縮の仕方の決まりがあるためです。

中身の全体像

解凍すると、だいたいこのような構成になっています。

展開したフォルダ
├── mimetype       この箱がEPUBだと示す印
├── META-INF/
│  └── container.xml  本体の場所を教える案内板
└── OEBPS/       本の中身が入るフォルダ
  ├── content.opf   本の情報・収録物一覧・読む順番
  ├── nav.xhtml    目次
  ├── text/
  │  ├── p001.xhtml  本文(ページごと)
  │  └── p002.xhtml
  ├── image/
  │  └── cover.jpg   表紙などの画像
  └── style/
    └── book.css   見た目の指定

OEBPS というフォルダ名や、その中の分け方は作ったツールによって変わりますitem だったり xhtml だったりしますが、それで問題ありません。

一方、先頭の mimetypeMETA-INF/container.xml だけは、名前も場所も変えられません。 この2つだけが固定で、残りは自由——これがEPUBの構造を理解する第一歩です。

mimetype ── いちばん特殊なファイル

中身はたった一行、これだけです。

application/epub+zip

役割は「このZIPはEPUBです」と名乗ることです。ただし、このファイルには他のファイルにはない、厳しい決まりがあります。

読書アプリは、ファイルの先頭を少し読むだけで「これはEPUBだ」と判断できるようになっています。そのために、この位置と形式が決められています。

手作業でEPUBを作ると、まずここでつまずきます

普通の圧縮ソフトでフォルダをZIPにすると、ファイルの順番は選べませんし、mimetype も一緒に圧縮されてしまいます。その結果、拡張子を .epub にしても読書アプリが開いてくれません

この「先頭に、無圧縮で」という条件を満たすには、圧縮の手順を分けて実行する必要があります。EPUB作成ツールが最初にやっているのは、この処理です。

container.xml ── 案内板

META-INF/container.xml の中身は、こんな内容です。

<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="OEBPS/content.opf"
      media-type="application/oebps-package+xml"/>
  </rootfiles>
</container>

やっていることは1つだけで、「本の情報は OEBPS/content.opf にあります」と教えているだけです。

フォルダ名が自由なのは、この案内板があるからです。読書アプリはまず META-INF/container.xml を見て、そこに書かれた場所へ進みます。

content.opf ── 本の心臓部

ここがEPUBでもっとも重要なファイルです。大きく3つの部分に分かれています。

部分役割
metadataタイトル、著者、言語など、本そのものの情報
manifest収録しているファイルの一覧表
spineページをめくる順番

metadata ── 本の情報

<metadata>
  <dc:title>吾輩は猫である</dc:title>
  <dc:creator>夏目漱石</dc:creator>
  <dc:language>ja</dc:language>
  <dc:identifier id="uid">urn:uuid:xxxxxxxx</dc:identifier>
  <meta property="dcterms:modified">2026-08-04T00:00:00Z</meta>
</metadata>

ここで気をつけたいのが dc:title です。読書アプリの本棚に並ぶのは、ファイル名ではなくこの値です。 ファイル名を丁寧につけても、ここが空だと本棚に「無題」と表示されてしまいます。

dc:language も重要です。日本語なら ja を指定します。これがないと、読書アプリが日本語向けの組版ルールを適用してくれないことがあります。

manifest ── 収録ファイルの一覧

<manifest>
  <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
  <item id="p001" href="text/p001.xhtml" media-type="application/xhtml+xml"/>
  <item id="css" href="style/book.css" media-type="text/css"/>
  <item id="cover" href="image/cover.jpg" media-type="image/jpeg"/>
</manifest>

EPUBに入っているファイルは、すべてここに登録されている必要があります。 画像を1枚追加したのに登録を忘れると、それだけでエラーになります。逆に、登録されているのに実物がない場合もエラーです。

目次のファイルには properties="nav" という印をつけます。これで「このファイルが目次です」と示しています。

spine ── 読む順番

<spine page-progression-direction="rtl">
  <itemref idref="p001"/>
  <itemref idref="p002"/>
</spine>

manifest が「何が入っているか」の一覧なら、spine「どの順番で読むか」を決めるものです。並び順がそのままページ順になります。

そして日本語の本で特に重要なのが page-progression-direction です。

意味使う本
rtl右から左へ進む縦書き・マンガ
ltr左から右へ進む横書き

縦書きの本なのにこの指定がないと、ページをめくる方向が逆になります。 縦書きがうまくいかないときに最初に確認すべき箇所のひとつです。

nav.xhtml ── 目次

EPUB 3では、目次を専用のファイルとして必ず用意します。見た目は普通のHTMLのリンク集ですが、epub:type="toc" という印がついているのが特徴です。

<nav epub:type="toc">
  <ol>
    <li><a href="text/p001.xhtml">第一章</a></li>
    <li><a href="text/p002.xhtml">第二章</a></li>
  </ol>
</nav>

読書アプリの目次ボタンを押したときに出てくるのが、この内容です。リンク先のファイルが存在しないと、目次から飛べない本になります。

toc.ncx が一緒に入っていることもあります

古いEPUB 2では toc.ncx というファイルが目次の役割を担っていました。EPUB 3では nav.xhtml に置き換えられていますが、古い読書アプリのために両方を入れているEPUBもあります。

本文・CSS・画像

ここから先は、Webページとほとんど同じです。

本文をどう分けるかは自由ですが、1ファイルが大きすぎると読書アプリの動作が重くなるため、章ごとに分けるのが一般的です。

手作業で作るのが大変な理由

ここまで見てきた通り、EPUBの構造そのものは複雑ではありません。本文と画像とデザイン指定を、案内板と一覧表と一緒に箱に詰める——それだけです。

ただし、守るべき決まりが細かくあります。

ひとつ欠けただけで、読書アプリが開けなかったり、ストアの入稿で弾かれたりします。しかもエラーの原因は、たいてい表示された内容からは分かりません。

だから実際の制作では、原稿や画像を渡せば構造を自動で組み立ててくれるツールを使うのが一般的です。とはいえ、中身を一度でも見ておくと、うまくいかないときに「どこを疑えばいいか」の見当がつくようになります。それがこの記事の目的です。

構造は自動で組み立てられます

EPUB工房は、ここで説明した構造をすべて自動で組み立てます。画像フォルダやテキスト原稿を選ぶだけ。会員登録もインストールも不要です。

EPUB工房を使ってみる