コードジンのヘッダーが入ります Developers Summit 2009

株式会社オージス総研

【12-A-6】オブジェクト指向エクササイズのススメ
オブジェクトの広場 菅野洋史 / 大村伸吾

オージス総研の菅野洋史氏と大村伸吾氏によるプレゼンでは、オブジェクト指向プログラミングの斬新な学習手法が紹介された。「開発プロセスを支えるのはエンジニアリング!」と菅野氏が力強く語るように、オブジェクト指向プログラミングをギリギリまで突き詰めることで、オブジェクト設計を見直す。それが狙いだった。題材となったのは、2008年末に刊行されたばかりの『ThoughtWorksアンソロジー』(オライリー)の中から、Jeff Bay氏の執筆による「オブジェクト指向エクササイズ」という一篇。同書は、マーティン・ファウラーが主席技術者を務めるThoughtWorks社によって編まれ、翻訳をオージス総研がプロデュースするオンラインマガジン「オブジェクトの広場」が担当した。

「オブジェクト指向エクササイズ」とは?

「オブジェクト指向で開発している」と言う人は多いが、果たしてそれは本当にオブジェクト指向か? という問いからセッションは始まった。「Strutsを使っている」という人もいるが、オブジェクト指向というからは「責務を持ったオブジェクトがコラボレーションすることによって、複雑なシステムを構成するべき」だという

しかし、そう主張しつつも、それは「難しい」と菅野氏も認める。「以前の慣習から抜け出せない」「設計者やアーキテクトが理解していればよい」「難しい」「マニアック」「実践的じゃない」などなどの誤解があるためだ。

ちゃんとオブジェクト指向するためには、一部の開発者だけではなく、プロジェクト全員が学習することが重要だ。そのとき初めて、オブジェクト指向は使える「武器」になる。そこで、開発の仕事に入って数年目の人を対象に、体に叩き込むハードな学習手法が編み出された。それが「オブジェクト指向エクササイズ」だ。

この“エクササイズ”では、非常にハードなコーディング規約を、1000行程度の小さめのプロジェクトに適用することで、オブジェクト指向プログラミングを強制的に身に着けようとする。その“ハードな”規約とは、次の9箇条だ。

ここではスペースがないので、ルールの詳細はぜひ同書籍などにあたってほしいが、今回のセッションのキモは、このためにオブジェクトの広場で実際に演習が行われたことだろう。具体的なコードはオブジェクトの広場で公開されるそうなので、規約の適用前後でクラス構造がどのように変化したのかだけでも見ていただきたい。責務が分割され、オブジェクト間のコラボレーションによって機能が実現されるようになった驚異の変化がここにある。

図1:当初のクラス構造
図2:最終的なクラス構造(Bookクラスが4つに分割された)
図3:最終的なクラス構造(さらに全体が細かくなった)

エクササイズで壁を超えよう

この演習を行うことで、学習効果として、惰性で行っていた設計の見直しができたという。圧力をかけることによってギリギリまで考えさせる。制約によっていろいろなテクニックが引き出される。10年の開発経験がある「広場」の方々にとっても、この経験はかなり勉強になったという。

このエクササイズは、とにかくきつい! インスタンス変数が2個なんていうのは普通は無理だ。その無理を通して、壁を突き抜けるために、あらゆるテクニックと知識を総動員し、議論を巻き起こす。そういう学習ができることがエクササイズの特徴だ。

「プログラミングをしないエンジニアがいばっている会社は滅びる!」と2個前のセッションで角谷さんも語っていた、と菅野氏が語るように、エンジニアとして生きるために、またエンジニアが力をつけて開発プロジェクトを上手く回すためにも、エクササイズの価値はありそうだ。

問い合わせ先
株式会社オ-ジス総研
〒108-0023
東京都港区芝浦4-13-23 MS芝浦ビル9F
URL: http://www.ogis-ri.co.jp/otc/hiroba/ (オブジェクトの広場)
E-mail: Info@ogis-ri.co.jp
戻る
コードジンのフッターが入ります