KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

IT技術書向けのEPUB作成ソフトはなにかあるか

IT技術書向けのEPUB作成ソフトはなにかあるか気になって、知りたいことをChatGPTにきいて自分が書いたAozoraEpub3関連が出てきたときに、自分以外書いたものが知りたいのだと思うしかなかった。

AozoraEpub3はcodeタグやpreタグが使いづらいのでIT技術書には向かないかなと思っている。

その他に次のものが紹介されていた。。 Re:VIEW、Pandoc 、mdBook、Asciidoctor、Calibre、GitBook、Pressbooks、Scrivener

国内のEPUBを受け付けている、電子書籍販売サイトでの対応状況はよくわからない。電書協ベースなら行けそうだけど、電書協は縦書きの小説と漫画がメインなEPUBなのでその他の仕様がよくわからない。

rubyじゃなくてnode.jsで動くものでないかなと気になった。GitBookの派生したHonKitも気になったので調べてみた。ブラウザ上で動作するEPUB作成ツールがあれば初心者向けにはいいのかもしれない。データ量が増えると処理が重くなって使いづらそうだけど

あなた:

IT技術書向けのEPUB作成ソフトはなにかある

ChatGPT:

IT技術書向けのEPUB作成に適したソフト・ツールには以下のようなものがあります。それぞれ特徴が異なるため、目的や作成スタイルに応じて選ぶとよいです。

  • 概要: 技術書典などで人気の「技術書」を執筆・出版するための文書フォーマット。
  • 出力形式: EPUB / PDF / HTML / Kindleなど
  • 特徴:

Markdownに似た構文。

複数章・索引・脚注・数式など、技術書向けの構造をサポート。

技術書典の公式推奨。 - Markdownに似た構文。 - 複数章・索引・脚注・数式など、技術書向けの構造をサポート。 - 技術書典の公式推奨。 - 使用例: GitHubやCIと連携して自動でEPUB生成も可能。 - URL: https://github.com/kmuto/review

概要: 技術書典などで人気の「技術書」を執筆・出版するための文書フォーマット。

出力形式: EPUB / PDF / HTML / Kindleなど

特徴:

  • Markdownに似た構文。
  • 複数章・索引・脚注・数式など、技術書向けの構造をサポート。
  • 技術書典の公式推奨。

Markdownに似た構文。

複数章・索引・脚注・数式など、技術書向けの構造をサポート。

技術書典の公式推奨。

使用例: GitHubやCIと連携して自動でEPUB生成も可能。

URL: https://github.com/kmuto/review

  • 概要: Rust公式ドキュメントにも使われているMarkdownベースのドキュメントビルダー。
  • 出力形式: HTMLが中心だが、プラグインやPandocと組み合わせることでEPUB化も可能。
  • 特徴:

見出し、ナビゲーション、検索機能などが整っている。

Markdownで簡単に執筆。 - 見出し、ナビゲーション、検索機能などが整っている。 - Markdownで簡単に執筆。 - URL: https://rust-lang.github.io/mdBook/

概要: Rust公式ドキュメントにも使われているMarkdownベースのドキュメントビルダー。

出力形式: HTMLが中心だが、プラグインやPandocと組み合わせることでEPUB化も可能。

特徴:

  • 見出し、ナビゲーション、検索機能などが整っている。
  • Markdownで簡単に執筆。

見出し、ナビゲーション、検索機能などが整っている。

Markdownで簡単に執筆。

URL: https://rust-lang.github.io/mdBook/

  • 概要: 文書フォーマット変換ツールの定番。
  • 出力形式: Markdown → EPUB / PDF / DOCX など多数対応。
  • 特徴:

Markdownで執筆 → コマンド1つでEPUB出力。

CSSや表紙画像などの設定も可能。 - Markdownで執筆 → コマンド1つでEPUB出力。 - CSSや表紙画像などの設定も可能。 - URL: https://pandoc.org/

概要: 文書フォーマット変換ツールの定番。

出力形式: Markdown → EPUB / PDF / DOCX など多数対応。

特徴:

  • Markdownで執筆 → コマンド1つでEPUB出力。
  • CSSや表紙画像などの設定も可能。

Markdownで執筆 → コマンド1つでEPUB出力。

CSSや表紙画像などの設定も可能。

URL: https://pandoc.org/

  • 概要: AsciiDocを使って文書作成するためのツール。
  • 出力形式: HTML / PDF / EPUB3
  • 特徴:

Re:VIEWより柔軟な構文。

CLIだけでなく、GradleやRubyとも相性が良い。 - Re:VIEWより柔軟な構文。 - CLIだけでなく、GradleやRubyとも相性が良い。 - URL: https://asciidoctor.org/

概要: AsciiDocを使って文書作成するためのツール。

出力形式: HTML / PDF / EPUB3

特徴:

  • Re:VIEWより柔軟な構文。
  • CLIだけでなく、GradleやRubyとも相性が良い。

Re:VIEWより柔軟な構文。

CLIだけでなく、GradleやRubyとも相性が良い。

URL: https://asciidoctor.org/

  • 概要: 電子書籍の変換・管理ソフト。
  • 出力形式: EPUB / MOBI / AZW3 / PDFなど
  • 特徴:

既存のWordやPDF、HTMLをEPUBに変換。

編集機能も備えている。 - 既存のWordやPDF、HTMLをEPUBに変換。 - 編集機能も備えている。 - URL: https://calibre-ebook.com/

概要: 電子書籍の変換・管理ソフト。

出力形式: EPUB / MOBI / AZW3 / PDFなど

特徴:

  • 既存のWordやPDF、HTMLをEPUBに変換。
  • 編集機能も備えている。

既存のWordやPDF、HTMLをEPUBに変換。

編集機能も備えている。

URL: https://calibre-ebook.com/

用途 おすすめツール
技術書典などに出す本 Re:VIEW
軽量・簡単な技術メモ Pandoc / mdBook
デザイン自由度を重視 Asciidoctor
GUIでの操作がしたい Calibre
自動ビルドやCI連携 Re:VIEW + GitHub Actions や Pandoc
  • コードブロックの整形(フォントや背景色)
  • 数式(MathMLまたは画像)
  • ナビゲーション(目次、内部リンク)
  • フォントやルビなどの装飾

コードブロックの整形(フォントや背景色)

数式(MathMLまたは画像)

ナビゲーション(目次、内部リンク)

フォントやルビなどの装飾

必要であれば、Re:VIEWやPandocを使った具体的なEPUBビルド手順も案内できます。興味ありますか?

あなた:

bookwalkerでの表示に対応しているものに限定して

ChatGPT:

BookWalker での表示にしっかり対応している EPUB 作成ツールに限定すると、以下の 2つが特に現実的かつ信頼性が高いです:

  • 特徴:

元々は青空文庫向けだが、日本語縦書き・ルビ・画像配置・目次など、日本の電子書籍ストア(BookWalker含む)での表示に最適化されている。

拡張版(電書協仕様対応版)を使えば、電書協EPUBガイドライン(Ver 1.1/1.2)に準拠した出力ができる。 - 元々は青空文庫向けだが、日本語縦書き・ルビ・画像配置・目次など、日本の電子書籍ストア(BookWalker含む)での表示に最適化されている。 - 拡張版(電書協仕様対応版)を使えば、電書協EPUBガイドライン(Ver 1.1/1.2)に準拠した出力ができる。 - 対応内容:

電書協ガイドラインに準拠(BookWalker公式仕様に準拠)

ルビ、縦書き、禁則処理、目次、カバー画像、著者情報、奥付、フォント埋め込み(任意) - 電書協ガイドラインに準拠(BookWalker公式仕様に準拠) - ルビ、縦書き、禁則処理、目次、カバー画像、著者情報、奥付、フォント埋め込み(任意) - 拡張版URL: https://w.atwiki.jp/hmdev/ - 入力形式:

青空文庫形式テキスト or XHTMLテンプレート - 青空文庫形式テキスト or XHTMLテンプレート

特徴:

  • 元々は青空文庫向けだが、日本語縦書き・ルビ・画像配置・目次など、日本の電子書籍ストア(BookWalker含む)での表示に最適化されている。
  • 拡張版(電書協仕様対応版)を使えば、電書協EPUBガイドライン(Ver 1.1/1.2)に準拠した出力ができる。

元々は青空文庫向けだが、日本語縦書き・ルビ・画像配置・目次など、日本の電子書籍ストア(BookWalker含む)での表示に最適化されている。

拡張版(電書協仕様対応版)を使えば、電書協EPUBガイドライン(Ver 1.1/1.2)に準拠した出力ができる。

対応内容:

  • 電書協ガイドラインに準拠(BookWalker公式仕様に準拠)
  • ルビ、縦書き、禁則処理、目次、カバー画像、著者情報、奥付、フォント埋め込み(任意)

電書協ガイドラインに準拠(BookWalker公式仕様に準拠)

ルビ、縦書き、禁則処理、目次、カバー画像、著者情報、奥付、フォント埋め込み(任意)

拡張版URL: https://w.atwiki.jp/hmdev/

入力形式:

  • 青空文庫形式テキスト or XHTMLテンプレート

青空文庫形式テキスト or XHTMLテンプレート

  • 特徴:

技術書向けマークアップ。Re:VIEW EPUB Builderを使うことで、BookWalker向けのEPUB出力に対応。

電書協EPUBガイドラインに対応した設定が可能。 - 技術書向けマークアップ。Re:VIEW EPUB Builderを使うことで、BookWalker向けのEPUB出力に対応。 - 電書協EPUBガイドラインに対応した設定が可能。 - 対応内容:

目次、縦書き対応(設定次第)、ルビ、コードブロック、索引などを含むEPUB。

カスタムCSSを使ってBookWalker向けのレイアウト最適化も可能。 - 目次、縦書き対応(設定次第)、ルビ、コードブロック、索引などを含むEPUB。 - カスタムCSSを使ってBookWalker向けのレイアウト最適化も可能。 - 関連プロジェクト:

review-epubmaker(Re:VIEW公式)

review-template-ja - review-epubmaker(Re:VIEW公式) - review-template-ja - 入力形式:

Re:VIEW形式(.re、.txt類似構文) - Re:VIEW形式(.re、.txt類似構文)

特徴:

  • 技術書向けマークアップ。Re:VIEW EPUB Builderを使うことで、BookWalker向けのEPUB出力に対応。
  • 電書協EPUBガイドラインに対応した設定が可能。

技術書向けマークアップ。Re:VIEW EPUB Builderを使うことで、BookWalker向けのEPUB出力に対応。

電書協EPUBガイドラインに対応した設定が可能。

対応内容:

  • 目次、縦書き対応(設定次第)、ルビ、コードブロック、索引などを含むEPUB。
  • カスタムCSSを使ってBookWalker向けのレイアウト最適化も可能。

目次、縦書き対応(設定次第)、ルビ、コードブロック、索引などを含むEPUB。

カスタムCSSを使ってBookWalker向けのレイアウト最適化も可能。

関連プロジェクト:

  • review-epubmaker(Re:VIEW公式)
  • review-template-ja

review-epubmaker(Re:VIEW公式)

review-template-ja

入力形式:

  • Re:VIEW形式(.re、.txt類似構文)

Re:VIEW形式(.re、.txt類似構文)

  • Pandoc や mdBook でも EPUB 作成はできますが:

CSSや構造を手動調整しないと、日本語縦書きやルビに非対応。

そのままでは BookWalkerのEPUB検証ツールで弾かれる可能性が高い。 - CSSや構造を手動調整しないと、日本語縦書きやルビに非対応。 - そのままでは BookWalkerのEPUB検証ツールで弾かれる可能性が高い。

Pandoc や mdBook でも EPUB 作成はできますが:

  • CSSや構造を手動調整しないと、日本語縦書きやルビに非対応。
  • そのままでは BookWalkerのEPUB検証ツールで弾かれる可能性が高い。

CSSや構造を手動調整しないと、日本語縦書きやルビに非対応。

そのままでは BookWalkerのEPUB検証ツールで弾かれる可能性が高い。

ツール名 BookWalker対応度 推奨用途 入力形式
AozoraEpub3(拡張) ◎(実績多数) 小説・技術書混在OK 青空文庫テキスト or XHTML
Re:VIEW + 拡張 ◎(技術書典などで実績) 技術書・同人技術本に最適 Re:VIEW記法(.re)

必要なら、Re:VIEW や AozoraEpub3(拡張版)でのEPUB作成手順も案内できます。どちらか選んでいただければ、サンプル付きでご説明可能です。

あなた:

英語圏で主に使われているのは

ChatGPT:

英語圏で主に使われているEPUB作成ツール(特に技術書やプロフェッショナルな用途)には、以下のようなものがあります。これらはBookWalker向けではなく、Kindle、Apple Books、Kobo、Google Play Booksなど英語圏の主要プラットフォームをターゲットにしています。

  • 特徴: 最も広く使われる文書変換ツール。Markdown → EPUB 変換が可能。
  • 対応: EPUB 2 / EPUB 3 対応。CSSカスタマイズ可能。
  • 用途:

技術ブログ、ホワイトペーパー、技術書の初稿など。 - 技術ブログ、ホワイトペーパー、技術書の初稿など。 - 備考:

数式、コードブロック、画像、目次などに対応。

EPUB作成には追加のカスタマイズが必要なことがある。 - 数式、コードブロック、画像、目次などに対応。 - EPUB作成には追加のカスタマイズが必要なことがある。 - 公式: https://pandoc.org/

特徴: 最も広く使われる文書変換ツール。Markdown → EPUB 変換が可能。

対応: EPUB 2 / EPUB 3 対応。CSSカスタマイズ可能。

用途:

  • 技術ブログ、ホワイトペーパー、技術書の初稿など。

技術ブログ、ホワイトペーパー、技術書の初稿など。

備考:

  • 数式、コードブロック、画像、目次などに対応。
  • EPUB作成には追加のカスタマイズが必要なことがある。

数式、コードブロック、画像、目次などに対応。

EPUB作成には追加のカスタマイズが必要なことがある。

公式: https://pandoc.org/

  • 特徴: 英語圏の開発者に人気。シンプルな構文で高機能な文書が作れる。
  • 対応: asciidoctor-epub3 でEPUB 3を生成可能。
  • 用途:

開発ドキュメント、プログラマ向け書籍(O’Reilly Media等)。 - 開発ドキュメント、プログラマ向け書籍(O’Reilly Media等)。 - 備考:

Markdownよりも構造化された文書向け。 - Markdownよりも構造化された文書向け。 - 公式: https://asciidoctor.org/

特徴: 英語圏の開発者に人気。シンプルな構文で高機能な文書が作れる。

対応: asciidoctor-epub3 でEPUB 3を生成可能。

用途:

  • 開発ドキュメント、プログラマ向け書籍(O’Reilly Media等)。

開発ドキュメント、プログラマ向け書籍(O’Reilly Media等)。

備考:

  • Markdownよりも構造化された文書向け。

Markdownよりも構造化された文書向け。

公式: https://asciidoctor.org/

  • 特徴: Webベースのドキュメンテーションプラットフォーム。EPUBエクスポートあり(Pro版)。
  • 用途:

プロダクトマニュアル、APIドキュメント、チーム内技術資料。 - プロダクトマニュアル、APIドキュメント、チーム内技術資料。 - 備考:

デザインが美しい。HTMLベースでの配信が主流になっており、EPUB出力は補助的。 - デザインが美しい。HTMLベースでの配信が主流になっており、EPUB出力は補助的。 - 公式: https://www.gitbook.com/

特徴: Webベースのドキュメンテーションプラットフォーム。EPUBエクスポートあり(Pro版)。

用途:

  • プロダクトマニュアル、APIドキュメント、チーム内技術資料。

プロダクトマニュアル、APIドキュメント、チーム内技術資料。

備考:

  • デザインが美しい。HTMLベースでの配信が主流になっており、EPUB出力は補助的。

デザインが美しい。HTMLベースでの配信が主流になっており、EPUB出力は補助的。

公式: https://www.gitbook.com/

  • 特徴: 書籍執筆向けのWebアプリ(WordPressベース)。
  • 用途:

教育機関や出版社がEPUBやPDFを作成するのに利用。 - 教育機関や出版社がEPUBやPDFを作成するのに利用。 - 対応: EPUB 3 / PDF / MOBI / Web book - 備考:

UIベースで使いやすく、テーマ設定や章ごとの編集が可能。 - UIベースで使いやすく、テーマ設定や章ごとの編集が可能。 - 公式: https://pressbooks.com/

特徴: 書籍執筆向けのWebアプリ(WordPressベース)。

用途:

  • 教育機関や出版社がEPUBやPDFを作成するのに利用。

教育機関や出版社がEPUBやPDFを作成するのに利用。

対応: EPUB 3 / PDF / MOBI / Web book

備考:

  • UIベースで使いやすく、テーマ設定や章ごとの編集が可能。

UIベースで使いやすく、テーマ設定や章ごとの編集が可能。

公式: https://pressbooks.com/

  • 特徴: 作家・研究者向けの執筆支援ツール。EPUB出力機能あり。
  • 用途:

フィクション、ノンフィクション、論文、技術書初稿など。 - フィクション、ノンフィクション、論文、技術書初稿など。 - 対応:

EPUB 2/3、Kindle(.mobi)、PDFなどへの書き出し。 - EPUB 2/3、Kindle(.mobi)、PDFなどへの書き出し。 - 公式: https://www.literatureandlatte.com/scrivener/overview

特徴: 作家・研究者向けの執筆支援ツール。EPUB出力機能あり。

用途:

  • フィクション、ノンフィクション、論文、技術書初稿など。

フィクション、ノンフィクション、論文、技術書初稿など。

対応:

  • EPUB 2/3、Kindle(.mobi)、PDFなどへの書き出し。

EPUB 2/3、Kindle(.mobi)、PDFなどへの書き出し。

公式: https://www.literatureandlatte.com/scrivener/overview

ツール名 英語圏での技術書用途 備考
Pandoc ◎ 広範囲で使用 自動変換・CIに最適
AsciiDoctor ◎ O’Reillyなどで採用 出版にも対応
GitBook ○ ドキュメント中心 EPUB出力は補助的
Pressbooks ○ 教育・出版系 EPUB出力が前提
Scrivener △ 作家寄り 長文作成向け
ツール 対象 EPUB品質 コード・数式対応 備考
Pandoc 技術全般 Markdown → EPUB変換に最適
AsciiDoctor プログラマ・開発書籍 英語圏開発者に人気
GitBook 製品ドキュメント 美しいUI、Web配信中心
Pressbooks 教育・出版系 高等教育向けに多用
Scrivener 作家・論文 複雑な執筆工程に便利

必要であれば、Pandoc や AsciiDoctor を使った技術書向けEPUB作成の具体例も提供できます。ご希望ありますか?

あなた:

プログラミングコード色付けして表示できるものは

ChatGPT:

プログラミングコードをシンタックスハイライト付き(色付き)で表示できるEPUB作成ツールに限定すると、以下のツールが現実的かつ信頼性があります。

  • 対応: ✅ 色付きコード対応(多言語)
  • 方法: --highlight-style オプションでスタイル指定(例: tango, pygments, breezeDark など)
  • 使用例:

sh コピーする 編集する pandoc input.md -o output.epub --highlight-style=tango

  • 対応言語: Python, JavaScript, Java, C++, Ruby など数十種類
  • 補足:

EPUB内に

...
として出力され、CSSと連動。

カスタムCSSも指定可能。 - EPUB内に

...
として出力され、CSSと連動。 - カスタムCSSも指定可能。

対応: ✅ 色付きコード対応(多言語)

方法: --highlight-style オプションでスタイル指定(例: tango, pygments, breezeDark など)

使用例:

pandoc input.md -o output.epub --highlight-style=tango

対応言語: Python, JavaScript, Java, C++, Ruby など数十種類

補足:

  • EPUB内に
    ...
    として出力され、CSSと連動。
  • カスタムCSSも指定可能。

EPUB内に <pre>...</code>``</pre> として出力され、CSSと連動。

カスタムCSSも指定可能。

  • 対応: ✅ Rougeライブラリによるハイライト(Rubyベース)
  • 設定: source-highlighter=rouge を使えば、コードブロックに自動的にハイライト。
  • EPUB出力方法:

sh コピーする 編集する asciidoctor-epub3 -a source-highlighter=rouge sample.adoc

  • 対応言語: 多言語対応(公式一覧: https://rouge.jneen.net/)

対応: ✅ Rougeライブラリによるハイライト(Rubyベース)

設定: source-highlighter=rouge を使えば、コードブロックに自動的にハイライト。

EPUB出力方法:

asciidoctor-epub3 -a source-highlighter=rouge sample.adoc

対応言語: 多言語対応(公式一覧: https://rouge.jneen.net/)

  • 対応: ⚠️ シンタックスハイライトは 外部ツールとの連携で可能(デフォルトでは色なし)
  • 補足:

review-ext.rbやテンプレートをカスタマイズすれば Pygmentsやhighlight.jsなどと連携可。

電書協準拠にするには CSS調整が必須。

EPUB出力は review-epubmaker を使用。 - review-ext.rbやテンプレートをカスタマイズすれば Pygmentsやhighlight.jsなどと連携可。 - 電書協準拠にするには CSS調整が必須。 - EPUB出力は review-epubmaker を使用。 - 上級者向け

対応: ⚠️ シンタックスハイライトは 外部ツールとの連携で可能(デフォルトでは色なし)

補足:

  • review-ext.rbやテンプレートをカスタマイズすれば Pygmentsやhighlight.jsなどと連携可。
  • 電書協準拠にするには CSS調整が必須。
  • EPUB出力は review-epubmaker を使用。

review-ext.rbやテンプレートをカスタマイズすれば Pygmentsやhighlight.jsなどと連携可。

電書協準拠にするには CSS調整が必須。

EPUB出力は review-epubmaker を使用。

上級者向け

  • 対応: ✅ Web上では自動ハイライト。EPUBエクスポートでも反映されるが、Proプラン限定機能。
  • 補足:

Markdownで書くだけで色付き表示される。

ただし、Web UI中心なので開発者には不向きな場合も。 - Markdownで書くだけで色付き表示される。 - ただし、Web UI中心なので開発者には不向きな場合も。

対応: ✅ Web上では自動ハイライト。EPUBエクスポートでも反映されるが、Proプラン限定機能。

補足:

  • Markdownで書くだけで色付き表示される。
  • ただし、Web UI中心なので開発者には不向きな場合も。

Markdownで書くだけで色付き表示される。

ただし、Web UI中心なので開発者には不向きな場合も。

  • 対応: ⚠️ HTMLでは色付き可。EPUB出力には工夫が必要。
  • 補足:

mdBook自体はHTMLメイン。EPUB出力には pandoc 併用を推奨。

mdbook-pdf や mdbook-pandoc などで間接的に対応。 - mdBook自体はHTMLメイン。EPUB出力には pandoc 併用を推奨。 - mdbook-pdf や mdbook-pandoc などで間接的に対応。

対応: ⚠️ HTMLでは色付き可。EPUB出力には工夫が必要。

補足:

  • mdBook自体はHTMLメイン。EPUB出力には pandoc 併用を推奨。
  • mdbook-pdf や mdbook-pandoc などで間接的に対応。

mdBook自体はHTMLメイン。EPUB出力には pandoc 併用を推奨。

mdbook-pdf や mdbook-pandoc などで間接的に対応。

ツール 状況
AozoraEpub3 ❌ コード用の色付きなし(ルビや縦書きは得意)
Scrivener ❌ コードの色分けに非対応(装飾は可能)
Pressbooks △ CSS次第で可能(標準では未対応)
ツール コード色分け EPUB品質 コメント
Pandoc 一番簡単に色付きEPUBを作れる
Asciidoctor 高品質な構造とハイライト
Re:VIEW △(設定次第) 電書協対応可能、上級者向き
  • Markdownで書いて --highlight-style を付けるだけ。

Markdownで書いて --highlight-style を付けるだけ。

  • 技術書向けに美しく整った構造+色付きコード。

技術書向けに美しく整った構造+色付きコード。

必要であれば、Pandoc でシンタックスハイライト付きの EPUB を作る Markdown サンプルとコマンド例を提供できます。やってみますか?

あなた:

node.jsで動作するものに限定して

ChatGPT:

Node.js 環境で動作し、プログラミングコードをシンタックスハイライト付きで EPUB を作成できるツールに限定すると、候補はかなり絞られます。ただし、組み合わせ(Markdown + ハイライト + EPUB変換)で構成可能です。

以下が、Node.jsベース or Node.jsで動作可能な構成です。

  • 構成:

Markdownパーサ:markdown-it

シンタックスハイライト:highlight.js

EPUB生成:epub-gen(Node.js用EPUB出力ライブラリ) - Markdownパーサ:markdown-it - シンタックスハイライト:highlight.js - EPUB生成:epub-gen(Node.js用EPUB出力ライブラリ) - 特徴:

すべてNode.js上で完結。

コードブロックは highlight.js が HTML+スタイルを生成。

CSSを調整すれば、EPUBビューアで色付き表示可能。 - すべてNode.js上で完結。 - コードブロックは highlight.js が HTML+スタイルを生成。 - CSSを調整すれば、EPUBビューアで色付き表示可能。 - 使い方の流れ:

bash コピーする 編集する npm install markdown-it highlight.js epub-gen

サンプルコード(簡略版):

js コピーする 編集する const MarkdownIt = require('markdown-it'); const hljs = require('highlight.js'); const { Epub } = require('epub-gen');

const md = new MarkdownIt({ highlight: (str, lang) => { if (lang && hljs.getLanguage(lang)) { return <pre><code class="hljs ${lang}">${hljs.highlight(str, { language: lang }).value}</code></pre>; } return <pre><code class="hljs">${md.utils.escapeHtml(str)}</code></pre>; } });

const content = md.render(`

Sample

```javascript console.log("Hello, EPUB!"); ``` `);

new Epub({ title: "Code Highlight EPUB", author: "Your Name", content: [ { title: "Chapter 1", data: content } ], css: pre { background: #f0f0f0; padding: 1em; } code.hljs { color: #333; } .hljs-keyword { color: #0077aa; font-weight: bold; } .hljs-string { color: #dd1144; } }).promise.then(() => console.log("EPUB created!"));

  • サンプルコード(簡略版):

js コピーする 編集する const MarkdownIt = require('markdown-it'); const hljs = require('highlight.js'); const { Epub } = require('epub-gen');

const md = new MarkdownIt({ highlight: (str, lang) => { if (lang && hljs.getLanguage(lang)) { return <pre><code class="hljs ${lang}">${hljs.highlight(str, { language: lang }).value}</code></pre>; } return <pre><code class="hljs">${md.utils.escapeHtml(str)}</code></pre>; } });

const content = md.render(`

Sample

```javascript console.log("Hello, EPUB!"); ``` `);

new Epub({ title: "Code Highlight EPUB", author: "Your Name", content: [ { title: "Chapter 1", data: content } ], css: pre { background: #f0f0f0; padding: 1em; } code.hljs { color: #333; } .hljs-keyword { color: #0077aa; font-weight: bold; } .hljs-string { color: #dd1144; } }).promise.then(() => console.log("EPUB created!"));

構成:

  • Markdownパーサ:markdown-it
  • シンタックスハイライト:highlight.js
  • EPUB生成:epub-gen(Node.js用EPUB出力ライブラリ)

Markdownパーサ:markdown-it

シンタックスハイライト:highlight.js

EPUB生成:epub-gen(Node.js用EPUB出力ライブラリ)

特徴:

  • すべてNode.js上で完結。
  • コードブロックは highlight.js が HTML+スタイルを生成。
  • CSSを調整すれば、EPUBビューアで色付き表示可能。

すべてNode.js上で完結。

コードブロックは highlight.js が HTML+スタイルを生成。

CSSを調整すれば、EPUBビューアで色付き表示可能。

使い方の流れ:

npm install markdown-it highlight.js epub-gen
  • サンプルコード(簡略版):

js コピーする 編集する const MarkdownIt = require('markdown-it'); const hljs = require('highlight.js'); const { Epub } = require('epub-gen');

const md = new MarkdownIt({ highlight: (str, lang) => { if (lang && hljs.getLanguage(lang)) { return <pre><code class="hljs ${lang}">${hljs.highlight(str, { language: lang }).value}</code></pre>; } return <pre><code class="hljs">${md.utils.escapeHtml(str)}</code></pre>; } });

const content = md.render(`

Sample

```javascript console.log("Hello, EPUB!"); ``` `);

new Epub({ title: "Code Highlight EPUB", author: "Your Name", content: [ { title: "Chapter 1", data: content } ], css: pre { background: #f0f0f0; padding: 1em; } code.hljs { color: #333; } .hljs-keyword { color: #0077aa; font-weight: bold; } .hljs-string { color: #dd1144; } }).promise.then(() => console.log("EPUB created!"));

サンプルコード(簡略版):

const MarkdownIt = require('markdown-it');
const hljs = require('highlight.js');
const { Epub } = require('epub-gen');

const md = new MarkdownIt({
  highlight: (str, lang) => {
    if (lang && hljs.getLanguage(lang)) {
      return `<pre><code class="hljs ${lang}">${hljs.highlight(str, { language: lang }).value}</code></pre>`;
    }
    return `<pre><code class="hljs">${md.utils.escapeHtml(str)}</code></pre>`;
  }
});

const content = md.render(`
# Sample

\`\`\`javascript
console.log("Hello, EPUB!");
\`\`\`
`);

new Epub({
  title: "Code Highlight EPUB",
  author: "Your Name",
  content: [
    {
      title: "Chapter 1",
      data: content
    }
  ],
  css: `
    pre { background: #f0f0f0; padding: 1em; }
    code.hljs { color: #333; }
    .hljs-keyword { color: #0077aa; font-weight: bold; }
    .hljs-string { color: #dd1144; }
  `
}).promise.then(() => console.log("EPUB created!"));
  • 特徴:

Node.jsでMarkdownからEPUBを生成。

highlight.js を組み込んだテンプレートを使えば色付き可能。 - Node.jsでMarkdownからEPUBを生成。 - highlight.js を組み込んだテンプレートを使えば色付き可能。 - URL: https://www.npmjs.com/package/md-to-epub - 備考:

内部的にはHTML変換後、epub-genなどと同様の仕組み。 - 内部的にはHTML変換後、epub-genなどと同様の仕組み。

特徴:

  • Node.jsでMarkdownからEPUBを生成。
  • highlight.js を組み込んだテンプレートを使えば色付き可能。

Node.jsでMarkdownからEPUBを生成。

highlight.js を組み込んだテンプレートを使えば色付き可能。

URL: https://www.npmjs.com/package/md-to-epub

備考:

  • 内部的にはHTML変換後、epub-genなどと同様の仕組み。

内部的にはHTML変換後、epub-genなどと同様の仕組み。

ツール名 状況
Pandoc ❌ Haskell製。Node.js不可
AsciiDoctor ❌ Ruby製(Node.jsで動かせない)
Re:VIEW ❌ Ruby製
方法・ツール名 コードハイライト EPUB品質 備考
markdown-it + highlight.js + epub-gen 自由度が高く、Node.js完結
md-to-epub △(テンプレート次第) 手軽にMarkdown → EPUB
  • 上記構成で使える テンプレート、CSS例、コマンドライン化スクリプト も提供できます。
  • highlight.js のテーマ適用や、目次・カバー画像などの追加にも対応可能です。

上記構成で使える テンプレート、CSS例、コマンドライン化スクリプト も提供できます。

highlight.js のテーマ適用や、目次・カバー画像などの追加にも対応可能です。

ご希望があれば、フルサンプルのプロジェクト構成を提示しますか?

あなた:

HonKitでのEPUB作成手順

ChatGPT:

HonKit(旧 GitBook v3 互換のオープンソースクローン)を使って、コードハイライト付きのEPUBを作成する手順は以下の通りです。

  • GitBook v3 ベースの Node.js 製ドキュメントツール。
  • Markdown で記述 → HTML / EPUB / PDF / MOBI を生成。
  • highlight.js によるシンタックスハイライトがデフォルトで有効。
  • EPUB 生成は honkit epub コマンドで可能。

GitBook v3 ベースの Node.js 製ドキュメントツール。

Markdown で記述 → HTML / EPUB / PDF / MOBI を生成。

highlight.js によるシンタックスハイライトがデフォルトで有効。

EPUB 生成は honkit epub コマンドで可能。

npm install -g honkit

npx での実行も可能ですが、グローバルインストールが楽です。

mkdir mybook
cd mybook
honkit init
  • これで以下のファイルが生成されます:

css コピーする 編集する . ├── README.md ← 表紙・前書きに相当 └── SUMMARY.md ← 目次定義ファイル(章構成)

これで以下のファイルが生成されます:

.
├── README.md      ← 表紙・前書きに相当
└── SUMMARY.md     ← 目次定義ファイル(章構成)

例:chapter1.md を追加

# chapter1.md
## サンプルコード

function hello() { console.log("Hello, EPUB!"); }






# SUMMARY.md
* [はじめに](README.md)
* [第1章: サンプルコード](chapter1.md)
honkit epub ./ ./output.epub
  • ./:ソースディレクトリ
  • ./output.epub:出力ファイル

./:ソースディレクトリ

./output.epub:出力ファイル

  • output.epub が生成されます。
  • EPUBビューワ(例:Thorium Reader や Calibre)で確認可能。

output.epub が生成されます。

EPUBビューワ(例:Thorium Reader や Calibre)で確認可能。

HonKitは内部的に highlight.js を使用しているため、デフォルトでコードに色が付きます。 変更したい場合は book.json にテーマを指定するか、カスタムCSSを追加します。

例:book.json でカスタムCSSを指定する

{
  "styles": {
    "website": "styles/website.css",
    "epub": "styles/epub.css"
  }
}

styles/epub.css を作成して pre, .hljs-keyword, .hljs-string などを定義すればOK。

項目 内容
入力形式 Markdown(GitBookスタイル)
EPUB出力 honkit epub
コード色付け デフォルトで highlight.js 対応
カスタマイズ book.json と CSSで可能
OS対応 Node.jsが動作すればOK(Win/Mac/Linux)
  • テンプレート付きのスターターZip
  • カバー画像付きEPUBの作り方
  • GitHub Actionsでの自動EPUB化

テンプレート付きのスターターZip

カバー画像付きEPUBの作り方

GitHub Actionsでの自動EPUB化

…なども案内できます。必要ですか?

[blog:g:11696248318754550880:banner]