Mac一台でEPUBを自作するなら、最初の完成条件を小さくします。三章、書誌情報、表紙、目次を一つの作業フォルダから生成し、最後にEPUB内部を検査できれば、一冊目の土台は完成です。執筆、変換、確認を同じMacで行えても、途中結果を完成品と混同しないことが大切です。
この記事は epub 自作 の最初の一冊を、時系列の制作日誌として説明します。検証用の三章を作り、Rune StudioのCLIでシリーズ情報、巻、表紙、章順を設定し、plan、export、inspectまで進めました。
完成物を「開けるファイル」より細かく定義する
最初に決める合格条件は五つです。三章が読書順に入る、目次に三項目ある、日本語とタイトルがmetadataへ入る、表紙がcover-imageになる、欠落資源がない、です。販売先への登録や全端末の表示は、ローカル制作の次に行う別工程とします。
この条件を書かずに始めると、ファイルが一つ出力された時点で完成した気になります。自作の一冊目では、生成の成功より、何を確認すれば次巻でも同じ手順を使えるかが重要です。
作業フォルダに三章と表紙だけを置く
専用ワークスペースは /private/tmp/rune-g2c3-studio-256-rks8a_uk です。三章を chapter-01.md、chapter-02.md、chapter-03.md として作り、各章には見出しと短い本文を入れました。表紙は cover.png 一枚です。
一冊目の標本へ別作品の画像や古い章を入れない理由は、欠落が出たときに原因を絞るためです。本番ではもっと多くの素材を使えますが、最初の再現は小さいほど戻りやすくなります。
三章の作成結果をファイル単位で確認する
各章は rune file write --path .../chapter-01.md --content-file .../.chapter-01.md.input --json の形で個別に書きました。三命令とも終了コードは0です。章を一括生成していないので、どの入力がどのファイルになったかを追えます。
書いた後はファイル名だけで判断せず、三章の本文を読みます。章番号の重複、空ファイル、別作品の文があればここで止めます。EPUBにしてから直すより、入力の段階で直すほうが原因を一つに保てます。
書誌情報をシリーズ設定へ入れる
実行した命令は rune epub series set --workspace /private/tmp/rune-g2c3-studio-256-rks8a_uk --title "STUDIO-256 Verified Title" --author "Synthetic Author" --publisher Publisher-256 --file-name studio-256 --writing-mode horizontal --language ja --json です。タイトル、著者、出版社、横書き、日本語を一度に指定しました。
これは検証用の値です。実書籍では著者表記と出版社名を正本から転記します。画面に前回の値が残っていても、命令や設定記録へ今回の値を明示すれば、別巻の書誌を持ち越す事故を防げます。
巻の版と発行日、表紙を結び付ける
巻0には rune epub volume set --workspace ... --number 0 --version 3.1 --publish-date 2026-10-03 --json を実行しました。表紙は rune epub cover set --workspace ... --number 0 --path .../cover.png --json で指定しています。
表紙指定は本文先頭へ画像を貼ることとは違います。生成後のmanifestでcover-imageになったかを確認します。発行日も同様に、設定成功だけで終わらず、出力metadataと制作記録を照合します。
章順をselectとplanで二回確かめる
rune epub select へchapter-01、02、03の順で渡しました。続く rune epub plan は fileCount=3、chapterCount=3、三章すべて includeInTOC=true、問題なしを返しています。
planは完成したEPUBではありません。しかし、順番や対象漏れを出力前に発見できる関門です。章が二つしかない、順番が逆、目次から外れている、といった結果ならexportへ進まずselectへ戻ります。
exportで一冊を作り、生成物を固定する
出力は rune epub export --workspace /private/tmp/rune-g2c3-studio-256-rks8a_uk --number 0 --file .../chapter-01.md --file .../chapter-02.md --file .../chapter-03.md --fixed-now 2026-09-03T12:00:00+09:00 --deterministic --json で行いました。生成物は studio-256-260903.120000.epub です。
SHA-256は 1d4031e32e7746de7bc8d792fcd950f15383a6999bac1da49aa81f07e0a5231a でした。この値を残すと、検査したファイルと後で販売先へ渡すファイルが同じか確かめられます。
rune inspect epub で再取得したパッケージはentry 13、valid=trueでした。spineはcover、title、nav、三章、colophonの7項目。navとNCXは各3項目でラベルが一致し、表紙はcover-imageとして一件入り、欠落資源は報告されていません。
metadataのタイトル、言語ja、出版社も設定値と一致しました。これで冒頭の五条件を一つずつ埋められます。CSS内に縦書き指定が存在するという内部フラグはあっても、この本のwriting modeとページ進行はhorizontal/ltrです。値の意味を広げてはいけません。
一台運用が向く人と別の方法が向く人
同じMac上で章管理、書誌、目次、表紙、生成、内部検査まで追いたい人には、この流れが向きます。コマンドごとに結果を残せるので、次巻で同じ合格条件を使いやすくなります。
複数人が同時に書誌と原稿を変更する制作、複雑な固定レイアウト、販売先ごとの最終品質保証まで一つの道具に任せたい場合は、別の管理方法や専門ツールも必要です。ローカルの valid=true はKDPなどの受理を意味しません。
一台制作で使える機能はRune Studioの商品ページに現行範囲がまとめられています。三章の作業日誌を一度完成させ、章、書誌、表紙、plan、EPUB、検査値を残してください。それが次巻へ再利用できる、自作の最小レシピになります。


