2004-11-11(Thu) [長年日記] [Edit]
■1
『WORKING EFFECTIVELY WITH LEGACY CODE』
何百頁を費していても駄本は駄本であることから逃れられない。一方、良書は良書であることを、1フレーズで決定的に証明してしまう。Michael Feathers*1の手になる『WORKING EFFECTIVELY WITH LEGACY CODE』はそうした良書に数え上げられるべき一冊である。
レガシーコードと呼ばれるようなコードはどのようなコードか。それは、言語や環境といったテクノロジでもなれば設計の巧拙でもなければ、変更や保守のしやすさでもない。 Prefaceにて著者曰く、
To me, legacy code is simply code without tests.
明快! 続けて曰く、テストが無いコードはbad codeであり、そのコードがどんなに巧く美しくオブジェクト指向でカプセル化されていようとも関係ない。テストが無ければ、コードを修正した結果が改善だったのか改悪だったのかを知るすべもないし、そもそもどういう方向に修正すべきかもわからない、と。
繰り返す。"Code without test is bad code." 明快だ。ForewordはRobert C.Matrint、というか表紙に「ROBERT C. MARTIN SERIES」と書いてある。これはstrong buyですよ、奥さん。
我らがFowlerタンもお薦め
blikiで『〜 WITH LEGACY CODE』について言及していたエントリが未訳出だったので、拙訳(未完成)をbliki_jaにcontribute。おくればせながら1周年おめでとうございます。
*1 CppUnit, FitCppの作者にしてObjectMenter社員
■2 S2NazoWebことS2GroovyServlet
祭。といっても私の脳内での祭だが。来週末までにとにかくさわっておきたい。
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、をどう理解したもんだか少しわからないのだけれど、タイムアウトとかエラーががどうのこうの、といっていたから、外部パッケージを利用する際に想定できる前提条件みたいな意味合い——だと思う。
家で子供が泣いているので「囲む会」には行かずに帰宅しました。
2004-11-17(Wed) [長年日記] [Edit]
■1
自分のプロジェクトのバーンダウン・チャートが、
雑誌にカラー写真で掲載されているのを見た。不思議な感覚。掲載されているのは今は昔のイテレーション#2のチャート。懐かしい。
なお、雑誌に掲載されている写真はイメージというかサンプルとしてであって、本文と直接の関係はありません。
■2 Ruby Java Bridge
といっても、arton師父のプロダクトではなく(リンク先ではrjbにも関心が寄せられてはいる)、Groovyについて。Groovyに戸惑いながらも期待を寄せるRubyist、というのはひとり私だけではないのだなあ。書籍が無いよね、と嘆かれているのだが、Oreilly、Manning(and Willey?)、そして我らがPragmatic Programmerシリーズからも来年以降、書籍が刊行されるとかされないとか*1。日本でもちゃんとした翻訳が出るといいな。
*1 ここらへん、というかGroovyOneの話は気が向いたらまた今度
2004-11-20(Sat) M a g i c a ヤ ヴ ァ イ [長年日記] [Edit]
■1 Seasarのからさわぎ@東京 2004 Final
スタッフの皆様、おつかれさまでした。そしてありがとうございました。宴会に参加してないので、他の参加者の方々の3分の1以下の満喫度か? koichikさんによる新規プロジェクトリストを見るにつけ、その思いは強くなるばかり*1。以下、私の視点からだけの箇条書き:
- 遅刻した
- 午前中の基調講演ではぶさんに2回も名前を呼ばれた。イプパタ(PDF)に云うところの「個人名の呼びかけ」ですな。
- NPO組織には大賛成。でも、コミッタ会と個人会員は要らないと思う。むしろ、あらゆるソースコードをリポジトリに登録して欲しい。そして、メーリングリストがもっとパッチで賑わうようになって欲しい。コード片が飛び交ってこそのオープンソースプロジェクトだよね?
- arton師父にランチを誘われたのに、コミッタ会合参加のためにお断りせざるをえなくて、無念。
- 午後のトラックはまずMagica。マジカやばい。超やばい。顧客であるところのドメイン専門家のナレッジがアフォーダンスでプルシステム化することをファシリテートするタンジブルでアジャイルな業務分析手法なのである。ヒリヒリした。
- あとはテクノロジトラック。koichikさんのHibernateの話しの後半から。憧れのO/Rマッパはよくできているなあ。最後のHibernate利用戦略のまとめがPragmaticでよかった。
- 喫煙所にいくと十中Hack、takaiさんと遭遇。
- まさたかさんのKijimunaセッションには、個人的にすごーく期待していた。聴衆ドン引きのディープなEclipseプラグイン開発ワールド、みたいな感じで。ところが実際には、全くそんなことはなく、聴衆に優しい真っ当な紹介。極めて残念である、って勝手に期待して勝手にガッカリしていただけだけれど。セッション中はお話の進み具合にあわせてS2のソースコードを眺めて楽しんだ。
- がーん。助田さんもKijimunaセッションにいらしたとは。そんなに広くない部屋なのに気づきませんでした…… orz。
*1 なんかコーチの名前もあるぞ
2004-11-24(Wed) [長年日記] [Edit]
2004-11-25(Thu) orz [長年日記] [Edit]
■1 【予約】『王の帰還』DVDギフトボックス【失敗】
もう売り切れてるよ…… orz。2箱注文された方がいらっしゃいましたら1箱譲っていただけないものでしょうか。だめですかそうですか。
はぁ。ダメ元で明日キャンセル待ちの列にキューイングしてもらう電話しよう……。
なにも今日に限って仕事がプチ修羅場にならなくてもいいのになぁ。
■2 『バージョン管理システム「Subversion」解説書』
ついに出るようです。11/30(火)、3,780円。Amazonにはまだエントリなし。
2004-11-28(Sun) 少年よ/がんばるなかれ [長年日記] [Edit]
■1
『大(OH!)水木しげる展』@江戸東京博物館
息子を見にきた実弟と連れだって、近所に聳え立つ異形のばかけんちくに突撃。メシも食わずに4時間ぐらい滞留してしまった。商魂たくましくグッズ売り場も充実。2000円の図録もオススメ。観賞のおみやげにどうぞ(展示されてないブツの写真も掲載されているような)。
『糞神島』を読んでみたいなー。開催期間中にもう一度行こうっと。
書くのを忘れていた
妖怪ポストが置いてあって、投稿可能。で、投稿作品(?)のいくつかが掲示してあり、その中に——
- 退治して欲しい妖怪の名前: ぬる
- 出現場所: プログラム、インターネット
というのがあった。「ぬるぽ」じゃなくて「ぬる」なのが妖怪っぽくていいな、と思った。
2004-11-29(Mon) [長年日記] [Edit]
■1 「オープンソースとはプロダクトではない。プロセスだ。」
と、ブルース・シュナイアー風に書いてみる。焦る必要はないけれど、「The Seasar Project (かその関連の) CVS には入れたいと思っています」という思いに応えられないのは哀しいことだと思う。うらさわぎの開催だったらすぐに申し込み〆切になるのにねと皮肉のひとつも書きたくなっちゃう(からさわぎでの「内輪ノリだけでもいかんだろう」というアナウンスがあったからこそ書くんだけど。内輪ノリだけでずっとやるならそれでもいいんですけど)。
急いで付け加えておくと、コミュニティの雰囲気は悪くないと思っています。なのに、現状ではコードが中心にない。残念なことだと思う。残念に思うのは私だけでしょうか?と嫌味っぽく読者に問いかけるのが委員長的優等生的文章なのだが、実際、私だけみたい(スレッドが全く伸びない)。
「オープンソース」という用語が業界で広く使われるようになって久しいと思うのだが、興味があるのはあくまでプロダクトであってプロセスではないということ? ああ、なるほど("気づき")。「やっぱりオープンソースの未来はあんまり明るくない」と嘆息する方々がいるのはそういうことか。
■2 「バカが征く」から励ましのお便り
記念にコピペ:
っていうか逆にCSV*1 (というかソース・コード・リポジトリ) を神聖視しない
ほうが分かりませんね。
なんのためにみんなが集まっているのか。もちろんコードを書くためです。そ
のためには各々がバラバラに書くわけにはいきませんから、ある程度集中的に
コードを管理しないといけません。集中してるってことは、バカが一人いると
みんなが迷惑するということ。
どうやったら一人前のcontributorとして認められるか。commitorになること
です。リポジトリに自分のコードを入れられる権限を持つこと。ぶっちゃけて
いえば、それが名誉というもの。基本的にはタダで働いてて得られるものは名
誉だけなんですから、リポジトリを軽視するというのはその名誉を否定するっ
てことと同じで、プロジェクトの死に直結します。
*1 原文ママ
○ maruo [申し訳ない。日記に書かれてますね。プロセスの問題ですか。ほんとにすみません。]
○ かくたに [オープンソースな開発プロセスを牽引するエンジンとしてCVSは欠くことべからざる重要な要素だと考えています。ただ、崇め..]
○ maruo [表現が悪かったようです、すみません。 個人別にプロダクトを持っていてCVSを使うのことは個人の自由だったので、こだわ..]
○ はぶ [CVSについてなんですけど、 1.コミッタには開放している(Kijimunaはガンガン使ってますよね) 2.しかし、..]
○ はぶ [補足です。 要するに、「心配するな。ぐちゃぐちゃになったら俺が整理してやるからとっととコードをコミットしろやゴルァ..]
2004-11-30(Tue) [長年日記] [Edit]
■1
『猫楠—南方熊楠の生涯』
不勉強にも水木しげる展に行くまでその存在を知らず、展示してあった表紙とタイトルを見て、読みたくてたまらずグッズ売り場で入手(書影がないよ!> Amazon)。
水木サン・ミーツ・クマグス、そして猫!さらに亀(3コマぐらいしか出ないけど)!これで面白くないわけがない、と思ったら、果たせるかな。破天荒な面白さ。全編是うんこ・しっこ・ゲロ・ちんこ・まんこ! 人間讃歌ッ!! 生命讃歌ッ!!! フマキラー!! って、一児の父が書く内容じゃないですけど。
ところで和歌山は田辺(というか白浜?)には、南方熊楠記念館があって、10年ぐらい前に行ったときは、客は私しか居らず貸切り状態だった。ロケーションは雰囲気あるし、遺品がたくさん置いてあって楽しんだ記憶がある。こちらもオススメ。
『
リーン開発の現場 カンバンによる大規模プロジェクトの運営(Henrik Kniberg/角谷 信太郎/市谷 聡啓/藤原 大)
『なるほどUnixプロセス ― Rubyで学ぶUnixの基礎』
SCRUM BOOT CAMP THE BOOK(西村 直人/永瀬 美穂/吉羽 龍太郎)
実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる(Steve Freeman/Nat Pryce/和智 右桂/高木 正弘)
The RSpec Book (Professional Ruby Series)(David Chelimsky/Dave Astels/Zach Dennis/角谷 信太郎/豊田 祐司/株式会社クイープ)
アジャイルサムライ−達人開発者への道−(Jonathan Rasmusson/西村 直人/角谷 信太郎/近藤 修平/角掛 拓未)
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~(Mike Cohn/マイク コーン/安井 力/角谷 信太郎)
インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践(Ken Pugh/角谷 信太郎(監訳)/児島 修)
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣(Venkat Subramaniam/Andy Hunt/木下 史彦/角谷 信太郎)
JavaからRubyへ ―マネージャのための実践移行ガイド(Bruce A. Tate/角谷 信太郎)










○ takai [NanoWebというよりもGroovletっす]