2003-11-15(Sat) [Edit]
■1 サーバ割当ディスク容量超過
社員旅行に行っているあいだに、サーバに割り当てられているディスク容量を超過してしまった模様。慌てていくつかコンテンツを退避させる。恐れていた日がついにやってきてしまった。ついにこのドメインも自宅で賄うか……。メールサーバ、自分で運用できるかなあ。
■2 1.5.6リリース
──されているようだし、丁度良い機会かも。頑張ろう……。
2004-11-15(Mon) [Edit]
■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、をどう理解したもんだか少しわからないのだけれど、タイムアウトとかエラーががどうのこうの、といっていたから、外部パッケージを利用する際に想定できる前提条件みたいな意味合い——だと思う。
家で子供が泣いているので「囲む会」には行かずに帰宅しました。
2006-11-15(Wed) [Edit]
■1 オブジェクト倶楽部のクリスマスイベントでBDDとRSpecの話をします
まだあとで書いてないけど……。
2006/12/20(水)の平日に講演会費を3,000円徴収するイベントですが、オブジェクト倶楽部のクリスマスイベントでBDDとRSpecの話をします。興味のある方は聞いてもらえると嬉しいです。参加登録は来週、11/22(水)からを予定しています。私のセッションのオフィシャルな概要は次の通り。
「クは駆動のク〜Developer TestingとBDD〜」
クは駆動のクです。Developer Testingは、プログラミングをした開発者が自らテストを実施するという考え方です。Developer Testingを活用した設計技法としてはテスト駆動開発(TDD:Test Driven Developemrnt)がよく知られています。BDDは、Behaviour Driven Development(振舞駆動開発)の頭文字で、テスト駆動開発(TDD)の延長線上にある考え方です。
BDDによってDeveloper Testingの変わるところ・変わらないところを、BDDツールのRubyによる代表的実装であるRSpecを題材に紹介します。繰り返します。クは駆動のクです。
当セッションは、TDDとRubyについての知識が多少あったほうが楽しめると思いますが、それを前提とはしていません。
内容についてもうちょっと補足
基本的にホビット族向け。当日の内容はおそらくというか確実にid:t-wadaさんの『WEB+DB PRESS Vol.35』やSeasar Conference 2006 Autumnの内容と重複する。断言しておこう。いずれかあるいは両方を読んだり聞いたり経験している方はご注意を。
RSpec(とRuby)については、今回は突っ込んだ話をしません。なので、RubyにもRSpecを知らなくても問題ありませんが、一方で「RSpecについてkwsk!」と思っている方はご注意を。RSpec on Railsや内部DSLの設計手法には言及しません(できません。むしろこっちの話をしたいんだけど)。
RSpecについては11/18(土)の関西オープンソース2006のRuby関西のコマで池上さんが発表するそうなので、そちらを(金欠で行けないので資料欲しい!!)。RSpec on Railsについては、11/19(日)のRails勉強会@東京第12回でid:moroの人がセッションを持つようなので、Railsな皆さんはそちらを。
ハッカーとTDDの件については、ウチのイベントの会場にハッカーは一人ぐらいしか来場しないだろうから、たぶんしません(那須のケント・ベックも来場いただけるとは思うけれども、那須のケント・ベックはハッカーというよりはアーティストなのだ)。
■2 あのfastriがRubyGemsになった
インストール:
$ gem install fastri
おわり。launchdの設定がちょっと変わった。$GEM_HOMEを独自に設定しているので。plistでのローカル変数みたいなのは使えるのかなあ。
$HOME/Library/LaunchAgents/fastri-server.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>fastri-server</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/Users/shintaro/gem.repos/bin/fastri-server</string>
<key>EnvironmentVariables</key>
<dict>
<key>GEM_HOME</key>
<string>/Users/shintaro/gem.repos</string>
</dict>
</dict>
</plist>
| 



○ arton [>ハッカーというよりはアーティスト それはすごい(言い回しの)発見だ! 言い得て妙というのがぴったり。]