2005年07月の雑感

更新日:2005-07-31
[トップページへ] [6月] [8月] [過去の雑感へ]

7月31日()

 Tech ED 2005

3日と4日に行くかも知れません。 それにしても、どれを聴講しようか迷ってしまいます。


7月30日()

 [Ruby][Win32OLE] DispHTMLInputElement から HTMLInputElementへ

WIN32OLE_TYPE#ole_typelib と WIN32OLE_TYPE#implemented_ole_types を実装した(Ruby 1.9の最新版)ので こんな感じで、DispHTMLInputElementからHTMLInputElementを導くことができます。

otype = zip.ole_obj_help
puts otype # => DispHTMLInputElement
tlib = otype.ole_typelib
tlib.ole_classes.each do |k|
  k.implemented_ole_types.each do |t|
   if t.name == otype.name
     puts k # => HTMLInputElement
  end
end

... やっぱり、回りくどいですか?

 [Ruby][nono] 0.1.0

バージョンアップしました。tnonoに "step by step"のメニューがつきました。

 『賢者はベンチで思索する』 (近藤史恵)

近藤史恵版『隅の老人』。 殺人事件は起こらないし、どちらかと言えば、 日常の謎ミステリに近い部分はある。 けれど、犯罪かそれに近いことは起きている訳で、事件そのものは、どれも暗くて重い。

トモのモデルはテツですか? でもって、トモって名前は、テツ & トモ からの連想ですか?


7月29日(金)

 Oracle 8.1.7 and Pentium 4

しっかりと、この不具合に遭遇してしまい、 Oracle 初心者の私はしばし悩んでしまいました。


7月25日(月)

 IIS と Tomcat

Tomcatは、Apacheと連携するものだとばかり思っていたら、IISとも連携できるらしい。


7月24日()

 『プリーストリー氏の問題』 (A.B.コックス)

アントニイ・バークリーがA.B.コックス名義で発表したミステリー風ユーモア小説。 あくまでも、ユーモアミステリではなくて、ミステリー風ユーモア小説。 ドタバタ喜劇風でありながら、どこか牧歌的。 この設定だと、もう少しミステリー寄りな展開とか 主人公が窮地に立たされるサスペンスにするとか あると思うんだけど、この作品では、ユーモアに徹してます。 ミステリーとして期待するとちょっとがっかりするかも知れませんが、 ミステリー風ユーモア小説として読めば楽しめます。

 [Ruby] [Win32OLE] Win32OLE 活用法

Win32OLE で DispHTMLInputElement から HTMLInputElement を導く方法は今のところありません。 また、逆に HTMLInputElement から DispHTMLInputElement を導く方法も今のところありません。

DispHTMLInputElement と HTMLInputElement の関係は、Java で例えると DispHTMLInputElement が interface で HTMLInputElement が class みたいなもんでしょうか。 Ruby で例えると、DispHTMLInputElement が module で、HTMLInputElement が class かな。

Ruby では、Module#included_modules を使えば、そのクラスでincludeしているモジュールの配列を取得できます。 OLEでも、HTMLInputElement が持っているインターフェース DispHTMLInputElement を取得することは、比較的簡単です。 Win32OLEでも比較的簡単に実装できます。

ただ、今回の場合は、その逆ができないと、

zip.ole_obj_help -> DispHTMLInputElement -> HTMLInputElement -> Excelのオブジェクトブラウザで HTMLInputElement を調べる

というスムーズな流れにはならない訳です。

今のところ、逆は、ちょっと面倒くさい方法しか思い浮かびません。

  1. DispHTMLInputElement が定義されているタイプライブラリを取得する。

  2. タイプライブラリで定義されているOLEの型情報の一覧を取得する。(この中にHTMLInputElementが含まれるはず。)

  3. OLEの型情報が DispHTMLInputElementをインターフェースとして持っているか1つ1つ順番に調べ、持っているものだけをリストアップする。

2. だけは、Win32OLEでもできます。

とりあえずは、1. ができるメソッド と 3. の代わりに(比較的簡単に実装できる)型情報が持っているインターフェースの配列を返すメソッドを用意しようと考えています。 だけど、まだ、いいメソッドの名前を思いつきません。

あと、1. 2. 3. 全部やってしまうメソッドを用意するかどうかも迷っています。


7月19日(火)

 るびま 8号

何人かの方が、時の流れるのが早いみたいなことを書かれてますが、 私には、るびまが月刊になっているのではないかと勘違いしそうになるほどです。 そのうち週刊と錯覚するようになったらどうしようかと怯えています。

 [Ruby][Win32OLE] InvokeVerb を何とかする

考えが足りなかったような気がした。 のだが、そうでもない気がしてきた。

InvokeVerb("印刷(&P)")

の代わりに

_invoke(1610l743824, [{"印刷(&P)" => WIN32OLE::VT_BYVAL}], [WIN32OLE::VARIANT::VT_BSTR])

としてもらうか

_invoke(1610l743824, [{"印刷(&P)" => WIN32OLE::VT_BYVAL}], [WIN32OLE::VARIANT::VT_VARIANT])

としてもらうか、どっちだったらちゃんと動くように実装できるんだ?


7月18日(月)

 『クドリャフカの順番 「十文字」事件』 (米澤穂信)

氷菓』、 『愚者のエンドロール』に続く「古典部シリーズ」第3段。 高校の文化祭で、占い研究会のカード、囲碁部の碁石、アカペラ部のドリンク、お料理研究会のおたまなど が盗まれる。怪盗「十文字」の目的は何か?

高校の文化祭を舞台にしたいわゆるミッシングリンクものです。 ミッシングリンクの謎もさることながら、それ以外のところでも読ませてくれます。 誤って二百部も刷ってしまった古典部の文集「氷菓」をいかにして古典部のメンバーは売り捌くのかとか、 お料理研究会の料理対決のシーンとか。

結末はちょっとほろ苦いですが、後味が悪いというほどのものではありません。

あと、ネタがバレるので、詳しく書けませんが、一箇所決定的なミスがあるような気がするんだけど、 私が勘違いしているだけかなあ。

単独でも楽しめますが、多分、『氷菓』、 『愚者のエンドロール』と順番に読んだ方がより楽しめると思われます。 (実は、そういう私も、『氷菓』は読んでますが、 『愚者のエンドロール』を読んでません。 思いのほか、本作が良かったので、『愚者のエンドロール』も読んでみようかと思っています。)

舞台設定に小学校と高校の違いはありますが、 謎の設定がよく似ている『ほうかご探偵隊』と読み比べてみるのも一興です。


7月16日()

 「2分でやる」ということ

すごいやり方』には、「今すぐそれをやってみない?」と聞くというのがある。 「でも、面倒だし後回しにしよう。」と、結局やらないままに終わる。 『仕事を成し遂げる技術』には「2分でできることはすぐやる」というのがある。 なので、

「今すぐそれをやってみない?」
「面倒だよ」
「それ2分でできる?」
「できるけど・・・」
「だったらやろう。」

という展開になる。でも2分でできないものは、いつまで経っても終わらない。 なので、「それに関して2分でできることはある?」と聞くことにしている。

「ネットワークのトラブルの調査かあ。なんか面倒くさそうだなあ。」
「今すぐそれをやってみない?」
「面倒だよ」
「それ2分でできる?」
「絶対無理です。」
「じゃあ、2分でできることはある?」
「traceroute(tracert)で経路の確認ぐらいなら...」
「じゃあ、それだけでもやっちゃおう。」

となる。で、それが終わると、「次に2分でできることは?」と問いかける。 何もなくなると、他の仕事で2分で片付くことをやる。 で、本当に本当に何もやることがなくなると仕方がないので、本腰入れてネットワークの調査に戻る。 でも何も手をつけていない訳ではなく、2分でやれることだけは、(いろいろと)やってしまっているので、 意外と抵抗が少ない状態で作業に入っていける(かも知れない)。

ものぐさで、面倒くさがりで、なかなかやる気にならない、動きの鈍い私には、効果的なやり方かも知れない。

実際に始めてみたら2分で終わらなかったということもあるかも知れないが、そんなことは気にしない。 要は、それだけ何か進展があったということが大切。

いくつかの仕事を並行でやっているとき、 細切れに2分ごとに仕事を変えると、 一体何の仕事にどれだけの時間かけたのかわからなくなるという罠があるかも知れない。

 マインドマップ in Seasarのすなあそび

初めて、マインドマップに挑戦するので、どう書くか悩んでしまわないように、 事前に印刷しておいた発表資料にざっと目を通しておくことにしました。

実践してみてわかったんだけど、右から左に線を引くのは難しい。 横書きが左から右なので、本に線を引くときとか割と左から右に線を引くことが多い。 左から右に動かすのは、どちらかというと手を自分の方へ引っぱる動作に近いので 割とスムーズに動く。 だから、左から右へ線を引くのはスムーズ。 でも、右から左は押す動作に近く、そういう動きに慣れてないのか、どこかぎくしゃくする。

左利きの人だとひょっとするとスムーズに書けるんじゃないかと思ったりする。 左から右への線は、横書きの本に線を引いたりするときに左から右に線を引くんじゃないかと。 右から左への線は、左手を手前に引く動作に近いので、それもスムーズだろう。多分。

結論。マインドマップは左利きの人の方が有利に違いない(嘘)。

 Seasarのすなあそび

飯田橋へ行くのは久し振りで懐しく感じた。 早目に行って飯田橋で食事。 西口なので、一瞬、青葉のラーメンにしようかと思ったが、きっと混んでると思ってやめた。 ちょっと会場とは違う方向だし。 結局、黒兵衛の塩ラーメンにした。 今まで、私はラーメンと言えば、醤油派だったんだが、塩もいいかもと思ってしまった。

会場に行って、受付で、名前を名乗ったら、受付の方に 「ひょっとしてRubyの助田さんですか?」 と聞かれ、不意打ちをくらいつつ、「そうです。」と答えた。 受付の方は、後で、私の方まで改めて挨拶に来られた。 丁寧な方でした。

はぶさんの挨拶で始まったのだが、ここで今回の主旨をようやく正しく理解した。 今回は、Seasar関連のプロジェクトのうち、まだ始まったばかりのものを集めて、 紹介して、コミッターなり、協力者なり、ユーザーなりを募集しようというものらしい。

普通は、イベントの1コーナーとして、そういうのをやったりすると思うんだけど それだけで、1つのイベントにしてしまうところがすごい。

Seasar 関係のイベントを秋に予定しているらしい。

以下、各プロダクトのメモ。

S2Kestral。JDK1.3対応Seasar2。だからDIとか正規表現とか知らなくても大丈夫らしい。 前回も思ったんだけど、キムキムさんは面白い。

S2JMS と S2JCE。 MQなどの非同期メッセージを扱う。 ロジックは、POJOがそのまま使えて、MQなどの情報は、diconファイルに封じ込めておける。 なので、多分、ロジックの単体テストはPOJOそのものなので、非同期メッセージを意識することがないので楽。 モデルはさっぱりわかりません。

Trickle。 ワークフローエンジン。 ワークフローのルールをdiconファイルに封じ込める。 これは、ワークフロー用diconファイルの編集ツールがないとつらそうな気がする。

S2Cayenne。 Seasar2のトランザクションとCayenneを組み合わせる。 S2DAOと同じ位置にあるもの。

S2PHP5。 Seasar2のPHP5版 DIとAOPを実現。 PHPでDIコンテナは他にもあるらしい。 diconファイルは、Seasar2スタイルでも、PHPの設定ファイルスタイルでも書けるらしい。 backport175からヒントを得てSeasar4(?)の機能も実現したらしい。 backport175って何?

S2.NET。 Seasar2の.NET版。 .Net1.1で動くらしい。DIとAOP。 S2ASPとか、S2ADO.Netだとか野望は盛り沢山。 ASP.NETやADO.NETのポトペタによる手軽さは失なわないようにしつつ、 Seasar2を.Netに組み込もうという戦略。 そういう戦略を取らないと受け入れられないだろうなあ。確かに。 Visual Studio のプラグインの形で、kijimuna.Netを実現したいと言ってたけど、 Seasar4相当の機能が実現できれば、kijimuna.Netの必要性は薄れていくような気もする。 「設計と実装の狭間で」は何かで見たことがあるような気がする。

Seasar4(?)。 diconファイルが面倒だから、書かなくてもいいようにしようというのが目玉。 あらかじめ決められた規約に従って書けば、自動設定でできるらしい。 (規約がどんなものか良くわからなかったので、それ以上説明できません。) で、どうしても書きたいときは、アノテーションを使えばいいそうだ。 つまり、今まで別ファイルに書かなきゃいけなかったものが、ソースの中にコメントとして 書くことにより、バラバラのファイルを管理しなきゃいけない繁雑さから逃れることができる。 これは、結構、嬉しいんじゃないかと思う。 で、backport175って何?

Kvasir/Sora。 Zope風のコンテンツ管理ができるWebサービス。 DIコンテナベースで、EclipseライクなPluginアーキテクチャを採用している。

Maya。 JSPと同じようなもの。 純粋なHTMLファイルから動的画面を生成する。JSPに依存しない。 未踏に採択。 広めるための戦略としてStrutsを意識している。 Groovletって何?

Javaは、この前、JCE 1.2.1 の問題でちょこっと関わったぐらいで、本格的には触らないし PHPも今のところ触ってない。 (偶然、この前、職場で、PHPという言葉を耳にしたんだけど...。) .Netだけは、ひょっとすると触ることになるかも知れない。 なので、好奇心から、S2.Netをダウンロードぐらいはするかも知れない。

今回、いろんなプロダクトが紹介されたんだけど、根底にあるのが Seasar2で、 今さらながら、私の中で、Seasar2が何なのか、逆に浮かび上がってきたような気がしました。

あと、はぶさんみたいな人は、今、Ruby界にいないよなあと思ってしまった。

以上、とりあえず、手書きのマインドマップを見ながら書いてみました。

そう言えば、私の斜め前の席に座ってらした方が、 ノートPCで、マインドマップを作成するエディタらしきものを画面に表示してたんだけど、 あれは、何というソフトなんだろう?

 [Ruby][Win32OLE] InvokeVerbを何とかする

Seasar4の話を聞いて、InvokeVerbの問題は、アノテーションみたいなので、 指定できりゃいいじゃんと無茶苦茶なことを考えてしまった。

それはさておき、_invoke メソッドに第4引数を指定させるというのを考えた。

_invoke(id, [arg1, arg2], [VT_XXX, VT_XXX], [VT_BYREF, VT_BYVAL])

つまり、第4引数で、値渡しか参照渡しか指定させるというもの。 省略時は、全部参照渡し。結論から先に言うと却下。 1つの引数だけ値渡しにするために、第4引数で、値渡しか参照渡しか全部指定させるのは面倒。

今、候補になってるのが、Hashを使うというもの。

_invoke(id, [arg1, {arg2 => VT_BYVAL}], [VT_XXX, VT_XXX])

でも、なんか、しっくり来ないのは何故だろう。


7月15日(金)

 友人と昼食

昼休み、突然、携帯に連絡が入った。 何事かと思ったら出張でこちらに来ているとのこと。 急遽、近所のファミリーレストランで昼食をすることにした。

夜、会社に戻って仕事をしなきゃいけないとのことだったので、残念ながら 夕飯を一緒にしてゆっくり話すということはできなかった。


7月14日(木)

 トラブル調査

もう少しヒントが欲しいです。 手がかりが無さすぎ。

 『仕事を成し遂げる技術』に乗せられてみる

「2分でできることはすぐやる。」を実践しようとすると「これは、2分でできる?」 と自分に問いかけながら、仕事することになる。 さらに「次の行動は?」と自分に問いかけながら仕事すると、 なんか脳を使っている気がしてくるから不思議だ。 充実しているような気がするのだけど、それは錯覚かも知れない。 ストレスなく仕事ができてるのかどうかは微妙。 常に自分に問いかけていることで、自分を変に追い詰め、ストレスがかかっているんじゃないかと気になる (←つらいとか苦しいとかは感じないけど)。 どこかやり方を間違えてるのかも知れない。

このやり方だと、自分がどの仕事をどれくらいやったのか、後から追跡するのが大変。 やっぱり、どこかやり方を間違えてるのかも知れない。

 [Ruby] [Win32OLE] InvokeVerbを何とかする

値渡しと参照渡しの区別をするために _invoke に手を加えるというのを漠然と考えている。 _invoke では型情報を渡せるようになっている。 それに加えて値渡しか参照渡しかを指定できるようにすればいいんじゃないかと漠然と考えている。 ただ、_invoke のインターフェースをどうするか、いい考えが浮かばない。


7月12日(火)

 マインドマップ

仕事を成し遂げる技術』でも出てきたマインドマップ。 まだ、一度も書いたことがないんだけど、会議の議事録用とか、慣れるとすんなり書けるんだろうか。 書こうとすると、中心の話題(主題)は何?とか、そこから派生しているのは? この人の意見は、どこに位置する? とか考えないといけない。 確かに、ぼーっと聞いてることができず、集中はできそうである。


7月11日(月)

 『仕事を成し遂げる技術

字が小さくて、ちょっとわかりづらいこと(『パイロットが...』の後だから余計にそう感じるのかも。)に我慢して、 PART2まで何とか読み進めれば、後は、それなりに読み進められた。 副題に「ストレスなく生産性を発揮する方法」とあるのだが、 読んでいるうちに、あれやこれや棚上げにして心の奥底にしまいこんでいたことが急に気になりだして、 かえってストレスを生み出すという罠。 このストレスから逃れるには、もう実践するしかありません。

実際のところ、週末にこの本を途中まで読んで、今日はいてもたってもいられなくなり、 会社で机の引き出しの中を整理し始めてしまいました。

物をすべて一箇所に集めるということだけは頭の中でわかったけど、 その後の処理、整理、再検討、実行を具体的にどうするか頭の中ですらわかってない。 実践しつつ読み返してみる必要があるな。

ともかく、今まで、ほったらかしにしていた細かいことが余計に気になりだして、 このまま、何もしないでいると逆にストレスが増えそうなので、何とかしなくてはいけません。


7月9日()

 『パイロットが空から学んだ一番大切なこと』(坂井優基)

四の五の言わずに読むべし」ということなので、読んでみた。 わかりやすくて、面白い。テンポも良くてさらっと読めます。 パイロットの世界の話ではありますが、ソフトウェア業界にも当てはまることが多いんじゃないかと思います。 一読の価値あり。

仕事柄、駄目な点を指摘することが多いんだけど、誉めることも心掛けようと反省。

 [Cygwin] Cygwin 1.5.18-1

バージョンアップ。 ついでに、gcc だとか古いバージョンだったものを最新版にした。 追加インストールしたのは chere。 chere で cygterm を出せるだろうか。 chere は rxvtをサポートしているので、期待しないでもない。

gcc をバージョンアップしたので、まずは、Ruby をコンパイル。

 Cygwin上での mingw版 Ruby のコンパイル

Cygwin上で、gcc -mno-cygwin を使って、mingw版 Ruby をコンパイルしようとしたら、 ext/enumerator のコンパイルでエラーが出た。 現象は、[ruby-dev:26232]と同じ。回避方法も[ruby-dev:26232]と同じ。

ところが、[ruby-dev:26243] という情報があったので、どうもおかしいと思って見直してみたら、

configure --build=i386-mingw --host=i386-mingw --target=i386-mingw

としていた。

configure --build=i686-cygwin --host=i386-mingw --target=i386-mingw

と修正した。

確認とか、あれやこれやで、何回もコンパイルしたので、かなり時間がかかってしまった。

 [Cygwin] chere

シェルスクリプトだった。 regtoolを使ってレジストリを書き変えている。 chere を参考にすれば、cygterm 用の設定もできそう。

 [Ruby] Win32OLE

すいません。[ruby-list:40890] の件、まだ、ちゃんと調べてません。 どうも、Win32OLE が InvokeVerb にちゃんと引数を渡せていないような気がしてます。

それはともかく、Win32OLEのバグを見つけてしまった。


7月8日(金)

 Ruby to Perl

ひょっとして、Perl 4 だと

/^\s+$/ =~ $line

じゃなくて

$line =~ /^\s+$/

と書かないと駄目ですか?


7月7日(木)

 Ruby to Perl

ちょっと考えるところがあって、Ruby のスクリプトを Perl に移植。 Perl 4 だとヒアドキュメントは使えない? ひょっとして、chomp も無い?

open したファイルハンドルをクローズし忘れていて、Perlスクリプトが変な挙動をして、 しばらく悩んでしまった。

Ruby だと

File.foreach(file) do |line|
  ...
end

とか

open(file) do |ifs|
  ...
end

とかやっちゃうから、close は、あまりしないんだよなあ。


7月3日()

 WEB + DB PRESS Vol. 27

Ajaxのまとまった記事があるのが良かった。

JSFとStrutsが比較の対象になるというのが新鮮だった。 JSFというと何となく、JSPの延長という感じがしていて、Strutsとは守備範囲の違うものというイメージがあったのです。


7月2日()

 RubyとCVSとSubversion

2ヶ月以上振りに、cvs update して make しました。

Subversionへの移行を検討してはどうかという意見が出た([ruby-dev:26421])ので、 できるだけ新しいのを取れるときに、手元に取っておこうと焦ったためです。

私はSubversionを使ったことがありません。 移行されたら、きっとSubversionを使えるようになるまでに、しばらく時間がかかるはずです。 (Subversionの導入時間とか学習時間とか。)

今は、焦る必要は無かったかと思い始めております。

これを機会にSubversionを導入して、 Subversionに触れてみるという方向に思考が進まないところが駄目なところです。

 『スペース』 (加納朋子)

ななつのこ』、 『魔法飛行』に続くシリーズ。 前作から10年以上経ってますが、話の中では、わずか一週間しか経っていません。 「スペース」と「バックスペース」の2編が含まれていますが、「バックスペース」は「スペース」の裏話という感じ。 あまりミステリミステリしてないので、それを期待していると物足りないかも。 後味はいいんだけど、「バックスペース」は、ちょっとでき過ぎの感あり。

作者のオススメどおり、『ななつのこ』、 『魔法飛行』を先に読み返しておいたので、 ニヤリとできる部分があって良かった。


7月1日(金)

 『魔法飛行』(加納朋子)

再読。『ななつのこ』の続編。 連作短編ミステリだが全体として一つの長編ミステリになる構成は 『ななつのこ』と同じ。 短編にちりばめられた、さりげない手がかりを元に、長編ミステリの謎が解かれる過程は、まさに魔法。 短編と長編の絡ませ具合の点で勝っている分、『ななつのこ』よりこちらの方が好み。

これで準備は整った。


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