2004年09月の雑感

更新日:2004-09-26
[トップページへ] [8月] [10月] [過去の雑感へ]

9月26日()

 『サム・ホーソーンの事件簿II』(エドワード・D・ホック)

「ジプシー・キャンプの謎」が好み。


9月25日()

 『誰でもない男の裁判』(A.H.Z.カー)

短編集。 サスペンスが一気に盛り上がり、そのまま一気に狂気の世界へと転がり落ちるのかと思いきや、 意外におとなしい展開を見せる「黒い猫」、恐るべき犯人の企みが明らかになる「誰でもない男の裁判」、 奇妙な味のある「ジメルマンのソース」が好み。


9月23日(木)

 『イニシエーション・ラブ』(乾くるみ)

この本、巷で評判なので、読んでみました。 あの手かなこの手かなと想像しつつ、読んでしまった分、真相は、予想の範囲内に納まってしまいました。 それだけ、伏線の張り方が、フェアと言えるのですが、ちょっと残念です。 ただし、全部の伏線に気づいたかどうか、自信ありません。 二度読むことで楽しめるというのは、そういう伏線を探す楽しみのことを言っているのでしょう。

実は、読んでいるときに、戸田書店とか谷島屋書店とか、呉服町通りだとか、 瀬名とか、新静岡だとか、妙に静岡に詳しいなあと思ってました。 著者のプロフィールを確認したら、静岡出身ということで納得しました。 それ以降も、伏線そっちのけで、ずっと静岡にまつわる固有名詞をチェックしつつ、読んでしまいました。 最も印象に残ったのは、157ページの海藤の台詞。

「たぶん大丈夫ら。...(以下略)」

時々、語尾に「ら」が、つくのが静岡弁の特徴の一つなのです。 この「時々」というのが曲者で、どういうときに語尾が「ら」になって、どういうときに「ら」がつかないのか、 他所者の私には、今だに謎なのでした。


9月22日(水)

 core 4連発

不謹慎だと思うのですが、次々と最初の1行だけ読んでしまい、ちょっと笑ってしまいました。 [ruby-dev:24289][ruby-dev:24290][ruby-dev:24291][ruby-dev:24292]。


9月20日(月)

 『ベウラの頂』(レジナルド・ヒル)

ダルジール警視シリーズ。 ここ3作ぐらい読んで思ったのが、シリーズ・キャラクターの誰かと事件が絡まってくること。 本来、警察なんだから直接絡まなくても事件には捜査側として絡むことができるので、無理に絡めることは無いはずなんだが。 今回は、なんと、パスコーの娘が絡んできてます。


9月19日()

 [Ruby] どうしてeachじゃなくてforを使いたがるのかという疑問に対する一考察

Rubyを使う人の中には、一部 each ではなく、for を使いたがる人がいるらしいということに対して 常日頃より憂慮されてる方がいらっしゃるようです。

ary = [1, 2, 3]
for i in ary
  puts i
end

ary = [1, 2, 3]
ary.each do |i|
  puts i
end

を比較した場合、"puts i" を実行するときに 「i に何が入っているか?」のわかり易さの違いがあるんじゃないかと想像します。 前者の場合、"i in ary" というコードから 「iは、aryの中の1つの要素が入ってくる」というのが連想しやすく "ary.each do |i|" からは、「iに何が入ってくるのか良くわからない」というように感じてしまうのではないかと。 などということをふと考えてしまったのでした。


9月18日()

 RHG読書会

何となく参加してみた。 なんか難しくて半分以上ついていけません。

なぜ、Win32OLEでinitializeメソッドの実体(fole_initialize)の引数の(最初じゃなくて)最後がselfなのか というささださんの指摘が気になった。 最初がselfじゃなきゃいけないとすると、もうその時点で、Win32OLEは、落ちまくりで動かないはず。 そういう話は聞かないし、まあ大丈夫だろうと思っていたのだけど、念のため調べてみた。

rb_define_method の第4引数が、-1のときだけは、selfが第3引数(最後)になるのだった。 だから、Win32OLEの場合は、selfが最後で正解。 でも、第4引数が、-2のときは、selfが第1引数でないといけないし、他の場合もすべてselfが第1引数。 どうして、-1のときだけ、selfが最後なんだろう???

というような疑問は残るものの、とりあえず安心した。

 Haskell

RHG読書会でもHaskellの話があちこちから聞こえてくる。 Ruby界は、今、やっぱりHaskellですよ。みなさん。


9月17日(金)

 『入門Scheme

さらっと読了。 1章がSchemeの基本。 Schemeの基本が知りたい人は1章だけ読めば十分だと思う。 2章以降はプログラミング例になっている。 プログラミングもやってみたいという人は、 第2章のディレクトリ処理プログラムあたりまで読めば、基本は抑えることができると思う。

後は、SLIBとxscmというライブラリの解説と使用例。 ここは、使う人は丁寧に使わない人は適当に読めばいいんじゃないかと思う。 私は、使うかどうかわからないので、さらっと読み流してしまった。 xscmは全く使う気がないので、ページをスクロールさせただけ。 全体に「独習 Scheme 三週間」よりも説明が丁寧。

 次はどれ?

「オンラインドキュメントだけでどこまでScheme(継続)ができるようになるか挑戦してみようキャンペーン」実施中なのであるが、 『入門Scheme』を 読み終わった(最後のページまでスクロールした)ので、次のオンラインドキュメントを探すことにした。

英語を苦にしなければ、

をマスターしてしまえば、怖いもんは無い。 もっとも、日本語訳だったとしても、マスターすること自体が苦になりそうな気がしないでもない。

ということで、とりあえず、Gaucheのドキュメントを読んでみることにした。


9月14日(火)

 Amazonのオススメ

翻訳ミステリを読んでいるからと言って、オリジナルの原書を勧めてもらっても読めません。


9月12日()

 辰巳四郎

書店で、『暗黒館の殺人()()』のあとがきを読んで、「故辰巳四郎」とありショックを受けました。 知りませんでした。 私は、カバーのイラストが誰の手によるものか、ほとんど知りません(し、関心もありません)。 そんな私でも辰巳四郎という名前だけは知っていました。 80年代に登場した講談社ノベルスのいわゆる新本格ミステリのカバーのイラストは、ほとんど辰巳四郎氏によるものだったからです。 「講談社ノベルスの新本格ミステリのカバーイラスト=辰巳四郎」という図式が私の頭の中にはできていただけにショックでした。

えーと、本は買ってません。 限定愛蔵版を買う予定もありません。


9月11日()

 『ラッシュライフ』(伊坂幸太郎)

複数の無関係なストーリーが最後には、微妙に絡まりあう話。 絡ませ方が何とも微妙というか絶妙というか。 私が伊坂幸太郎の作品を読むときには、それなりに期待があるのだけど、その期待通りの変な話。 同じ手法を用いても他の作家だと、もっとサスペンスフルに盛り上げるんだろうけど、 ストーリーをひょうひょうと展開させているところが伊坂らしい。

 [Soft] cccc

freshmeat で Cyclomaticで検索したら、 ccccというオープンソースの測定ツールが見つかった。

g++ 3.4.1 だとコンパイルエラーになってしまった。 C++のソースはどう修正すればいいのかわからないので、

make CC=/usr/bin/gcc CCC=/usr/bin/g++ LD=/usr/bin/g++

として g++ 2.95.3 でコンパイルした。

早速、win32ole.c で試してみたけど、うまく測定できない。 そもそも、ANSI Cでないから測定の対象にすらしてもらえないっぽい。

RSMは、 K&Rをサポートしている。また、goto文が入るとサイクロマティック数が増える。 一方のccccは、K&Rをサポートしていないし、 goto文が入ってもサイクロマティック数は増えない。 ccccは、出力結果としてHTMLファイルとXMLファイルを生成する。

Rubyの ruby/ext/win32ole/win32ole.cの最高値を記録したole_variant2val関数を、ANSIスタイルに修正して測定してみた。 RSMでは、56で、 ccccだと60になった。 Rubyのeval.cのrb_evalも同様の測定方法で RSMでは、315で、 ccccだと223だった。


9月10日(金)

 [Java] Javaの条件式を理解する

なにゆえ、「if-then文」? 「then」がつくのは常識ですか。 私は、「if文」と呼んでいるんだけど。 VBを意識してますか? それとも、shellを意識してますか? 小文字だからshellかな。

追記: if 文の種類を else があるものと無いものを区別するために if-then文とif-then-else文としているのか。 私は、if 文と if-else文とか言ってます。 thenはやっぱり使ったことないです。

 サイクロマティック数

ソースコードの複雑さを示す数字。 測定するツールを探していたら、RSMにたどり着く。 試しに結構汚ないだろうと思われるwin32ole.cを調べてみたら、サイクロマティック数が10以上の関数が13あった。 最高は56で、平均は3.75だった。

平均値は問題ないが、最高値は、今の仕事の立場上かなりまずい気がする。

ちなみに複雑さでは評判のRubyのeval.cだが、rb_evalは315を記録した。評判通りである。

この数値が、どのくらい実用的なのか、もう少し評価してみる必要はあるけれど、 とりあえず、複雑そうなものは高い数値に、シンプルなものは低い数値になりそうなことだけわかった。


9月5日()

 『幻の森』(レジナルド・ヒル)

ダルジール警視シリーズ。

『完璧な絵画』のときよりもすんなり入れたのは、慣れたからか、それとも間を開けずに読んだからか。 パスコー警部の曾祖父の謎の死と、製薬会社の敷地から発見された人骨と、 動物権擁護グループの製薬会社襲撃事件が複雑に絡みあう。 複雑の絡みあうんだけど、それは一つの事件に収束するのではなく、事件が解決した後も、 やっぱり絡みあったものは絡みあったまま。 どことなく、無理矢理、絡めているような、いないような。 三題話のようなミステリー。

 『アジャイルソフトウェア開発の奥義』(ロバート・C・マーティン)

読んでもいないし、買ってもいないけど、偶然、書店で見て気になった本。 著者をどこかで見たなあと思って手に取って、目次の「Open-Closed Principle」を見て思いだした。 「デザインパターンとOpen-Closed Principle」で 見たんだった。 それともRobert C. Martinの名前を直接聞いたのが先だったかも。

 入門Scheme

第1章を読み終えた。 「独習 Scheme 三週間」よりも 説明が丁寧でわかりやすい。

call/ccがまだ、はっきりとはわからない。 call/ccを使うと繰り返し(再帰)の処理中にいきなり処理を抜けることができるみたい。 再帰からいきなり抜け出せるので、計算量が少なくて済むというメリットがある。

call/ccを使った方が簡潔でわかりやすいコードになるのか、 使わない方がわかりやすいのか、 call/ccを使わないとできないことがあるのか無いのか、 などなどわからないことがいっぱい。


9月4日()

 腕時計

秒針は、まだ震え続けております。 かなり弱ってきているようで、震えの幅は小さくなっているようです。 完全停止寸前という感じでしょうか。

 腕時計

時計店で電池を交換してもらう。 交換が簡単なのは1000円だけど、私の時計は、交換が難しいので1500円なのだそうです。

 オープンソースカンファレンス 2004

Rubyのトラックだけ参加。

仕事でRubyが使えない例とか使っている事例とかを高橋さんがインタビュアー的に会場にいた人に聞きまくる。 公に堂々と使っているという事例は、なかったように思います。 秘密兵器として使うとか Perlだと130万でRubyだと100万でできると言って口説くとか、 Web マガジン 「Rubyist Magazine」 創刊の話とか、キラーサイトが必要だとか。

その後、懇親会に参加し、Ruby関係の人と2次会へ。 いつも思うのだけど、濃くて面白い話が聞けるのは懇親会とか2次会とか休み時間だったりする。 RHG読書会は、どんな感じなのか聞いてみたり、他の言語にないRubyの魅力の正体は何なのかとか。

最近、Schemeをさわっていると話したら、Haskellを勧められた。 Ruby界では、今、Haskellブームらしい(←拡大解釈)。


9月3日(金)

 腕時計

会社の帰りに時計店に寄ろうと思って、止まった時計を会社に持って行きました。 いつものように腕にはめて行きました。 半ば無意識に時間を確かめようとして腕時計を見てしまうこと数度。 そのたびに時間が進んでいないことを確認することになりました。 学習能力ゼロです。

 腕時計

そして会社を出たのは、22:30。 秒針は、まだ震え続けています。


9月2日(木)

 腕時計

止まりました。 秒針が微妙に震えるんですが、どうしても17時47分57秒から17時47分58秒に進むことができません。 次の秒へ進もうとしては、進み切れず、元へ戻ってしまうのです。 もがき苦しんでいるみたいです。 じっと見ていると何だか切なくなってきました。

 [Scheme] call/cc あるいは call-with-current-continuation

入門Scheme」を読んで、 ちょっとだけわかりかけてきた気がする。 あともう一息で何かがつかめそう。 気分は腕時計の秒針。


9月1日(水)

 [Scheme] 繰り返し

do を使った繰り返し。

(do ((c 10 (- c 1))) ((<= c 0)) (display "Hello World\n"))

この前のlet を使った奴よりちょっとだけ短くなった。 終了判定がCやJavaやRubyなど馴染の言語と逆なのがややこしい。


[トップページへ] [8月] [10月] [過去の雑感へ]