オブジェクト指向のこころ

むかし、といっても7年ほど前でしょうか。VB.NETオブジェクト指向言語だということでオブジェクト指向とはなんぞや?という話をよくしました。ぼんやりとしていてつかみ所のない、しっくりこない感じが今ではとても懐かしく思えてきます。

その頃私はVB6と.NETの間をふらふらとしつつも個人的にはC#を使うようになっていました。オブジェクト指向は言語にその仕組みがあるかないかということよりも、概念的な話だと今は理解していますが、当時はVB6はなんちゃってオブジェクト指向言語だ…とかいろいろな話をした記憶があります。

そんな私が、オブジェクト指向をある程度身近に感じられるようになったのがデザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)です。

この書籍はデザインパターンを通じてオブジェクト指向を学ぶことが相乗効果をもたらすという考えに基づいて書かれています。おそらく「、犬というクラスがあって、犬には4本足があります。ワンと吠えます…」的なオブジェクト指向チックなことを知っている人であれば十分読み進められると思います。

先日から久々に読み返してみたのですが、得るものはたくさんありました。パターン自体について知識を整理できたこと、何度か読み返しているのに知らなかったことがあったりと。

たとえば、FacadeパターンとAdapterパターンは確かに違うのですが、最近は意識することがなくなりました。FacadeパターンやAdapterパターンという単語を使用すること自体がなくなったということでしょうか。

また、Strategyパターンも多用しているにもかかわらずそれがStrategyパターンであることをほとんど意識していませんでした。デザインパターンについて人と会話する機会がすっかり減ったせいかもしれません。

最近ではデザインパターンという言葉さえ聞かなくなった訳ですが、きっと私たちが扱う対象がより具体的になったせいなのでしょう。フレームワークを利用する立場の人にとってはデザインパターンはあまり関係ないなぁと改めて感じました。(決して不要というわけではなく、知らなくても何とかなるという程度の意味合いです。)

フレームワークを利用するということは、システムの全体から具体的な部分だけを切り出して実装することになるのでなるほどと妙に納得してしまいました。制御の反転というフレームワークの考え方はとてもすばらしいと思う反面、フレームワークばかりを利用する立場だと発想が具体的なことばかりになりそうな気がします。

コンピューターシステムの世界は、そのハードウェアの進歩に伴い高度な抽象化を行い、具体的な内容を切り離して進歩しています。ハードウェアを抽象化したOS、OSを抽象化したブラウザまたは、情報のリソースを抽象化したクラウドなどなど。古い知識は土台になっているので、こうしてたまに古い知識をブラッシュアップすることで得られることも多くあるのでしょう。