数年前から、外出先で man ページを読めたらいい暇つぶしになるだろうなと思っていた。 iPhone の Safari から http://www.linux.or.jp/JM/index.html を眺めてみたことはあったが、ディスプレイが小さすぎて辛かった。
しかしいまやおれの手元には Kindle がある。 Kindle なら快適な man 閲覧環境になるんじゃないかなと思って試してみたら思った通りいい感じだった。
KindleGen というプログラムが配布されていて、これを使うと HTML ファイルを .mobi 形式に変換できる。幸い man2html というプログラムも存在するので、これを組み合わせて man2mobi というプログラムを作ってみた。
http://github.com/kyanny/man2mobi/blob/master/man2mobi
実行すると引数で指定した man ページを .mobi 形式に変換したファイルがカレントディレクトリにできる。先に KindleGen を手に入れて展開し kindlegen プログラムをパスの通ったところへ置いておく必要がある。あと man2html は Mac OSX には標準で入っていないようだ。 MacPorts で手に入るものでも動くのかどうかはまだ試してない。
$ man2mobi perl # => perl.mobi ができる
冒頭の写真はできあがった .mobi ファイルを Kindle で表示してみた様子。文字サイズは最小にしてある。文字サイズを大きくすると折り返しだらけになって字下げしてある行が読みづらかった。
ちなみに Kindle を購入すると専用のメールアドレスが発行され、このアドレス宛にファイルを添付してメールを送ると Kindle に直接ファイルを転送できる (Sending Personal Documents to Kindle)。これがやりたかったのだけど、 uuencode して送ってもうまく転送されず。残念。続きはまた今度やろう。
追記
メールで遅れなかったのにはいくつか理由があって、
- Manage Your Kindle のページで送信元メールアドレスを許可していなかった
- uuencode | mail で添付すると MIME 関連のメールヘッダがつかないので添付ファイルが認識されない
特に後者には悩まされた。一度 Gmail に送って転送すればうまくいったのでフィルタで転送させようとしたが、認証コードの壁をこえられず断念した。 Gmail から Gmail に転送して、メールのソースを見比べてあたりをつけた。 python で添付ファイルつきメールを送るプログラムを拾ってきていじったりしたが、結局 mutt(1) を使った。
コマンドラインからメールで送れるようになったので、 man2kindle というのも作った(というか symlink)もともとこれが欲しかったのだけどメール送信機能を作れてないので man2mobi という名前にしていた。
$ man2kindle -f foo@example.com -t bar@example.com grep # => bar@example.com に From: foo@example.com で grep.mobi を添付したメールを送る
From: を偽装すると Manage Your Kindle ページでいちいち許可せずに済むので @gmail.com とか普段使ってるのを一個許可してしまって -f でそれを指定するのが楽ちん。 envelope_from は偽装しなくても平気だったので From: しかみてないのだと思う。
なんとなく Github Pages も作ってみた。 http://kyanny.github.com/man2mobi/
あとやりたいことは、必要なプログラムがなかったらその旨メッセージを出すのと、 POD を英語で書きたい。それから、インストールしなくても使えるようにブラウザから使えるウェブサイトを立ち上げたいけど、 KindleGen のライセンスに抵触したりしないかが心配。流し読みした感じだと、 KindleGen そのものを再配布したりしなければ大丈夫そうだったけど、あまり自信がない。