九州のベンチャー企業で、システム屋をやっております。「共創」「サービス」「IT」がテーマです。

オブジェクト指向再燃(前編)

»

かつてエンジニアライフでオブジェクト指向ネタはタブーでした。オブジェクト指向
に関する記事を書くと必ず炎上し、類焼するのです。最近は、ハードなコラムニスト
もコメントも少なくなってきているようなので、そんなに盛り上がることはないかの
かもしれませんが。

そもそも最近では、オブジェクト指向という言葉自体、耳にする機会が減ってきてい
ます。流行り廃りの激しい業界ではありますが、主たるプログラミング言語の多くが
オブジェクト指向を標準サポートしているところを見ると、廃れたのではなく一般化
したのでしょう。

加えて「staticおじさん」という言葉も見かけることが少なくなりました。この
「staticおじさん」というのは、古い感覚に囚われて周り迷惑を迷惑をまき散らすプ
ログラマを揶揄した言葉ですが、もとはエンジニアライフに投稿された「(オブジェ
クト指向言語でも)メンバー関数をstatic宣言すれば(従来の手続き型言語の)ファ
ンクションの様に扱えるので、(自分はインスタンス化の必要性を感じていない)」
という趣旨のコラムが発端です(まる括弧は著者補足)。

投稿は2010年。Javaの普及に伴てオブジェクト指向が流行りはじめたころでしょう
か。コラムの内容自体は大したことないのですが、投稿者の上から目線の発言が反感
かったようで、コメント欄は大いに盛り上がりました。ただコメントでのやり取りの
多くはオブジェクト指向そのものの論考ではなく、オブジェクト指向は(自分の)実
務につかえない、もしくは、やろうとしてることはオブジェクト指向を使わなくても
実現できるのに、なぜオブジェクト指向にしないといけないのか、という意見とオブ
ジェクト指向正論派のやり取りに終始していました。

私はまだエンジニアライフとは出会う前の出来事で、炎上自体はリアルに見てはいま
せんでしたが、自身のオブジェクト指向をネタにしたコラムが類焼したことでオリジ
ナルを知ることができました。実は当時、コラムを二部構成を予定しており、まずは
問題定義編、次に解決案編を考えていました。ところが問題定義編で盛り上がってし
まったので、疲れてしまい、解決案編はあきらめました。以来、エンジニアライフで
オブジェクト指向をネタにするとエライことになる、ということで敢えて避けてきた
感があります。

では何故、オブジェクト指向ネタは盛り上がったのか。今改めて考えてみると、ちょ
うど2010年頃がオブジェクト指向が多くの開発現場に広がり始めた、商品ライフサ
イクルマネジメントでいうところの成長期にあったからではないかと思います。私が
実務としてオブジェクト指向に最初に関わったの2000年の開発案件で、サーバサイ
ドJavaが採用されていました。その3年位前から情報としてJavaやオブジェクト指
向の情報を耳にするようになり、ようやく実務で、そんな感じです。

ちなみにその、2000年の開発案件は後にサン・マイクロシステムズのどこかの支社
長が、九州でサーバーサイドJavaの大型案件が動いていたのは知っていたが、まと
もに動くとは思わなかったと言っていたので、Javaにしろオブジェクト指向にしろ
業務系のシステムとしては導入期の手探り状態だったのでしょう。当時オブジェクト
指向の主戦場はGUIメインのクライアントアプリをC++を使って開発、といったも
のが主流で、JavaはVMの関係でマシンスペックが足りず実務で使うにはちょっと、
そんな時代でした。

それでは、なぜ成長期には話が盛り上がるのか。これまで特定の領域の技術者だけに
必要だった知識が、一般的に多くの技術者にも求められる状況になったため、消化不
良がおこり意見の対立が起こるからだと思っています。なかでもパラダイムシフトに
ついていけない技術者が「Staticおじさん」などと揶揄され、さらに火に油を注いで
まわる。成長期の混乱に陥りがちな百家争鳴の様相をていしていたのではないかと。

導入期から成熟期の混乱を経て、成熟期へ。10年期間での移行したと考えて違和感は
ありません。成熟期となり市場に認知されたからこそ、当たり前となり、改めて敢え
て言葉を口にする機会が減ってきたのでしょう。オブジェクト指向言語ネイティブの
技術者も増えてきているはずです。そんな時期だからこそ、(もう炎上することもな
いだろうから)12年目に挫折したネタを書いてみようと思ったわけです。

中編へ続く。

Comment(4)

コメント

仲澤@失業者

やや懐かしいお題なのでコメントさせてください(とほい目)。
GUI系(MFC+Win32SDK)のプログラマの自分にはコメントできる知識がほぼ皆無でしたので、
件の会話には加われず、読んでいるだけでした。

OOPは深掘りしなければ簡単で分かりやすく、かつ人に説明しやすい概念なので当時から「まぁ当分これだな」と思ってました。

「ぷらぷらじじい」としては、ガベージコレクションが嫌い(寿命くらい決めさせてくれ)なのでこれで炎上してくれると楽しめます。どうぞよろしく。

通りすがり

通りすがりのiOSエンジニアです。

オブジェクト指向ですが,やはりスマホアプリの開発の影響は大きいと思いますよ。当時のiOS開発言語だったObjective-C,ものすごくオブジェクト指向を意識した言語ですからね。

Objective-Cを扱う人間からすると,GUIアプリとの親和性,MVCアーキテクチャとの親和性,拡張のしやすさ等々の面でやはりオブジェクト指向は優れている(それになんだかクールに思える)と感じるんですよね。他方で,サーバサイドの開発言語ではこれらは必要ないだろうというのもうなづけます。

ただ,Objective-C(とそれを初めてネイティブに適用したMacアプリ開発フレームワークであるAppKit)は確かにやりすぎた感があって,Swiftになってから揺り戻しがきているとは思います。何でも参照渡しではなく値渡しが基本になり,classよりもstructとprotocolが推奨されているのは,ある意味新しいオブジェクト指向の形だと思いますね。

コメントを投稿する