2002-04-24(水) 8306歩 [長年日記]
■ 連休
なんか、5月6日は出社日らしいです。あう、もてぎに行けないではないか(号泣)。
■ tDiary: プラグイン
myプラグイン拡張をcommit。ツッコミだけでなく、セクション相手のリンクの場合は(あれば)サブタイトルを出すようにした。本文まで出すのはめんどくさいのでやめた(笑)。CommentクラスやParagraphクラスのサービスを増やさないとダメだな、これは。
あと、その場ツッコミプラグイン、モバイルモードでも表示されるというマヌケなバグがあったので修正。フォームが常に2つ出るという状況になっていたよ。スマヌ。
他にも最近はNTさんによるtlinkや、zoeさんによる最近のNamazu検索語プラグインなど、本体と別にガシガシ新しいプラグインが入っている。活発だなぁ。
■
ヒューメイン・インタフェース―人に優しいシステムへの新たな指針(ジェフ ラスキン)
いやな日記で紹介されていたので買ってみたもの。やっと読了。つーか最近けっこう読書量が多いかも。えらいな(逃避だろ)。
個々のエピソードにはおおむねうなずけることが多い。モードをなくせとか、ファイル名をなくせとか。でもなぁ。全体として見ると、バランスが悪いと言うか、特定の理屈を展開するために他の部分がお留守になるというか。
■ 例えば「定量化」のセクションでは、研究室の先輩から、一日に何度も温度の単位の変換を命じられるかわいそうなHal君の例が出てくる。筆者はHal君が使う変換ソフトのインタフェースとして何がもっとも高効率かを追求するんだけど、最終的に残ったのが、答えが2つ出てくるという最悪のシロモノだ。キーストロークを1つ削るためにこんなものを使わされた日には、Hal君は1日に5回は読み上げる数値を間違えてBowman先輩に叱られるであろう。反乱する気にもなろうというものだ(?)。
いちおうそういう問題が危惧されるようなことも書いてあるけど、それよりマシなインタフェースは考慮する価値もないようなことを言って切り捨てているので、読者は混乱する。Hal君の効率をあげるという「目的」を忘れて、プログラムの効率をあげるという「手段」にのみ注力するという、誤った方法論になってしまっているからだ。
■ 必要な機能が見つかると、なんでも専用キーを与えたがるのにも閉口した。彼の言うとおりにキーを増やしていったら、今ごろPCのキーボードは机の上で2倍の面積を占有し、必要なキーを探すのに目を皿のようにしなくてはいけなくなるだろう。なんか、汎用機のダム端末にくっついてた、左右にズラズラと謎のキーが並んだ悪夢のようなキーボードを思いだすなぁ。
■ あと、ご自慢のズーミング・インタフェースも、まるで万能であるかのように書いてあるけど、これはわりと単純なツリー構造のデータにしか使えないと思う。複雑なネットワーク構造のデータをこのインタフェースで表現したら、やっぱり迷子になるんじゃないか。
例えば、おれが沖縄旅行で撮ったシーサーの写真は「旅行エリア」にあるのか、それとも「こま犬ライブラリ」にあるのか悩むという状況を、ズーミング・インタフェースはどう解決してくれるのだろうか。従来のファイルシステムと変わらないジレンマうまれると思うね。
■ けっきょく、「万能のユーザインタフェースなんてない」ということがわかった。いいのかそれで(笑)。
2002-04-23(火) 9292歩 [長年日記]
■ tDiary: 性能向上策(2)
昨日のアイデアをいちおうcommitしてみた。他にもファイル読み込みのあたりでセコい最適化を加えたせいか、キャッシュがヒットしなかった場合に比べてほぼ確実に2倍以上の性能が出るように。そこそこプラグインが入っている環境でこれなんだから、システムへの負荷はずいぶん軽減されたはずである。
ただ、問題も。プラグインでエラーになった時にはエラーメッセージとともにプラグイン適用前のソースが表示されるんだけど、従来はそれが.rhtmlだったのでそれっぽく表示されていた。しかし今度からは.rbなので、Rubyスクリプトがそのまま出てしまうのである。日本語もエスケープ処理されてるし、HTMLヘッダからしてそうなので、これはもう、まったく読めたもんではない。
しかたがないので、簡素なエラーメッセージ専用の画面を作ってそれを出すようにした。header_procなど、更新画面や設定画面でも呼び出されるプラグインにバグがあるとそれらの画面も出せなくなるので注意が必要。ってまぁ、そういう場合はプラグインファイルを削除すればいいだけの話なので、実害は少ないだろう。
2002-04-22(月) 13939歩 [長年日記]
■ tDiary: 性能向上策
酒井さんからrhtmlから変換されたrubyのソースをキャッシュした方が効率的ではないかというアイデアが出されて、それを実現するパッチが登場。
少し解説すると、tDiaryでは性能改善のためにプラグイン適用直前までの状態をキャッシュしている。日記本文やツッコミが更新されない限りキャッシュがヒットするので、キャッシュがない場合に比べて約50%の性能改善ができている。このキャッシュはプラグイン呼び出しが埋め込まれたHTML(*.rhtml)ファイルになっているのだが、それをさらにコンパイルして、Rubyのソース(*.rb)にまで落としてしまえばキャッシュがヒットした場合の効率がもっと上がるのではないか、ということである。
プロファイルを取ってみるとERbCompiler::compileが一番時間を食っているので、これをキャッシュ側に持っていけばたしかに性能が上がりそう。ERbは変換後のソースをメソッド化する機能があるんだけど、CGIであるtDiaryではそこまでできない。この手法はぎりぎりまでERbの仕事をすましておくという意味で効果が出そうだ。
というわけで手元のPentium-II 350MHzマシンでベンチマーク。使ったのはこの日記の4月分のデータである。
| 処理時間(秒) | |
| ミスヒット | 4.33 |
| rhtml版 | 2.77 |
| rb版 | 2.11 |
従来比でも25%の改善。ミスヒット時との比較では、胸を張って「2倍以上」と言えるレベルに(従来は「約2倍」としか言えなかった)。これはいいかも。採用しようか。
■ Sylpheed 0.7.5
今度は最新だよな……?(笑)
0.7.5にはIMAPがらみの新機能が多いから使いたいな。といっても、Asumi化してからは自前パッケージを使っていないので、おいそれと入れ替えるわけにはいかなくなってしまったのだが。オモコンしろってか……。
■ 隊長!?
KIOSKで見つけた「アヒル隊長」。いや、ホントにそう書いてあるんだってば。
しかし隊長はプラスチックだったはず。ということは、コイツは「隊長のぬいぐるみ」ということか。なんだかメタな話だ。

帰ってからよく見ると、ひどい写真だ。もっと寄って撮ればよかった。
プラスチック……と書いたのはですね、NTV系の番組「鉄腕DASH」に出てくるアヒルの人形が「アヒル隊長」という名前なのです。で、このぬいぐるみにも「アヒル隊長」と書いてあったので、とうぜんあの隊長を意図してるんだろうなぁ、と。なんか解説するとくだらない……。
■ tDiary: 本日のハンティング
おぉ、Ruby業界の大物だ(業界ってなに)。あおきにっき つっこみつきです。
◆ ただただし [これって、バイナリなのか…… いっけんカウンタに見えないところがいいかも]
◆ (ふ) [プラスチックのならベビー用品売ってるところで見かけたことあります。>隊長]
◆ (ふ) [いやもちろんそれを意識してます>隊長 私が見たのも大きく「アヒル隊長」と書いてあったので。]
◆ ただただし [なぬーっ。つまりそれはホンモノですか!? #ホンモノって……?]
◆ (ふ) [売り物は底に車が付いてました。ホンモノの底がどうなってるかが決め手かも(わら]
◆ ちょ [3年程前にあひる型水鉄砲ってもんを作ったんですが… そのあひるが今思えばそのまんま「あひる隊長」と同じモノだったんだ..]
◆ きた [sleipnirいいっすね。]
◆ でたらめ [Hal君にBowman先輩、この2人(?)が出てくるなら、音声入出力という結論になると思うなぁ。]
◆ ただただし [いや、Bowman先輩を出したのはおれの創作なので(笑)]