マークダウンからEPUBを自作してBOOXで見られるようにするまでのメモ。
はじめに
昨年末に論文読みのためにBOOXを買った。(お金を払って論文を読みにいくストロングスタイル)
BOOX Nova Air買った(論文読みへの課金…のつもりがマンガ読み端末になってる)https://t.co/RRhZUPrDCd
— 雛形 (@hinahypersonica) 2021年12月26日
購入したBOOX Nova Airの画面サイズは公称7.8インチであって、A4サイズが想定されたPDFフォーマットの論文を読むにはやや画面が狭いなと感じる。 ツイートに書いたマンガ読みに活用するのはさておき、論文そのものではなく論文のまとめを自作して、それを表示すれば良いだろうと考えた。 ちょうど最近論文の読み方について盛り上がっていた(独自調べ)こともあり、まとめを自作するための知見は揃っている。
BOOX Nova Airの公式サイトいわくEPUBにも対応しているとのことで、せっかくなのでこのフォーマットを使えると便利だろうなと想像した。
- epub作成で思い当たるのは組版ソフトRe:VIEWだけど、普段のテキストはマークダウンで記録していて、Re:VIEWはマークダウンともまた違った文法を持っている。いまから新しい文法を覚えるのは学習コストが大きいし混乱しそう。
- かつ、やりたいことは論文まとめであって本を作るわけではないので、そんなに大掛かりな機能は必要としていない。
- オンラインで変換できるサービスにでんでんコンバーターがあり、サイトのサブタイトルにはJust another 'Markdown to EPUB 3' converter.とあり、これは機能的には満足していそうだ。ただしオンラインサービスということで、情報の取り扱いに少し気を遣うところがあったので、一旦は保留。
- 新たに文法を覚えることなく、普段のマークダウンの記録から直接epubを作成できるものはないかな…と探していたところに、Cheepubというツールを見つけた。少し古いけれども作者による紹介記事もある。いわくRe:VIEWの機能限定版とのことだけど、やりたいことが十分にできそうだったのでこれを使ってみることにした。
ただしCheepubはRubyを使ったツールとのこと、僕はRubyについてはほぼ全くわからないので、どうするか。
CheepubでEPUBを作成する
Rubyを普通にインストールしたのちgem install cheepub
とすればツールは使えるようになりそうだったけど、ここはDockerでやってみることにした。
2行だけ書いた以下のDockerfileを使ってイメージを自作する。
Rubyのバージョン指定で2.7としている理由は後述。
FROM ruby:2.7 RUN gem install cheepub
このファイルのある位置でdocker build -t ruby27-cheepub .
としてイメージを作成する。
Dockerは半年以上触ってなかったので完全に感覚が失われていた。
マンガでわかるDocker🐳のおかげで早めに復帰できたので大変ありがたい。
作成したイメージを使って以下のコマンドでEPUBファイルoutput.epub
を生成する。
docker run --rm -v $(pwd):/work ruby27-cheepub /bin/sh -c "cd work && cheepub --title Researchat1 --author hinagata -o output.epub research_on_researchat1.md"
- 先人の知恵いわく、
;
でコマンドを連結する場合、コマンド1がエラーであっても、次のコマンドが実行されるが、&&
で連結した場合はエラーが起きた時点で動作が停止する。とのことで、実行コマンドは&&
で連結するのが良さそうだ。 - オプション
--title
と--author
でそれぞれタイトルと著者を設定する。 - オプション
-o
で出力ファイル名を指定する(指定無しでbook.epub
になる)。 - 引数としてマークダウンのファイル名を指定する。
- ある程度の分量があるテキストデータとして、先日ポストしたResearchatおすすめ記事紹介(前編)の草稿を使った。普段のブログ記事はマークダウンで原稿を書いているので、ブログに残っている過去の資産も比較的容易にEPUBに変換できる。
- 実行環境としてDocker Desktop on Windowsを使っている。Windowsからdockerを実行するとエラーが出て、WSL2から実行してやらないとうまくいかなかった。ここはよくわからない。
- バージョン指定無し(=最新版)の
ruby
1ではcheepub実行時にエラーが出てうまくいかなかったので、ruby:2.7
2を使ったところうまくいった。他のバージョンについては未調査。
作ったepubファイルをEdgeで確認しようとしたら、「Microsoft Edge」のEPUB形式電子書籍のサポートが終了とのことで、まったく知らなかったのでWindows上で確認するすべがない。
BOOXにはできのよいBOOX Dropアプリ3が付属していて、このアプリを使うことでPCやタブレットから容易にファイルが送受信できる。
先人の知恵によればWSLにあるファイルはWindowsからだと\\wsl$
の下に見えるので、うまく探し出して転送する。
送信したepubファイルをBOOXで表示した様子:
得られた知見は以下の通り:
- epubファイルの表示方法はBOOX上でかなり細かく設定できるものの、本文のフォントが明朝体(アルファベットではセリフ体)から変えることができなかった。いまのところそこまで困っていないけれど、変えられるならば変えてみたい。
- なおコードブロックのアルファベットはきちんと等幅になっていた。
- VSCodeではTable of Contentsを簡単に挿入できるが、目次はCheepubによって自動生成されるので入れなくて良い。
- 脚注はページ下ではなく記事末尾にまとめて表示される。しかし脚注の数字をクリックすることでポップアップとして内容を読むことができる。図は冒頭パラグラフの末尾にある脚注1を表示した様子(全エピソード数は14ではなく13が正しいです…)
おわりに
Cheepubを使ってマークダウンからEPUBを自作することができた。今はお試しでブログ記事を転送してみたところだけど、今後は論文読みとそのまとめにも活用していきたい。
EPUB自作に至るまでにはCheepubはもとより、Dockerの使い方、BOOX購入レビューをはじめとする多くの先人の知恵を参考にした。ここに記して感謝の意を表したい。■