「オブジェクト指向は分かりにくい」…。登場から30年以上経っても,未だにオブジェクト指向に対する敷居は高いままだ。ここではオブジェクト指向がなぜ難しいのか,習得するにはどうすればよいのかを見ていく。カギは「人間にとって自然な考えであること」の認識だ。

 今やIT関連製品や技術は,オブジェクト指向抜きには語れないと言ってよい。JavaやC++をはじめとするプログラミング言語は言うに及ばず。パソコンのユーザー・インタフェースは,1つひとつのプログラムをアイコンで表し,直感的な操作を可能にするGUI(グラフィカル・ユーザー・インタフェース)が主流である。GUIは言うまでもなくオブジェクト指向の考え方で作られたものだ。

 CORBAやWebサービスといったネットワーク経由でのアプリケーション連携技術には,アプリケーション呼び出しやデータ送受信の方法にオブジェクト指向を採用している。オブジェクト指向に基づくシステム開発方法論も出そろって来た。OSや各種のミドルウエアも,オブジェクト指向に基づくものが増えている。登場から30年以上経過したオブジェクト指向は,ITエンジニアにとって,もはや「常識中の常識」と言って差し支えないだろう。

 だが,自分自身に問いかけてみてほしい。「私はオブジェクト指向をきちんと理解し,他人に理路整然と説明できる。オブジェクト指向に沿ったシステムの分析・設計や,プログラミングをこなせる」――。あなたはこの問いに自信を持って「イエス」と言えるだろうか。

 あるベテラン・エンジニアは「関連製品や技術が普及しているとはいえ,残念ながら,大半のITエンジニアにとって,オブジェクト指向は,いまだに敷居が高いと言わざるを得ない」と見ている。「分かっているようでいて,人によってオブジェクト指向の理解度に大きな差がある」という意見も非常に多い。

 今やオブジェクト指向は,システム開発における“共通の土台”となりつつある。1人ひとりのITエンジニアがオブジェクト指向を正しく理解することが,円滑にシステム開発プロジェクトを進める上で欠かせない。にもかかわらず,「オブジェクト指向は十分に理解されているとは言えない」ようなのだ。

 そこで本講座では,改めてオブジェクト指向にスポットを当てた。Part1では,まずオブジェクト指向の難しさを整理し,いったいなぜオブジェクト指向の習得につまずいてしまうのかを明らかにする。その上で,オブジェクト指向の基本概念である「カプセル化」,「メッセージ・パッシング」などを,それが登場した理由とともに解説する。

耳慣れない用語にとまどい

 まずオブジェクト指向の難しさは,一体どこにあるのか。30人近い若手やベテランのエンジニアに取材した結果,それは2つに集約できる。1つは耳慣れない用語,もう1つはオブジェクト指向の考え方である(図1)。

図1●オブジェクト指向の難しさ<br>一見難解な用語や,手続き指向とは異なる考え方が,オブジェクト指向を難しくしている
図1●オブジェクト指向の難しさ
一見難解な用語や,手続き指向とは異なる考え方が,オブジェクト指向を難しくしている
[画像のクリックで拡大表示]

 オブジェクト指向には「継承」や「抽象化」,「メッセージ」,「振る舞い」など,“ITらしくない”言葉が数多く登場する。これらの言葉が災いして,慣れていない人からすれば,なんでそんな言い回しをするのかと,不思議に思えてくる。

 オブジェクト指向の定義もまちまちである。表1を見てほしい。オブジェクト指向やJavaに関する参考書から,オブジェクト指向の定義を抜き出したものだ。無理もない面もあるが,どの解説文も微妙に表現が異なっているのが分かるだろう。用語がとっつきにくいのに加えて,定義がまちまちでは混乱するのも当然である。

表1●オブジェクト指向を定義した様々な記述の例
表1●オブジェクト指向を定義した様々な記述の例
[画像のクリックで拡大表示]