Page  1  2 

オブジェクト指向についての五つの疑問に答えます
(日経BP 日経ソフトウエア2001年1月号より2002年1月号に「オブジェクト指向は難しくない」として連載された)
(平澤 章)

PDFはこちら PDF Adobe

皆さん,はじめまして。縁あって今月から“オブジェクト指向”をテーマに連載記事を書くことになりました。これまでオブジェクト指向がよくわからなかった方たちでも,「なーんだ,そういうことだったのか」と納得していただける内容を目指します。よろしくお願いします。

オブジェクト指向ってなんだ?

さて,皆さんは「オブジェクト指向って一体なんですか?」と聞かれたらどう答えるでしょう。ちなみに本誌2000年10月号の用語集には,「オブジェクト指向とは,オブジェクト(もの)のあり方に注目して,データとその機能を一体化して扱う手法」と書かれています。うーん,何のことやら,という感じですね。またオブジェクト指向というと,継承やカプセル化,ポリモーフィズムといったキーワードが必ず出てきます。しかし,いきなりこれらの用語を説明されたって,何にも予備知識のない人にはさっぱりわからないでしょう。「だからオブジェクト指向って,とっつきにくい」とか「勉強しても挫折しそう」なんて声が聞こえてきそうです。これを読んでいる皆さんの中にも,そういう思いを持っている人は少なくないかもしれません。

試しにオンライン書店アマゾンのサイト(http://www.amazon.co.jp)で,「オブジェクト指向」をキーワードに書籍を検索してみてください。筆者がやってみたら,なんと450冊以上もの書籍が見つかりました。それらのタイトルを眺めてみると,以下のように実にたくさんのキーワードが散りばめられていることがわかります。

UML,デザイン・パターン,Java,C++,Ruby,モデリング,フレームワーク,Delphi,CORBA,DCOM,ActiveX,Smalltalk,分析/設計,方法論,オブジェクト指向データベース,画像処理,クラスライブラリ…

まるで,ソフトウエア開発に関する用語のオンパレードみたいですね。これでは,一口にオブジェクト指向といっても混乱するばかりです。そこで今回は,オブジェクト指向をもっと大局的に理解するために,次の五つの切り口(疑問)を用意しました。

1) オブジェクト指向技術は普及している?

2) オブジェクト指向技術の習得は難しい?

3) オブジェクト指向技術による開発は従来とどう違う?

4) オブジェクト指向技術を採用すれば生産性は向上する?

5) オブジェクト指向技術を採用するとソフトウエアの実行性能(パフォーマンス)が悪くなるって本当?

以降は,これらの疑問それぞれについて,筆者なりの考えを紹介したいと思います。これらの疑問を解き明かせば,きっと「オブジェクト指向とは何か」ということを理解するヒントになると思います。「オブジェクト指向なんてわかっている」という方も,ぜひ一緒に考えてみてください。

以降は,これらの疑問それぞれについて,筆者なりの考えを紹介したいと思います。これらの疑問を解き明かせば,きっと「オブジェクト指向とは何か」ということを理解するヒントになると思います。「オブジェクト指向なんてわかっている」という方も,ぜひ一緒に考えてみてください。

疑問1 オブジェクト指向技術は普及している?

この質問に対して「普及していると思う」と答える人の割合はどのくらいでしょうか? 多くの人は「オブジェクト指向なんて自分には関係ないさ」と考えているかもしれません。もしかしたら,低いことでは定評のある(?)どこかの国の内閣支持率にも負けてしまうかもしれません。しかし筆者は断言します。

「オブジェクト指向技術は完全に普及段階に入っており,その流れは今後も止まらない」 まず,皆さんの周りをよーく眺めてください。「ほら,周りはオブジェクト(=もの)ばかりでしょ?」というのはつまらないオチでしたね。失礼しました。さて気を取り直してもう一度。皆さんが使っているコンピュータの中をよーく眺めてみてください。「ほらね,オブジェクトだらけでしょ?」といってもやっぱりわかりませんね。再び失礼しました。しかし実際は,私たちが意識する,しないにかかわらず,現在のコンピュータの中はオブジェクト指向技術だらけになっているのです。

例えば開発言語を取り上げてみましょう。皆さんは普段,どんな言語を使っていますか? Java? C++? Visual Basic(VB)? Delphi(Object Pascal)? Ruby?…これらはすべて「オブジェクト指向言語」と呼べるものです。つまり,言語体系の中に,オブジェクト指向のエッセンスが取り込まれている,というわけです。「いや,VBは違うだろ?」――確かにVBをオブジェクト指向言語と呼ぶことに,違和感を覚える人は多いかもしれません。しかしVBには,現バージョンでもクラス・モジュールという立派なオブジェクト指向の機能があります。ですから,VBもオブジェクト指向言語の一つだと考えて差し支えないでしょう。次期版のVisual Basic.NETでは,継承機能も使える,本格的なオブジェクト指向言語に変身することが明らかになっています(注1)

これらの言語のうち,特にJavaはオブジェクト指向言語として有名です。Javaを使えばちょっとしたアプレット(注2)などを簡単に作って動かすことができます。またJavaは,サーバー・アプリケーションや携帯電話,家電製品などの領域にも用途が広がっていますが,その背後ではたくさんのオブジェクト(ソフトウエア部品)が裏方として動いています。そうしたソフトウエア部品群,例えばJ2EE(注3)やEJB(注4)などは,オブジェクト指向技術の結晶と言ってもよいでしょう。

さらに,RDB(リレーショナル・データベース)にODB(注5)の技術を取り込んだORDB(注6),通信技術のCORBA(注7),クラスライブラリのMFC(注8)やSwing(注9)など,現在のソフトウエア開発の多くの部分で,オブジェクト指向技術は中核技術になっている,と言えます(図1)。

(図1)

とはいえ,「うーん,そうは言っても実感ないなあ」と思った方もいるかもしれません。確かに,開発言語やミドルウエアに比べ,一般のアプリケーション開発では,まだまだオブジェクト指向技術は脇役的な存在のようです。C++コンパイラをただのCコンパイラとして使っていたり,VBでもクラス・モジュールをいっさい使わなかったり…といった開発スタイルは珍しくありません。

しかし筆者は,こうした“非オブジェクト指向的開発”が今後いつまでも続くとは考えていません。開発言語やミドルウエアをきちんと使いこなすためには,それを支えるオブジェクト指向技術の理解が必須(ひっす)だからです。こうしたことから,今後はアプリケーション開発でもオブジェクト指向技術を活用するケースが多くなるでしょう。

(注1)米Microsoftは,オブジェクト指向技術を非常にうまく使いこなして自社製品に取り込んでいる会社だと,筆者は感じています。

(注2)アプレットは,ネットワークを通じてWebブラウザにダウンロードされて実行されるJavaプログラムのこと。

(注3)J2EE(Java2 Platform, Enterprise Edition)は,Java言語を使ってサーバー・アプリケーションを構築するためのプラットフォーム仕様。

(注4)EJB(Enterprise JavaBeans)は,サーバーで利用されるJava部品プログラムの仕様。

(注5)ODB(Object Oriented Database:オブジェクト指向データベース)は,オブジェクト指向技術を使ったデータベース。

(注6)ORDB(オブジェクト指向リレーショナル・データベース)は,ODBの技術で拡張したRDB。

(注7)CORBA(Common Object Request Broker Architecture)は,標準化団体OMG(Object Management Group)が定めた,分散オブジェクト通信技術の仕様。

(注8)MFC(Microsoft Foundation Classes)は,マイクロソフトが提供するWindowsアプリケーションを開発するためのC++用クラスライブラリ。

(注9)Swingは,Javaアプリケーションを開発するためのグラフィックス用クラスライブラリ。

Page  1  2 

このサイトについてプライバシーポリシーサイトマップ

お問合わせ

Copyright (C) 2000-2011 UL Systems, Inc. All Rights Reserved.