画像が消える事故を防ぐ!電子書籍を作る方法、画像入りで作る

画像入りで電子書籍を作るときは、画像を挿入した時点で終わりにせず、「原稿からの参照」「移動後の相対パス」「EPUBに収録された資源」を一本につないで確認します。Rune Studioで三章へ本文画像5枚を挿入し、参照のある1枚を移動した例では、旧パス0件、新パス1件、移動後も1ファイル・1回参照を確認できました。

作り直したEPUBでは、本文画像5枚が内容照合で5つの別資源に対応し、表紙を含めて画像資源は6点、欠落は0件でした。ここでは、この一回の移動で何を測ったかと、画像の見た目や読み上げなど未確認の範囲を分けて説明します。

本文画像5枚を原稿参照から固定する

専用原稿はC01.mdからC03.mdまでの三章です。本文画像はinline-01.pngからinline-05.pngまでの5枚、表紙はcover138.pngの1枚に固定しました。

本文画像 挿入先 代替文 移動課題
inline-01.png C01.md 本文図1 なし
inline-02.png C01.md 本文図2 なし
inline-03.png C02.md 本文図3 imagesからassetsへ移動
inline-04.png C02.md 本文図4 なし
inline-05.png C03.md 本文図5 なし

この表なら、元フォルダにあるだけの未使用画像と、原稿から実際に参照された画像を混同しません。本文画像5枚は5本のMarkdown画像参照として挿入し、表紙は本文参照とは別に設定しました。

一般的な方法でも、原稿名、画像名、相対パス、代替文、参照回数を一行にまとめれば同じ確認ができます。EPUB生成後は、原稿側の5行とパッケージ側の5資源を照合します。

相対パスは原稿ファイルを起点にする

画像の相対パスは、画像フォルダではなく、その画像を参照する原稿ファイルから見た位置です。chapters/C02.mdからimages/inline-03.pngを参照するなら、移動前のパスは../images/inline-03.pngです。

画像をassetsへ移した後は、同じ原稿からの参照を../assets/inline-03.pngへ書き換えます。ファイルだけ移して原稿に古いパスを残すと、編集画面では気づかなくても、EPUB生成時に画像が欠ける原因になります。

Rune Studioの公開資料には、txt、text、md、markdown内のMarkdown画像・リンクを対象に、ファイルやフォルダの移動・名前変更後の相対パスを追従修正する機能が記載されています。外部URLとページ内リンクは対象外です。この説明は対応範囲であり、今回の1枚が正しく書き換わったかは前後の参照数で確認します。

参照1件の画像を移動して前後を測る

移動対象には、C02.mdから1回参照されていたinline-03.pngを選びました。移動前から移動後までの記録は次のとおりです。

確認時点 ファイル数 出現数 原稿内のパス
移動前 1 1 ../images/inline-03.png
書き換え計画 1 1 対象はC02.md
書き換え後 1 1 ../assets/inline-03.png
旧パス再検索 0 0 古い参照なし

実際の操作では、利用状況を取得し、画像をimagesからassetsへ移し、対象原稿を特定して参照を書き換えました。再読込後も新パスはC02.mdに1件あり、利用状況は1ファイル・1回のままでした。

重要なのは、旧パスが0件になったことだけではありません。参照そのものを削除しても旧パスは0件になります。移動前の1件が新パスの1件として残り、対象原稿も同じであることまで確認して、参照追従の結果とします。

再生成EPUBで5枚と5資源を対応させる

移動後の三章からEPUBを作り直し、パッケージを展開して本文画像を照合しました。5つの元画像は、ファイル内容の一致によって5つの異なる収録資源へ対応しました。XHTML内の画像要素も合計5件でした。

確認項目 結果
本文画像の元ファイル 5枚
XHTMLの本文画像要素 5件
内容一致で対応した本文画像資源 5点、すべて別資源
表紙を含む画像資源 6点
欠落画像 0件
ローカル構造検査 valid=true

現在の結果では、原稿内の画像参照5件とEPUBに同梱された本文画像資源5件が一対一で対応しています。そのうち参照付き画像1件は移動後も追跡し、旧パス0件、新パス1件、利用1ファイル・1回を確認しました。表紙は別の1件として数えるため、画像資源は合計6件です。

ただし、この照合が示すのは画像ファイルの内容一致とXHTML参照です。画像の視覚品質、代替文の読み上げ、販売先での再圧縮は確認していません。valid=trueもローカルのパッケージ構造に限られ、販売先の受理を保証するものではありません。

一回の移動を合格式にして再現する

画像事故を防ぐ合格条件は、「意図した本文画像数=原稿から参照された画像数=EPUBで対応した本文画像資源数」と、「移動前の参照数=移動後の新パス参照数」です。表紙は本文画像と分けて数えます。

今回の例は、本文5枚、参照5件、対応資源5点、表紙込み6点、欠落0件でした。移動したinline-03.pngは、旧パス0件、新パス1件、移動後利用1ファイル・1回です。この範囲では、画像入りEPUBの収録と一回の相対パス移動を追跡できました。

まず自分の原稿で、参照が1件以上ある画像を一枚選び、移動前後の式を作ってください。Rune Studioの現行Mac版を候補にする場合は、詳しくはこちらで対象形式と除外範囲を確認し、複製原稿で旧パス、新パス、再生成EPUBを照合してから本番原稿へ進みます。