目次から章へ迷わず移動!EPUB Navigationの作り方

本文の章数と目次リンク数は、似ていても別の管理値です。epub navigationを作るときは、収録章の一覧、目次に出す章の一覧、nav文書のリンク先を順に照合します。章ファイルが存在するだけでは、読者が目次から到達できるとは限りません。

5章と5本のnavリンクを対応させた

今回の合成標本は5章です。出力後にZIPを展開せず読み取り、spine8、navリンク5、NCXの項目5、画像0、valid=trueを得ました。content.opfにはタイトル、言語ja、出版社があり、ナビゲーション文書とNCXのハッシュも保存しています。

よくある失敗は、章名を変えた後に目次の表示名だけが古いまま残ることです。件数が5対5でも名称や参照先がずれていれば合格ではありません。復旧では、navの各hrefを実際のXHTMLへ解決し、表示名と章見出しを一行ずつ突き合わせます。リンク切れだけを数える検査より一段深い確認になります。

合格条件は、予定した5章がspineにあり、navに5件の到達可能な参照があり、見出しとの対応表に未処理がないことです。ローカルのvalid=trueは販売ストアの受理や任意の読書端末での同じ表示までは証明しません。

リンク件数の次に参照先の見出しを読む

navリンク5件があるだけでは、五つが別々の章へ到達するとは限りません。各hrefを基準位置から解決し、対象XHTMLが存在すること、フラグメントがある場合は該当IDが一件あること、表示名が章見出しと対応することを表にします。重複した参照先や古い見出し名は、この三列で見つかります。

目次順が本文のspine順と意図的に異なる作品もあるため、機械的に同一を強制しません。序文を目次から外すなどの設計理由を備考へ残し、それ以外の順序差だけを修正します。NCXは互換用の別出力として照合し、navの代替証拠にはしません。

目次リンクを実際に巡回する確認

構造表が合った後、Macの読書画面で五つのリンクを順に選びます。到着した章の先頭語を記録し、navのhrefから予測した語と比べます。画面試験はCLI検査とは別の証拠として日時と環境を残します。

hrefの件数より到達先を検査する

navリンクが五件あっても、二件が同じ章へ向いていれば一章に到達できません。チェック票には表示ラベル、href、解決後XHTMLパス、フラグメントID、到達先見出しを一行で並べます。STUDIO-262のパッケージ検査はspine8、navあり、NCXあり、欠落画像0、valid=trueでしたが、これは各ラベルの語義まで保証する値ではありません。

一本だけ壊して戻す負の試験

複製したnavで第三章の参照先を存在しないp099.xhtmlへ変え、リンク解決検査がその一件を不合格にするかを見ます。修正は出力EPUBの手編集ではなく、章選択または見出し元データへ戻り、新しいSHAのEPUBを再生成します。そして五行すべてを再実行し、修正した一行だけを合格にしません。

最後に目次画面から五章へ一度ずつ移動し、章題と冒頭固有語を確認します。このライブReader操作は当該CLI証拠では未実測のため、構造合格と操作合格は別欄にします。

navから章への経路を別担当へ渡す最終票

最終票の一行目にSTUDIO-262の入力パスとSHA-256、二行目に実行した画面名または命令、三行目に保存後の再読込値を記録します。このテーマで必要な比較列は「ラベル、href、XHTML、fragment、到達見出し」です。どの値が入力、保存、生成物、表示のどの層に属するかを空欄にせず書きます。

nav経路が不合格のときは、返り先をその層に限定します。入力なら読み込み複製、保存なら別名の復旧ファイル、生成なら新しいEPUB、表示ならReader名付きの再試験です。失敗したファイルを上書きせず、復旧結果に別SHAを付けることで、修正者と査読者が同じ差分を見られます。

この最終票の判定原則は「件数が合うだけで参照重複を見逃さない」ことです。ローカルの構造検査が合格しても、販売先受理、全Readerの同一表示、未操作のUIは別の未検証欄に残します。次の担当者が一枚の票から実測済みと未実測を読み分けられることが完了条件です。

STUDIO-262の再試験では、元の記録を消さず、変更条件を一つにしぼって別ファイルへ保存します。対象以外の設定値と確認語も再読込し、修復のための操作が別の合格項目を壊していないかを確かめます。

navの復旧後は重複参照も0件に戻す

参照先を修正した後は、存在確認だけでなく、解決後のXHTMLパスとフラグメントの組を集合にします。五行から五つの異なる組が得られ、それぞれの到達見出しが予定表と一致すれば構造上の復旧合格です。存在する同一ページの別IDを指す場合も、目的の見出しが異なれば差として残します。

最後のライブ操作で一行でも違う章へ着いたら、Reader側の履歴とEPUB側の参照を分けます。Readerを終了して同じSHAのEPUBを再開し、それでも再現する場合だけ参照設定へ戻ります。対象Readerの操作記録がない間は、ローカル構造合格から「迷わず移動」を断定しません。