事故を持ち越さない!KDP EPUB Creator、変換不能文字を保存・出力前に見つける

kdp epub creatorへ渡す原稿で文字化けを防ぐには、EPUBを作った後に見た目を探すのではなく、入力ファイルの文字コードを確定し、別名のUTF-8版を開き直してから生成します。今回の検証は三行・36文字の合成原稿で、Shift_JISの旧版を残しながらUTF-8/LFの作業版を作る経路を確認しました。

旧版を上書きしない理由

文字コードを変える操作と文章を直す操作を同時に上書きすると、結果が違ったときに原因を特定できません。まず旧版のファイル名、SHA-256、検出した文字コード、改行形式を記録します。変換結果にはrepairedなど別の名前を付け、旧版は比較用に残します。KDP用の章順や表紙を整えるのは、この文字列確認が終わってからです。

固定入力legacy-source-sjis.txtには、見出し「STUDIO-464 編集用原稿」と本文「夜風と水面を確認する合成文です。」が入っています。rune inspect text --fileの結果はShift_JIS、LF、3行、36文字、変換不能候補0件でした。この0件は、今回の文字がShift_JISで表せたという意味です。一般の原稿にも問題文字がないと保証する数ではありません。

別名のUTF-8版を作って本文を照合する

旧版からiconv -f SHIFT_JIS -t UTF-8でrepaired-utf8.mdを作りました。再びrune inspect textで開くと、UTF-8、LF、3行、36文字です。文字数だけでなく、見出しと本文が旧版を正しく復号した内容と一致することを確認します。文字数が同じでも別の字へ置き換わる可能性があるため、固有名、句読点、末尾文を読んでから生成へ進みます。

失敗した場合は、UTF-8版をさらに上書きして合わせません。保存してあるShift_JIS入力のSHAへ戻り、変換条件を一つだけ直して新しい名前へ出力します。元のバイトがすでに壊れている場合や、OCR結果が誤っている場合は、この変換では復元できません。編集判断が必要な文字を機械的な似た字へ置き換えないことも大切です。

36文字の修正版だけをEPUB入力にする

RuneのEPUB設定へ渡したのはrepaired-utf8.mdです。生成したEPUBはspine 4項目、nav 1件、NCX 1件、画像0件、欠落資源0件でした。ローカル検査はvalid=trueで、SHA-256は5c194748ea51a16a2d36af4ed2ff09239882c69f760ab18d53a0109067ae4d86です。これで、検査したUTF-8版と生成物が一本の経路で結ばれます。

パッケージが正常でも、入力した文字列が誤っていれば正しい本にはなりません。そこで受入表を「旧版の検出」「別名版の再読込」「本文一致」「EPUB構造」の四行に分けます。valid=trueは最後の一行だけの結果であり、前の三行を代用しません。

赤表示と自動保存停止は今回の画面実測ではない

Rune Studioの公開資料には、変換不能文字を赤く示し、問題がある間の自動保存を止める機能が説明されています。しかし、今回利用できたCLI経路では赤い画素、警告文、保存が止まった時刻を観測できませんでした。したがって「赤表示を確認した」「自動保存停止を実測した」とは書きません。公開資料上の安全機能と、今回再現したファイル変換を別々に扱います。

入稿候補にしてよい条件

旧版が不変で、別名版がUTF-8/LF・36文字として再読込でき、代表文字列が一致し、その別名版からのEPUBが欠落0・local valid=trueになった時点で、文字コード経路は合格です。販売先の受理、すべてのリーダーでの字形、すでに破損した文字の復元は別の検査です。未実測の画面機能を根拠にせず、ファイル名と取得値を結んでおけば、後から文字化けが見つかっても戻る版を失いません。

変換不能候補が出たときは文字単位で判断する

実原稿で変換不能候補が出た場合は、該当文字、行番号、前後の語を一覧にします。人名、地名、旧字、記号は、似た字へ機械的に置き換えると内容が変わります。編集者が採用文字を決め、その判断を反映した新しいUTF-8版を作り、もう一度閉じて開きます。候補数が0になったことと、意味が保たれたことは別々に確認します。

今回の36文字標本では候補0件だったため、赤表示が現れる負の画面試験にはなりません。ここから言えるのは、表現可能なShift_JIS入力を検出し、別名UTF-8へ同文で移せたことです。未検証のUI挙動を補うために、実行結果を誇張したり、問題文字が自動修復されると説明したりしません。

複数章の本へ広げるときは、章ごとに入力SHA、検出コード、行末、代表語を記録します。一章でも未確認ならKDP用EPUBを作らず、その章だけを別名修復します。全章を一括上書きしないため、すでに合格した章まで意図せず変わる事故を防げます。

引き渡し時は、旧版とUTF-8版の両方を残し、どちらをEPUB入力へ指定したかを書きます。生成物のSHAだけでは入力版を特定できません。36文字の再読込、見出しと本文の一致、欠落0のEPUBを一本の記録へ結べば、次版を作る担当者も同じ旧版へ戻って変換条件を再確認できます。