未来はあまりに遠いし、おれはもう待てない

SF小説やプログラミングの話題を中心とするフジ・ナカハラのブログ

マークダウンから EPUB を生成するコマンドラインツール Makimono をつくった

使い方

日本語の README がリポジトリにあるのでそちらを見てください。

なぜつくったか

これまでは小説を Jekyll のフォーマットで書いて Jekyll + jekyll-build-ebook で電子書籍を生成していた。 しかし、Jekyll は静的サイトジェネレータであり、電子書籍だけを生成するには不要な機能が多い。 そこで、Makimono では電子書籍の生成だけを目的に、よりシンプルなフォーマットで小説を書けるようにすることを目指した。

類似のツール

でんでんコンバーター

マークダウンを電子書籍に変換する Web アプリケーション。 Makimono の使い方がわからない、Makimono では機能が足りない、という場合はこちらを使うのがよい。 ただ、プログラムから利用する方法が提供されていないため、CI で電子書籍の作成を自動化したいという私の用途には合わなかった。 Makimono のインターフェースもでんでんコンバーターを参考にしたところが大きい。

Cheepub

1ファイルのマークダウンから EPUB や PDF を生成できるコマンドラインツール。 1ファイルで手軽にやりたいというときはこちらがおすすめ。 私の場合は、複数ファイルに分けて書きたいのと、マークダウンの変換に FujiMarkdown を利用しかったというのがあり、採用を断念した。

Makimono + GitHub Actions による電子書籍のリリース自動化

小説のリポジトリに以下のような .github/workflows/ebook.yml を追加して、tag を push すると EPUB をビルドして GitHub Releases にアップロードするようにしている。

on:
  push: [ tags ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7
      - run: gem install makimono
      - run: makimono build
      - uses: actions/create-release@v1
        id: create_release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
      - uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: out/book.epub
          asset_name: ${{ github.event.repository.name }}.epub
          asset_content_type: application/epub+zip