2004-11-15(Mon) [長年日記]
■1 「チュートリアル: エンタープライズ統合パターン −成功するシステム統合の解法設計−」
グレガグラムの祖が降臨につき、参加してきた。通訳無しのセメントマッチ。興味あるテーマなのと、話しが明快なので、6割ぐらいは理解できたような気がする。質疑応答は全然わからなかった。議事録やサマリのようなものがパターンWGのサイトに掲載されることに期待しよう。
話題の中心は、EIP vol.2(予定)と、Orchestration Patternsの"sneak preview"。vol.2はもっと薄くしたいそうな。というのも、持ち歩くのが重いのと、700頁とかだと日本で翻訳が出ないから(哀しいね)。この偉業がきちんとしたかたちで日本に紹介されないのは勿体なさすぎるねえ。参加者の反応もなんか微妙だったし。
「the dark side of loose coupling」
チュートリアルが終わったあと、聴衆は続ぞくと帰っていって、ホペ放置プレイ。私は本人も持ってきていないEIPを持参していたので、サインをいただく。氏にも「こんな重いの持ってきたのか」とちょっと呆れられつつも嬉しそうだった。せっかくなのでひとつ質問してみた。緊張してたしウソ英語なので、どこまで通じたかわからんけども、丁寧に回答してもらえた。しかも回答時に周囲に居たのは私だけ。exprert one-on-one writing asynchronous code with unit testing. っていうか、みんなどうしたの?
- 私:「非同期のコードに対する単体テストをうまく書く方法は? 同一プロセス内でならモックリスナを使うのはわかってるんだけど、別プロセスのものが巧く書けないんです」
- ホペ:「非同期処理が混じる場合のテストには2ステージ体制で臨むのがよいと思う。Stage1: Message LayerをMock/Stub化して、同一プロセス内に取り込み、極力同期化の文脈に引き込んで機能(functions)が巧く動くかをテストする。Stage2: 非同期処理も含めたシステム同士のコラボレーションをテストする。ここでタイミングその他を調整する」
2Stageに分けてテストするのは現在もやっているのだけれども、2Stageでも「テストの歩幅」が大きすぎるケースに遭遇すること一度ならず。なので、もう少し突っ込んで聞きたかったのだが、どう訊いたもんだかわからなかったので、ちょっと目先を変えて:
- 私: 「なるほど。せっかくなので、もうひとつ。自分たちではどうしようもない非同期外部システムに対して巧くやるためのアイデアは何かありますか?」
- ホペ:「確かに外部パッケージは悩ましいよね。非同期は疎結合を実現するためにとても効果的な手段なんだけれども、そこにはダークサイドも存在する。『疎結合のダークサイド(the dark side of loose coupling)』だね。ひとつは想定できることがあまりない(few assumptions)こと、そしてもうひとつが単体テストだ。非同期での単体テストについては、私のウェブロとかでも書こうかと思ってるけど、あまり期待しないで待っててね」
- 私: 「thank you, may the force be with you.」
とまあ、おおよそこんな感じ。グレガグラムの発言は多少脳内補完してるけど、大筋は合っていたかと。
few assumptions、をどう理解したもんだか少しわからないのだけれど、タイムアウトとかエラーががどうのこうの、といっていたから、外部パッケージを利用する際に想定できる前提条件みたいな意味合い——だと思う。
家で子供が泣いているので「囲む会」には行かずに帰宅しました。