epub navの合格条件は、nav.xhtmlが存在することではありません。目次に表示するラベルが意図した順に並び、各hrefがEPUB内の正しいXHTMLへ到達することです。今回の五章標本では、五つのラベルとp001.xhtmlからp005.xhtmlまでの参照を一組ずつ照合し、欠落0件を確認しました。
目次数とリンクの正しさは別に見る
五章ならリンクも五件になる、という件数確認は入口にすぎません。章題Aのラベルが章Bへ向いていても件数は五件のままです。読者が迷うのは、数が足りない場合だけではなく、表示名と到達先が食い違う場合です。
まず原稿側に、採用順、章題、ファイル名の対応表を作ります。目次へ載せない章があるなら、収録するかどうかと目次へ載せるかどうかを別の列で持ちます。nav.xhtmlを開いたら、ラベル、href、対応する原稿の三つを行単位で読みます。
五章の検証本をわざと単純にした
今回の合成原稿は、章1から章5までをそれぞれ独立したMarkdownファイルにしました。Rune Studioへ明示順で渡し、すべてを目次対象としてEPUBを出力しています。複雑な章題や画像を入れなかったのは、リンク対応だけを評価するためです。
生成物のspineは8項目でした。内訳はタイトル、nav、本文5件、奥付です。navリンクは五件、NCXのnavPointも五件あり、収録資源の欠落はありません。ローカルのEPUB検査はvalid=trueでした。
この標本は第三者リーダーを操作する試験ではありません。パッケージ内の文書と参照を直接読んだ構造検査です。見た目の目次デザインや端末固有のメニュー表示は、別の確認対象になります。
ラベルを章題と照合する
目次ラベルは読者が選ぶ言葉なので、内部ファイル名が正しくても章題が古ければ不合格です。原稿のH1を変更したあと、目次だけ以前の章題に残る場面を想定して確認します。表記ゆれ、全角半角、連番もここで見ます。
五章標本ではSTUDIO-410 検証章1から検証章5までがnavに同順で入りました。これは合成原稿の結果であり、どの原稿でも自動的に章題が正しくなるという保証ではありません。実原稿では、編集カードの承認済み章題と比較します。
hrefはZIP内の実在ファイルへ解決する
href="p003.xhtml"を読んだら、nav.xhtmlの位置を基準に実際の格納先へ解決します。文字列が書かれているだけでは足りません。対象ファイルが存在し、期待した章本文を含むことまで確認します。
今回の五件は順にp001.xhtml、p002.xhtml、p003.xhtml、p004.xhtml、p005.xhtmlへ到達しました。さらにmanifestの資源を調べ、欠落が0件であることを確認しています。この二段階で、リンク先とパッケージ収録の両方を押さえられます。
ずれを見つけたときの戻り先
ラベルだけが違うなら章題の採用元を確認します。順番が違うなら、EPUBへ渡したファイル順へ戻ります。hrefが存在しないなら、ファイル名または収録処理を調べます。一度に三つを直さず、ずれの種類に対応する設定だけを変更します。
検査表へは、期待値と観測値を同じセルへ書きません。期待する章題、実際のラベル、期待するファイル、実際のhrefを四列に分けます。差がない行だけを合格にすると、レビュー担当が元の原稿を開かなくても判断過程を追えます。
文字化けしていない本文を、目次リンクの問題で文字コード変換し直す必要はありません。逆に、リンクが正しくても本文の符号が壊れている場合は別の診断です。症状を層ごとに分けると、無関係な作業を避けられます。
NCXとの違いを残しておく
現行のナビゲーション文書を調べるこの記事では、nav.xhtmlを主役にします。NCXは互換用の別文書であり、存在確認だけで旧リーダーの動作を保証できません。ただし二つの順序が食い違っていれば、生成設定を見直す手掛かりになります。
五章標本ではnavとNCXが同じラベル順を持ちました。ここで確定できるのは構造上の対応です。端末上の章移動を合格にするには、対象端末またはリーダーで実際に操作する必要があります。
読者へ渡す前の判定
長い本では全リンクを一度に眺めず、先頭、中央、末尾のまとまりへ分けます。ただし標本抽出で済ませず、最終的には全行を確認します。区切りごとに担当者と確認日時を記録すれば、修正された章の範囲だけを安全に再検査できます。
公開後に読者から「違う章へ飛ぶ」と報告が来た場合は、利用したリンクラベルと到達した章を聞きます。その二値があれば検査表の一行へ戻れます。抽象的な“目次不具合”として全EPUBを作り直す必要はありません。
公開前には、ラベル件数、章題との一致、順序、hrefの解決、欠落資源数を記録します。五件という数だけに丸を付けず、五つの対応行すべてを確認します。これがnav到達性の検査です。
Rune Studioは、章を明示順で選び、nav.xhtmlとNCXを含むEPUBを作る流れの候補になります。別の方法でEPUBを作る場合も、同じ対応表で検査できます。最初の一歩として、原稿の章題・順番・ファイル名を一行ずつ書き出し、出力後のnavリンクと並べてください。