「オブジェクト指向神話からの脱却」という特集をWEB+DB PRESSで書きました

オブジェクト指向神話からの脱却」というあおり気味タイトルの特集をWEB+DB PRESS vol.132で書きました。

12/24発売!クリスマスプレゼントです

大まかには、「オブジェクト」でソフトウェアをぜんぶ考えるということに無理があったので、パーツそれぞれ適したやりかたでやっていこうぜ!という内容です。
ソフトウェアを切り出したときのパーツとしてのオブジェクトの特性が同質であるという暗黙の前提があって、だから「オブジェクトの話をすればソフトウェア開発の話がぜんぶできる」みたいな幻想をもってしまったんじゃないかと。

なので「オブジェクト指向からの脱却」ではなく「オブジェクト指向神話からの脱却」になっていて、オブジェクトでぜんぶやれる(オブジェクトがないと何もできない)という神話から脱却しようぜって感じですね。
なので「じゃあオブジェクト指向の次は?」というのも、「そもそもナントカ指向でやっていけるって発想をやめい!」となります。

まあ、このあたりの話をちゃんと書いた感じ。
オブジェクト指向 カテゴリーの記事一覧 - きしだのHatena

コードの指針として言うと、オブジェクトは全部同質ではなく、少なくともエンティティ、コントロールバウンダリのような区分ができて、エンティティはデータを持つだけなのでメソッドの引数にコントロールバウンダリを取らないとか、コントロールは処理をもつだけなので状態をもたず関数のまとまりになってレイヤーをつくるとかの話をしてます。
バウンダリは状態遷移を管理しつつ実装を切り替えるので継承をベースにするオブジェクト指向がハマります。GUIが流行ったのでオブジェクト指向が流行って、GUI部品はバウンダリなのでその特性がソフトウェアパーツ一般の特性と勘違いしてしまったのがオブジェクト指向が神話になる要因だったかもなぁ。

あと、「オブジェクト指向」としてわざわざ話すのであれば「オブジェクト指向」固有の話にならないと実務的な意味がないので、「うまくソフトウェアを作る手法」でオブジェクトがからまないんだったらソフトウェア工学を見ればいいし、「ナニカにメソッドを呼び出す(メッセージを投げる)ならオブジェクト指向だ!」「ソフトウェア全部オブジェクトだからオブジェクト指向で!」みたいな話は、結局実際にはオブジェクトに依存しないそこに適した技法で考えることになるよね、と。

そういう話をするために、クラスとか継承とかの説明を丁寧にやってるので、「オブジェクト指向やりたい!」という人にもいいと思います。

ということで、そういう考え方もできるな、くらいに読んでもらえれば。
最後に、スペースがなかったので入らなかった、みんな大好きイヌネコクラスの図を載せておきますね。