アペフチ

『APIデザインケーススタディ』を、ソースコードのシンタックスハイライトしながら読む

昨日(EPUB書籍に正誤表を反映する(Rubyスクリプトで)、またはEPUBのパッチプログラムの試み)に引き続き「ちゃんと正誤表を公表してくれる著者と、DRMをかけない素のEPUBファイルを配信してくれる出版社があればこそ」シリーズの第二弾(第三弾は多分無い)。

以前Dockerエキスパート養成読本を、ソースコードのシンタックスハイライトしながら読むという日記を書いたが、その時のスクリプトを修正して、『APIデザインケーススタディ』にも対応させた。

元々の本は(PDF版から類推するに)ソースコードの所も白黒のようだけど、こうしてハイライトして読むことができるようになる。

RubyのコードがシンタックスハイライトされているPythonやPerlも含めソースコードがシンタックスハイライトされている

スクリプトは前と同じ所に置いてある:
https://gist.github.com/KitaitiMakoto/0779a34fd74bae96468f

クローンなりダウンロードなりして

$ ruby rougify-gdp-book.rb path/to/api-design.epub

と実行すればよい。

これで、ようやく本を読む準備が整った。

ともあれ、こんなことができるのも、ちゃんと正誤表を公表してくれる著者と、DRMをかけない素のEPUBファイルを配信してくれる出版社があればこそ。感謝したい。

EPUB書籍に正誤表を反映する

である。


スクリプトの修正にあたって、プログラミング言語の推測に苦労した(ハイライトに使っているRougeはshebangを見るくらいしかしてくれない)。主な方法は、「そのソースコードが含まれる節の見出し(h2h3)と言語の対応表を作る」ということになった。「見出しにシステムコールという語が含まれていればCだろう」という具合である。

これも中々うまい法則を見付けられず、結局一つ一つの見出しとcode要素を見て手作業で対応表を作った。途中、「こんなのは人間の仕事ではない!」と思ってgithub-linguistの使用も検討したが、Gitリポジトリー全体でなく個別のテキストに対して使う方法がすぐに分からなかったのでやめた。

技評の方で<code>要素のclass属性やdata-*属性で言語名を書いておいてくれると、一番楽なんだけどなあ。


ところで、確認中に、EPUB版の索引が全然機能しないことに気付いたんだけど、これも本文へのリンクにするスクリプトを配ったら喜ばれるものだろうか……。