コードジンのヘッダーが入ります
「オブジェクト指向で開発している」と言う人は多いが、果たしてそれは本当にオブジェクト指向か? という問いからセッションは始まった。「Strutsを使っている」という人もいるが、オブジェクト指向というからは「責務を持ったオブジェクトがコラボレーションすることによって、複雑なシステムを構成するべき」だという
しかし、そう主張しつつも、それは「難しい」と菅野氏も認める。「以前の慣習から抜け出せない」「設計者やアーキテクトが理解していればよい」「難しい」「マニアック」「実践的じゃない」などなどの誤解があるためだ。
ちゃんとオブジェクト指向するためには、一部の開発者だけではなく、プロジェクト全員が学習することが重要だ。そのとき初めて、オブジェクト指向は使える「武器」になる。そこで、開発の仕事に入って数年目の人を対象に、体に叩き込むハードな学習手法が編み出された。それが「オブジェクト指向エクササイズ」だ。
この“エクササイズ”では、非常にハードなコーディング規約を、1000行程度の小さめのプロジェクトに適用することで、オブジェクト指向プログラミングを強制的に身に着けようとする。その“ハードな”規約とは、次の9箇条だ。
ここではスペースがないので、ルールの詳細はぜひ同書籍などにあたってほしいが、今回のセッションのキモは、このためにオブジェクトの広場で実際に演習が行われたことだろう。具体的なコードはオブジェクトの広場で公開されるそうなので、規約の適用前後でクラス構造がどのように変化したのかだけでも見ていただきたい。責務が分割され、オブジェクト間のコラボレーションによって機能が実現されるようになった驚異の変化がここにある。
この演習を行うことで、学習効果として、惰性で行っていた設計の見直しができたという。圧力をかけることによってギリギリまで考えさせる。制約によっていろいろなテクニックが引き出される。10年の開発経験がある「広場」の方々にとっても、この経験はかなり勉強になったという。
このエクササイズは、とにかくきつい! インスタンス変数が2個なんていうのは普通は無理だ。その無理を通して、壁を突き抜けるために、あらゆるテクニックと知識を総動員し、議論を巻き起こす。そういう学習ができることがエクササイズの特徴だ。
「プログラミングをしないエンジニアがいばっている会社は滅びる!」と2個前のセッションで角谷さんも語っていた、と菅野氏が語るように、エンジニアとして生きるために、またエンジニアが力をつけて開発プロジェクトを上手く回すためにも、エクササイズの価値はありそうだ。