青空文庫変換スクリプト
青空文庫に関しては、今更ここに説明を書く必要もないと思うけれど、著者没後50年以上が経過した小説・随筆等を電子化、公開している。
僕がどのようにこの青空文庫を利用しているか、というと、基本的には Windows Mobile で動作する PHS 上で『青空子猫』を使って読んでいるのだが、じっくり読みたい場合には、やはりちゃんとしたフォントで PDF 化して読みたい、ということになる。
青空文庫のフォーマットは、ルビ等をマークアップするかたちになっているので、XHTML や LaTeX 形式への自動変換が原理的には可能である。LaTeX 形式への変換は、OTF パッケージの作者である齋藤修三郎氏が『青空文庫を読もう!』で公開しているパッケージに収録されている ruby スクリプト aozora.rb で行うことができる。
しかし、齋藤氏はこのパッケージを最近はメンテナンスしておられないようである。無論、それは何も問題ないし、批判されるようなことでもないのだけど、今現在、僕の手元の環境でこのパッケージを使おうとすると、ruby1.8 用に書かれたスクリプトを 1.9 用に書き直す必要がある。まあ、書き直すと言っても、m17n 化されたのに合わせて、日本語のコード変換等に関わる箇所を削るだけで問題なくいけるはず……と思っていたのだが、少々甘かったようだ。
齋藤氏のスクリプトで変換を行う際、
、漢字《かんじ》のように、句読点の直後から始まる漢字文字列に対してルビがふられている(お分かりと思うけれど、ルビをふる漢字の直後に《》で囲んでルビを書く書式である)場合、
、\ruby{漢字}{かんじ}と変換されるべきところが、
、漢\ruby{字}{かんじ}と変換されてしまうのだ。
この変換は、ruby の売りのひとつである強力なパターンマッチングを駆使して行われているのだが、僕は普段は ruby を使わない。う゛〜……と唸りながら、変換ルールの書き換えを試みていたのだが、あ゛ー、もうやっとれんぞ! と、Twitter で齋藤氏に直接お聞きした。僕も自分でプログラムを書く関係上よく分かるのだけど、メンテをやめて大分経過してから、そのソースの解析を行わなければならない、というのは、これは書いた本人であっても多大なる苦痛を伴う行為である。それを知る者としては、氏に任せっぱなしというわけには断じていかない。うーん……とソースを睨み、メモをして……しかし作業は進まない。
改めて google the Big Brother にお伺いをたてると、『達人出版会日記』で該当部分を書き換えたスクリプトに言及されているのを発見した。変換ルールに関わる部分を github で公開されているスクリプトからいただいて移植すると……おお、これで問題なくできるじゃないか! Twitter の方をチェックすると、齋藤氏もまさにそのスクリプトのことに言及されていた。齋藤氏には、いきなり不躾な質問でお手を煩わせることになってしまい、本当に申し訳ないことをしてしまった。ここに改めて謝意を表する。
……というわけで、昨夜から、頭の中でタスクの何割かを占めていたジョブを片付けることに成功して、今は気分がよろしい。いや、そもそも何のために青空文庫を PDF 化しようとしていたか、というと、宮沢賢治の『猫の事務所……ある小さな官衙に関する幻想……』をたまたま読んで、これに出てくる
http://www.fugenji.org/~thomas/pdf/nekono_jimusho.pdf