2010-12-20(月) [長年日記]
■ ホーガンの「巨人三部作」を読み返した
J・P・ホーガンが7月に他界してから、なにか読み返そうと思っていたんだけど、SFからだいぶ離れていたのでなかなか腰があがらず、やっと自炊してKindleに入れることで読む気になった。ターゲットはもちろん、「巨人三部作」*1。
読み始めてしまえばそう簡単には止められないくらい面白いのはわかっているわけで、並行して他の本を読みつつも*2、ついついこっちに手が伸びる。最初の翻訳が出てからほぼ30年がたっているとは思えないくらい古びてない*3。やはり傑作中の傑作だねぇ、この3冊は。
もっとも学生だった当時とは違って、目に付くものもいろいろ違っているわけで、古典を読み返す面白さもまた発見だった。なかでも「巨人たちの星」にはホーガンが後年傾倒する「社会科学SF」の萌芽(というかそのまんま?)があって、ああ、もしかすると最初からこっちがやりたかったのかもねぇ、向いてなかったけど……などと思ったりした。初めて読んだときはそんなこと気にもならなかったのにね。でもまぁ「SFは"人間"は描かないかも知れないが"人類"は描く」の王道を行く、骨太でホンモノのSFであることに変わりはない。
「もう絶版なんだろうなぁ」と思って本屋を覗いたら平積みになっていた。追悼の意味かどうかわからないけど、増刷になっているみたいだ。変な萌え系に走らず当時のままの表紙もいいですな。もちろんAmazonでも新品が買える。
2010-12-19(日) [長年日記]
■ わさます忘年会だった
わさます忘年会だったので久しぶりに秋葉原に向かった。駅ビルがAtreになってリニューアルオープンしてから初めてのアキバなので、アトレ口から降りてみたんだけど、およそアキバに似つかわしくないおしゃれビルになってた。中を歩いてるカップルまでなんか雰囲気違うし! ……などとビビりながら歩いていたんだが、聞こえてきた館内アナウンスが見事にロリ声で安心した(笑)。地元(?)で調達したんだな、きっと。
会場は10ヶ月ぶりのKIICHIで、こっちもリニューアル後はじめて。店員がメイドさん(しかも2人体制)になっててびっくりしたけど、別に変なロールプレイを強制されるわけもなく、いたって普通の対応でした。まぁ、ノリはアキバ的なんだけど。リニューアルでテーブルレイアウトなんかは変わったけど、ポスター類などの方向性に変わりはなく、相変わらずその方面の人には安心できる空間だった。
宴会後はなぜかみんなでまだ開いていたアキヨドに繰り出して、お互いに散財同調圧力をかけあうという恐ろしい二次会に。キネクトやらトルネやらが買われておりました。おれもうっかりレンズとか買わなくてよかった……。
2010-12-17(金) [長年日記]
■ 自炊PDF制作をrake化してみた(途中)
目的と手段が入れ替わってる自炊本シリーズ第N段。
自炊本制作はこないだベストプラクティスとか書いた以上、セッティングはだいたい詰められたんだけど、まだ作業が最適化されてないのが気に食わない。具体的には余白をきれいに除去するためにpdf2kindleを何度も実行してパラメタを詰めるところね。PGM→PNG化の処理を繰り返すために、スクリプトの特定の関数だけを実行したいわけだ。
そのためにいちいちスクリプトをいじるのはアホらしいし、そもそも複数の工程が含まれているんだからここはRakeの出番だろ。というわけでRake化してみているのだが、白状すると自分でRakefile書くの始めてなんだよな、今ごろ何言ってんだという話だけど*1。まぁ、いい練習台を見つけたということで。
で、それっぽく動くようなものはできたものの、依存関係がまだうまく解決できないんだよなぁ。ソースが1個しかないけど、途中の生成物が複数できる(しかも個数未定)場合のうまい指定方法がわからん。
Kindle最適化PDF生成の工程がどうなってるかというと、こんな感じ:
![[図]pdf2kindleに含まれるタスク [図]pdf2kindleに含まれるタスク](https://userimages.tdiary.net/sho/20101217_0.jpg)
- ScanSnapでスキャンしたPDFから、1ページ単位の画像(pgmフォーマット)を切り出す。スクリプト実行前には何個のpgmファイルができるかわからない。
- pgmファイルから余白を削除したpngファイルを作る。ここは1対1の関係なのでまさにRakeの面目躍如。ちなみに何度も実行してチューニングしたいのはこの工程。
- 元PDFのメタデータを別途抽出する。
- pngファイル群を結合し、メタデータを設定して、最終的なPDFファイルを生成する。
問題は途中の工程で生成される画像ファイルの数がわからないことで、ファイルリストが作れない。結果として最初のタスクの依存関係がうまく書けない。たぶんRakeマスターなら知ってるうまい技があると思うんだけどなー。
なお、工程1をやめて、最初から(PDFではなく)画像としてスキャンするというソリューションもあるにはある。これは最終手段。
*1 コンパイル不要な言語で簡単なスクリプトを書く程度の日常だと、Make/Rakeが必要になる機会はあんまりない。もちろん探せばいくらでもあるんだけど。
◆ kdmsnr [処理を単なるメソッドにしてタスクから呼び出すのでもいいのかなと思いました。(どんなものかよく分かってませんが)]
◆ ただただし [むむむ、意味がよくわからない。メソッドにできる処理ならタスクの中にも書けるんだから、本質的には何も変わらないような…..]
◆ kdmsnr [Rakeの依存関係は面倒なので、単なるメソッドを呼び出して判定すればいいんじゃないですか?ってことでした。ソースを!]
◆ ただただし [「Rakeを頼るな」という意味だとは思いもしなかったw そうかー、なにかと不便なのだな。 ソースはちょっと待ってね…..]
◆ sasasin [PDFのページ数であれば、pdfinfoコマンドで取得できます。元PDFからpdfinfoでページ数を取っておいて、..]
◆ ただただし [そうするしかない感じですよねぇ、めんどいなぁ > pdfinfo でもどっちにしろRakefileを生成するコマンド..]
◆ さく [タバコについては「渚にて」を読んだ時に同じような印象を持ちました。]