行われたPHPカンファレンス2014で発表をしてきました。gihyo.jpスライドは以下の内容です。PHPカンファレンスでは公募セッションは最大30分のため、なぜ今回このようなタイトルを発表しようと思ったか、という背景については話ことができませんした。こちらのブログでは、スライドの共有と共に、その辺りの経緯について書いておきたいと思います。今オブジェクト指向か?オブジェクトデザインは原著から数えると、もう12年になろうとする訳です。これはセッションの中でも話したのですが、2003年当時はまだWebのフレームワークもまだ今日のようなものでなく、多くの会社は各社オレオレフレームワークを作っていた時代です。オブジェクト指向が必要ないような使い捨てサイトならまだしも、受託やサービスなどソースコードを維持したり、機能アップをするような場面ではオブジェクト指向が必要だと考え、今のアジャイルムーブメントかそれ以上に語られていたはずです。オレオレフレームワークを作ったことがある人は、オブジェクト指向やデザインパターンをよく勉強してそのあり方を議論したものです。そのような人たちが、現在の入門プログラマーに「オブジェクト指向がわかってない」と言っても、そもそも通じないと思ったのがきっかけでです。ここ4,5年の間にWebからプログラミングを始めた人(Webフレームワーク世代)は、すでに素晴らしいWebフレームワークがあり、その上でプログラミングをすることを要求されます。Webプログラミング入門」や「よくわかるPHPの教科書」あたりを読んでから、各フレームワークの本や公式チュートリアルを片手にアプリケーション開発を始めています。オレオレフレームワーク世代のオッサンが通過したオブジェクト指向やデザインパターンの経験に基づいてソースコードに手厳しいコメントを付けても、受けた方も辛いだけなのです。今どのような弊害が起きているのかで、このようなWebフレームワーク世代はCakePHPやその他のWebフレームワーク(MVC的なもの)を使って、MVCの枠に収めようとしてFatコントローラになったりしやすいのです。特定のディレクトリにフレームワークが指定した方法で書いていれば、良くわかんないけどうまく動いてしまうのです。フレームワークすげーな!という訳です。それ以外の書き方は知らないし、どこにも書いてないのです。結局、適切にクラス分割ができないため、結果として与えられた範囲の枠組みで問題はない、と考えているような状況を見かけるのです。classってPHPの文法です、キリッ!とか言われたことはないですが、まぁ無くはないのかな...と。フレームワークの本に、その概念や考え方を書くべきだという声もあるかもしれません。私もCakePHP本の執筆に携わったことがあり、耳の痛い話です。フレームワークの本では、すべてのフレームワークについての説明もページ数的に困難な中、OOPやMVCの概念のような内容を解説するのは困難なことも事実です。そこで話してみようと思ったもちろん、オブジェクト指向ムーブメント世代のオッサンであってもオブジェクト指向をみんな理解しているかというと、そういう訳ではありません(まぁ少なくともみんな読書会なんかして勉強はしていたような気がします)。今時のWebフレームワーク世代だって、しっかり勉強している意識高い人はいっぱいいるし、知っています。最近プログラミングを始めた人は、技術の移り変わりが激しいし、言語やフレームワークはどんどんバージョンアップするし、なかなか基礎的な事に対する勉強時間を作るのが難しいのではないかな、と思うのです。オブジェクト指向の勉強って難しいし「銀の弾丸」は無いわけです。最近そういった勉強会の話もあまり聞きません。どのあたりから始めると良いだろう?という当たりを付けられるセッションをしてみたいと思ったのです。私が技術支援で入った中で良く感じている問題はオブジェクト指向プログラミングというより、そもそものオブジェクト指向がうまく理解されていないと思ったので以下のポイントに絞った内容にしたいと思いました。オブジェクトとは何なのかオブジェクトを導出するにはどうしたら良いのか今回のPHPカンファレンスのテーマは「知りたい,があなたを変えていく」これらの要件に合うのは、責務駆動設計の中心的原理とテクニックを解説した「オブジェクトデザイン」の紹介が最適で、30分という時間に適している(知りたい==何か持ち帰って始めることができる)と思ったのです。セッションをやっている間、いつも盛り上がっていないと不安なので、小ネタを差し込むのですが、皆さん真面目に聞きに来ていただいたので、講演者から見るとダダ滑りでした(個人的な感想です)。joind.inのコメントを読ませていただいたり、顔見知りの方に確認した範囲では何かしら体験を持ち帰っていただけたようで「知りたい」につながったのかな、と思っています。私の講演を聴いていただいてコメントまだな方は、コチラに一言いただけると嬉しいです。joind.inは匿名でのコメントもできますので、ご安心ください。大垣靖男」の対談セッションでも思ったのですが、お二人の話の大きな相違点のベースである現実論と理想論のケースはセキュリティだけではなく、オブジェクト指向についても同じだな、と思いました。私はすべての人がオブジェクト指向を理解して進めるのが理想だと思うし、アジャイル原則の私たちはオブジェクト指向を理解しているプログラマーであるべき、と思っています。すべての人がそうでないというのも理解できるので、理解度はともかくオブジェクト指向と向き合って欲しいなと思っています。そこから何かが変わると良いな、と。実は、セッションを応募するとき、PHPカンファレンスでは重複して申し込めると聞いていたので、オブジェクト指向超入門(上)と、オブジェクト指向超入門(下)の2セッションにして合わせて60分で申し込もうと思ったのですが、それは通らなそう(www)と思って自重しました。どこかで60分セッションやれる機会があれば、やってみたいなと思うのでした。