ふりがなだけ外したい!EPUB原稿からルビを削除する方法

epub ルビ 削除で最も怖いのは、読みを外すつもりで親文字まで消すことです。STUDIO-432では「漢字」に「かんじ」という読みを付けた一組だけの合成原稿を用意し、削除前後のEPUBを別名で保存しました。前版のXHTMLはruby要素1件、後版は0件です。その上で、後版に親文字「漢字」が残っていることを読みました。ただし後版のRune検査はvalid=falseです。縦線|が残り、epub-notation-leakedと判定されたため、ルビ構造の変化は確認できても配信用EPUBとしては未合格です。

件数の1→0と、本文の残存は必ず両方確認します。rubyが0件でも「漢字」が無ければ失敗です。逆に「漢字」が見えても、読みの要素が残っていれば削除は終わっていません。

前版の一組を固定する

検証の元はnotation.mdです。第一章に「漢字の合成原稿です。」という一文を置き、Runeのtext ruby操作で対象を「漢字」、読みを「かんじ」としました。その状態からbefore-stripフォルダーへEPUBを生成します。

前版のSHA-256はe22b7691…255f5で、ローカル検査はvalid=trueでした。パッケージを開くと、p001.xhtmlにruby要素が1件あり、抽出テキストに「漢字 かんじ」が現れました。これが削除前の基準です。

rubyが0でも出力合格とは限らない

読み記法を外した原稿は、元のEPUBを上書きせずafter-stripフォルダーへ生成しました。後版のSHA-256は41f488f6…f4aebです。ZIPとして再openでき、manifest参照の欠落は0件ですが、Runeのinspect epub --pathはvalid=falseを返しました。issue codeはepub-notation-leakedです。

構造変換を評価する第一条件はruby要素数0、第二は本文内の「漢字」残存です。後版はこの二つを同時に満たしました。一方、EPUBとしての受入には第三条件としてRune検査のvalid=trueと記法漏れ0件が必要です。後版は第三条件を満たさないため、「ruby nodeは0件で親文字は残ったが、記法漏れにより未合格」と記録します。

EPUBのXHTMLを並べて読む

原稿ファイルの見た目だけでは、EPUBにどう変換されたかを証明できません。二つのEPUBをZIPとして開き、同じp001.xhtmlを並べます。前版では<ruby>と読みを表す要素があり、後版ではそれが無くなっています。

次にタグを除いた本文を読み、後版に「|漢字の合成原稿です。」と残ることを確かめます。親文字は保たれましたが、先頭の縦線はそのままです。数値検査、代表文の確認、Runeの妥当性判定を組み合わせると、rubyタグだけが残る失敗、親文字ごと消す失敗、開始記号だけが漏れる失敗を分けて見つけられます。

親文字まで消した場合の復旧

失敗例は、検索置換でruby記法全体を空文字にし、「漢字」も消す操作です。この場合、後版のEPUBをさらに編集して文脈を作り直すのではなく、rubyが1件あった前版とその元原稿へ戻ります。

前版から親文字「漢字」と周辺文を復元し、読みの部分だけを外した新しい原稿を作ります。その後、また別名でEPUBを生成し、ruby=0と「漢字」残存を再検査します。失敗版は削除せず、どの置換が親文字を巻き込んだかを示す記録として保持します。

縦線が残った標本の限界

今回の後版から抽出した文字列には、「|漢字の合成原稿です。」と縦線が残っています。保存済み証拠が証明するのはruby要素の1→0と親文字「漢字」の残存であり、縦線まで消えたことではありません。

したがって、本番原稿では縦線をruby記法の一部として残す意味があるかを別に校正します。不要なら、親文字を保ったまま対象位置の縦線だけを外し、第三の新しいpathへEPUBを生成して改めてXHTMLを検査します。その候補ではruby=0、「漢字」残存、epub-notation-leakedなし、Rune検査valid=true、manifest欠落0をすべて求めます。この第三版は今回まだ生成・実測していないため、回復手順を成功済みとは扱いません。

実原稿へ広げる前の抽出検査

一組の標本が通っても、すべてのruby記法に同じ操作が安全とは言えません。実原稿の複製からruby候補を抽出し、親文字、読み、前後の一文、記法の種類を一行ずつ記録します。特に短い語、記号を含む語、複数回現れる語は一括置換の対象から分けます。

変換後は全XHTMLのruby件数だけでなく、抽出表の親文字が同じ文脈に残っているかを確認します。読みが重要な固有名詞を残す場合は、その行を除外対象として明記します。今回の一組の結果を、全原稿の完全性へそのまま拡張しないことが大切です。

ふりがな削除の完了票

検証票には、前後のEPUB名とSHA、検査したXHTML、ruby数1→0、親文字「漢字」残存を書きます。妥当性は前版valid=true、後版valid=falseと分け、後版のissue code epub-notation-leakedも記録します。さらに、第三者readerでの表示は未実測であることを制限として添えます。

合格には「読み情報を外した」「読まれる本文を保った」「残存記法がない」の三つが必要です。プレビュでふりがなが見えないという一点だけでは、タグが残ったのか、文字まで消えたのか、縦線だけが漏れたのかを区別できません。今回の後版は最初の二条件の切り分けには使えますが、三条件目で止まる未合格標本です。

引き渡し時には、後版が公開用の最終稿ではなく、ruby構造の変化を切り分ける合成標本であることも伝えます。縦線を残したままのファイルをそのまま配信せず、本番用複製では残存記号を校正してから第三のEPUBを作ります。その第三版でruby=0、親文字残存、記法漏れ0、Rune検査valid=trueを再確認して初めて、構造検査と文章校正の両方を通過できます。

複数章を扱うときは、章ごとのruby件数と残す親文字を検査表へ記録します。総数だけがゼロでも、別章の語を誤って削除していれば合格ではありません。章パス、対象語、前後文を結び付けて読むことで、一組の成功例を安全な実務手順へ広げられます。