2011-12-03(土) [長年日記]
■ yomoyomo飲み会
yomoyomoさんの上京に合わせてなんとなくつながりのある人たちで集まる飲み会へ参加、鴨鍋を食べた(@勘九朗*1)。1年ぶりだ。
店が地下にあることに気づいた参加者たちが、階段を下りながら「地下だ……」「地下か……」といっせいにつぶやいていたのが面白かった。あんのじょうソフトバンクは電波が入りませんでした。わりと早めにスマフォ化した人たちが多いから、みんなキャリアがSBMなんだよね(笑)。もっともEMOBILEも入らなかったので、どこを使っていてもたいした違いはなかったが。ちなみに料理は美味しかったし、電波入らないおかげでちゃんと話に集中できたので、むしろ地下で良かったのではないでしょうか。
つい先日刊行になった「ケヴィン・ケリー著作選集 1」の序文を書いたyomoyomoさんと、達人出版会の高橋さんがいたこともあって、自分の電子書籍端末でそれを表示させて見せ合うなど。あとは編み物自慢とか猫自慢とか小町ウォッチャーの生態とか。
*1 まったく無意味な100% Flashというすごいサイトだな、ここ
2011-12-02(金) [長年日記]
■ Herokuにkindlegenコマンドを入れるgemを作った(こんどは成功)
昨日作ったgemはけっきょくHerokuでは役に立たなかったんだけど、makeされたあとの作業ファイルまでは消されないようなので、そこに残ったkindlegenを使えばなんとかなりそうである。
というわけで、module Kindlegenにモジュールファンクションを定義して、環境にかかわらず使えるようにしてみた:
どっちみちRubyスクリプトの中から使うのが目的なんだから、これでいいのだ:
require 'kindlegen' Kindlegen.run( 'sample.opf', '-o sample.mobi' )
よし、これで野望にまた一歩。
2011-12-01(木) [長年日記]
■ Herokuにkindlegenコマンドを入れるgemを作った(けど失敗)
たとえばHerokuでKindle向けにドキュメント配信をするようなサービスを動かすとして、ネックになるのが.mobiファイルの生成をどうするかである。考えつく方法として、
- Calibreが抱えているライブラリを持ってくる
- メールでPersonal Documentsに送信してうまく変換されることを祈る
- なんとかしてkindlegenコマンドをインストールする
Calibreのmobi変換はかなり優秀なので、これが一番スマートだとは思うけど、たしかPythonなので最後の手段。Personal Documentsの変換は品質に問題があるのでできれば避けたい。ということで、Herokuにkindlegenコマンドをインストールするという方向を探ってみることに。
Herokuへ何かをインストールする方法は、「git push」か「bundle install」しかない(たぶん)。しかしGitHubにリポジトリを公開することを考えると、そこにAmazonの所有物であるkindlegenを含めることはできないので、「git push」はいきなり除外。いちおうサービスの起動直後にtarballをダウンロードして展開することでkindlegenコマンドを取り出すという技もあるし、やってみたらできたのだけど(そういうことを狙ったと思われるコードはGitHubでも見つけられる)、配置先がtmpdirにならざるを得ないのでちょっとなー、という感じ。
ということで、gemを作ってその中でなんとかという方法が残った(前置きが長い)。
で、gemの作り方を調べて、拡張ライブラリを作る過程でなんとかつっこめそうだとわかり、適当なMakefileを吐き出すextconf.rbを書いてみたのがこれ:
これでインストールがこんな感じで簡単になった:
% gem install kindlegen
もちろんGemfileに書いておけばbundlerが入れてくれるようになるので、Herokuでも動くはず!
……と思ってやってみたらダメ。いや、少なくともgitの出力を見ている限りではインストールは成功しているようだ。しかし、サービスの中からkindlegenコマンドを起動してみると見つからないという。「heroku run console」でherokuに入り、binの下を探してみるとない。えっ、なんで!?
で、いろいろ調べてみると、インストール直後にbinの下から一部のコマンド(bundleとか)を除いて削除するプロセスが走っているようだとわかる。ついでにconsoleからファイルを作っても、logoutのタイミングで消される。ぬー、やるなHeroku(笑)。
ちょっと別の方法を探さないとなー。いちおうmobiファイルを生成するrubyなライブラリもあるみたいだから、ちょっとためしてみるか。ちなみにkindlegen gemは、Heroku抜きにしてもそれなりに便利なので個人的にはいいもの作った気分ではある。tarballでしか配布されていないツールをインストールする方法としてアリだね、これは。