2つの目次は何が違う?EPUB TOC・NCXとnavの役割

EPUBの目次を検査するときは、nav.xhtmlとNCXを同じものとして片方だけ見ないことが大切です。navはEPUB 3で使う文書内ナビゲーション、NCXは古い読書環境との互換性で残る目次データです。五章なら、両方に五項目あり、ラベルと参照先が同じ順で対応しているかを確認します。

この記事では epub toc ncx の違いを、生成した五章の実物で追います。用語の説明だけで終わらず、どの章を入力し、どの命令で出力し、何が一致すれば合格かを示します。

navとNCXは同じ章順を別形式で表す

nav.xhtmlはHTMLとして作られ、読者やリーダーがたどるリンクを持ちます。NCXはXML形式のナビゲーション情報です。新しい環境がnavを使っても、既存環境や変換経路がNCXを見る場合があります。二つを収録するなら、内容の矛盾を残さないのが基本です。

比較する欄は三つで十分です。表示ラベル、参照先、順番です。件数が五対五でも、第三章と第四章が逆なら不合格です。参照先が同じでもラベルが旧題なら、読者に見える項目が経路によって変わります。

今回の検証は表紙や本文画像の説明を中心にしません。目次へ載せる五章と、生成された二形式の対応だけを主題にします。書誌情報は生成に必要な範囲で設定しますが、KDPのMetadata入力は近接記事へ譲ります。

五章の見出しを照合原簿にする

入力は chapter-01.md から chapter-05.md までです。各ファイルに一章だけを入れ、五つすべてを rune epub select へ順番に渡しました。rune epub plan の返却値は fileCount=5、chapterCount=5、全章 includeInTOC=true です。除外章は0件でした。

このplanを原簿にします。章名は STUDIO-266 Chapter 1 から 5、参照先は生成後のp001.xhtmlからp005.xhtmlに対応する想定です。ファイル名の自然順だけに任せず、selectへ渡した順を記録しておけば、後でどこからずれたかが分かります。

失敗例は、第五章だけ目次から除外した設定を忘れることです。本文は五章あるのに目次は四項目となります。その場合、navとNCXが四対四で一致しても、原簿の五章とは一致しません。二形式の相互一致と、入力原簿との一致は両方必要です。

生成命令を目次検査まで一本につなぐ

シリーズ設定は rune epub series set --workspace /private/tmp/rune-g2c3-studio-266-dt_yosi8 --title "STUDIO-266 Verified Title" --author "Synthetic Author" --publisher Publisher-266 --file-name studio-266 --writing-mode horizontal --language ja --json です。巻0にはversion 3.1と発行日入力 2026-10-13 を設定しました。

五章をselectした後、planで件数と対象を確認し、rune epub export を実行しました。最後は rune inspect epub --path /private/tmp/rune-g2c3-studio-266-dt_yosi8/EPUB/studio-266-260903.120000.epub --json です。すべての命令は終了コード0でした。

生成物のSHA-256は 7b349cb8b0fed4af85265178db74676f8ffb8a49a17867fe1f1e31932b7103c5、entryは13件です。spineはtitle、nav、五章、colophonの8項目。表紙と本文画像はこの標本に入れていません。

途中でplanが五章でも、生成物が同じとは限りません。exportに別のファイル一覧を渡したり、古いワークスペースを選んだりする事故があるため、inspectで出力ファイルを読み直します。planの成功を完成判定にしない理由です。

五つのラベルと参照先を左右に並べる

nav_linksは五件でした。STUDIO-266 Chapter 1→p001.xhtmlから、Chapter 5→p005.xhtmlまで順番に並びます。ncx_pointsも五件で、同じラベルが Text/p001.xhtml から Text/p005.xhtml を指しました。

検査値 nav_ncx_same_labels=true は、両方のラベル列が一致した結果です。参照先も章番号ごとに対応し、目次から除外された章はありません。valid=trueで欠落問題も報告されませんでした。これがこの記事の中心的な合格証拠です。

復旧では、ラベルだけが違うなら章タイトルの正本へ戻り、参照先だけが違うなら章選択と生成順へ戻ります。件数が違うならincludeInTOCを確認します。原因別に戻り先を変えると、正しい側を編集せずに済みます。

二つをそろえる意味と限界

navとNCXをそろえる目的は、異なる読書・変換経路で目次の章名や順番が食い違う可能性を減らすことです。すべてのリーダーがNCXを使うわけではありません。それでも両方を生成する設計なら、矛盾を残す理由はありません。

今回の valid=true はローカル構造検査です。販売先での受理、端末上の目次デザイン、読み上げの挙動を保証しません。目次の見た目を評価する場合は、対象リーダーで別に確認します。

Rune Studioでは章選択からnav・NCX・OPFを含むEPUB生成まで扱えます。目次生成を含むMac版の現行仕様はRune Studioの商品ページで読めます。自分の本では、章名の原簿、nav、NCXを三列に並べ、件数・ラベル・参照先が全部一致したときだけ目次を合格にしてください。