第1回 オブジェクト指向の考え方 河合昭男 (有)オブジェクトデザイン研究所 2002/9/21 UML、Java、デザインパターンなどの言葉をソフトウェア業界の人で聞いたことがないという人はいないでしょう。また、これらはすべてオブジェクト指向と深い関係があるということも、もはや常識です。しかし、あらためてオブジェクト指向とは何かと問われると、一部の人を除いてはよく分からないというのが現状ではないでしょうか。 オブジェクト指向に基づく応用技術が徐々に普及してきていますが、オブジェクト指向の基本概念をきちんと理解しておかないとこれらを使いこなすことはできません。せっかくJavaやC++などのオブジェクト指向言語を活用しても、その特徴を十分生かすことができず、Cと同じプログラミングを行ってしまうことになります。UML入門書を読んだだけでは、モデリングはできないのです。 オブジェクト指向の基本的な考え方をあらためて学ぶことは、結果としてオブジェクト指向の応用技術を使いこなすための近道です。形だけまねをしても、その心が分からなければ駄目だということです。今回「ここから始めるオブジェクト指向」と銘打って、オブジェクト指向の基本的な考え方の理解に重点を置いた連載シリーズの機会をいただきました。浅学ながら、原点に戻ってやさしく説明することを目指します。よろしくお願いします。
■ユビキタス 最近「ユビキタス(ubiquitous)」という言葉がはやっています。TRONプロジェクトを主宰されている坂村健東京大学教授が「どこでもコンピュータ」のビジョンを熱く語っておられたのは、いまからもう10年くらいも前のことだったと記憶しています。 この場合のコンピュータというのは、メインフレームやサーバ、PCなどのいわゆるコンピュータだけではありません。携帯電話、モバイル端末、PDA、カーナビをはじめコピー機やFAXなどのビジネス機器、さらには家電製品に至るまでマイコンチップが内蔵されています。これらのコンピュータがそれぞれ単独で存在するのではなく、通信しながら協調動作を行えばどんなことができるだろうかというのがTRONプロジェクトの壮大な1つのテーマです。 コンピュータの世界ではドッグイヤー、すなわち時計の進み方が通常の7倍だといわれています。これはやや誇張ですが、やはりかなり速いことは事実です。知らない間に社会の中にはコンピュータが浸透して、至る所に遍在し、かつそれらが孤立して存在しているのではなくコラボレーションを行っている「ユビキタスコンピュータ」の時代になりつつあります。
■どこでもオブジェクト ソフトウェア関係の雑誌を開くと、UML、Java、デザインパターンといったテーマが頻繁に取り上げられています。これらはいずれもオブジェクト指向と深い関係があります。オブジェクト指向という言葉を前面に出さなくても、ソフトウェアの世界は知らない間にオブジェクト指向技術が浸透していて、気が付いたらまさに「ユビキタスオブジェクト」「どこでもオブジェクト」の時代になっています。
■自律分散協調動作 人間社会をオブジェクト指向の考え方で眺めると、1人ひとりの人間をオブジェクトと考えることができます。独立した人間が集まって社会というシステムを構築しています。人はそれぞれ自分の役割を持っています。1人でできない仕事は会話を通してコミュニケーションを行い、ほかの人々と協力して成し遂げようとします。 例えば、会社の中では自分の役割は明確に決まっています。仕事を依頼されたら自分1人で解決できない問題はほかの人に協力してもらって解決します。組織をオブジェクトと考えることもできます。ある組織に仕事の依頼がきたら、その組織内で解決できなければほかの組織に協力を要請して自分の組織の責務を成し遂げます。 組織の粒度は、小はグループ・課から大は会社レベルで考えることもできます。どの企業も単独で仕事をすることはできず、ほかの企業と協力し合って社会に貢献することができるわけです。 つまり1つひとつのオブジェクトは独立して存在し、それぞれ固有の役割・責務を持っています。それらは孤立した存在ではなく、互いにメッセージを通じて協調動作を行いながら、全体として1つの仕事を行っている姿がオブジェクト指向の基本的世界観です。
■インターネット時代 インターネット技術はビジネスの形態を変え、経済、社会への影響度も18世紀に始まった産業革命に匹敵するくらいのインパクトがあるといえます。 オブジェクト指向の考え方は特に最近できたというものではありませんが、インターネットの普及に伴い再び注目されるようになってきました。それは、至る所に遍在するコンピュータが、インターネットを通してコミュニケーションを行いつつ全体として大きなシステムとなっている姿が、ちょうどオブジェクト指向の基本である自律分散協調動作と重なりあっているから好都合、というのが大きな理由です。 ■自分を取り巻くオブジェクト 人間をオブジェクトととらえ、自分を中心とした人間関係を考えてみましょう[注1]。 [注1] この例えは、佐藤啓太さんにヒントをいただきましたことを、この場を借りてお断りしておきます。 自分を中心に両親、兄弟、友人など自分と関係がある人を挙げてゆき、線で結びます。これは人間関係を表す静的なモデルです。
■コラボレーション ある日あなたは、お母さんに「明日持っていくお弁当を作ってください」とお願いします。お母さんは冷蔵庫を開けましたが、卵が入っていなかったので、あなたの妹にお金を渡して「卵を買ってきて」と頼みます。妹は買い物をして、卵とお釣りを返します。明日の朝、お母さんは弁当を作ってあなたに渡します。 これを図で表現すると、図5のように描くことができます。これは人間関係を表す動的なモデルで、自律分散協調動作の例です。
■オブジェクトとは “object”という言葉の意味はおおむね「もの」「対象」「目的」の3つです。
■テレビの例 例としてテレビを考えてみます。Aさんの家にはテレビがあります。Aさんにとって、テレビはドラマやニュースなどの番組を見るための道具です。Aさんにとってのテレビの重要な属性は、例えば2カ国語対応、BS対応などでしょう。 Bさんの家にもテレビがありますが、もっぱらゲーム専用に使用しています。2カ国語対応、BS対応など関係ありません。Bさんにとって、ゲーム機とつなげるAV端子が前面に付いているかどうかが重要です。 Cさんは電器屋さんでテレビを販売しています。テレビは販売すべき商品であり、その重要な属性は、仕入れ価格と販売価格です。ほかの家電製品と同じく、さまざまな機能は商品知識としては必要ですが、Cさんにとって重要なのは価格です。 Dさんはメーカーの工場でテレビを製造しています。テレビは組み立てるべき製品であり、重要なのは、どういった部品が必要か、部品はどこから調達するのか、です。例えば、「ディスプレイのタイプ」といった要素が、Dさんにとっては重要な問題となってきます。CRT、液晶またはプラズマなどのディスプレイタイプにより調達先が異なってくるためです。 これらの例のように、テレビはオブジェクトですが、そのとらえ方は目的と視点によりさまざまです。
■「もの」と概念 オブジェクトは抽象概念ではなく、具体的な「もの」です。「もの」といっても目に見えて触れることができるtangibleな「もの」もあれば、概念的で、直接見たり触れたりできないintangibleな「もの」もあります。 tangibleなオブジェクトとは、例えば人、車、いす、PC、携帯電話などいわゆる「もの」のことです。人という抽象概念ではなく、具体的な姓名を持つ1人ひとりがオブジェクトなのです。車という抽象概念ではなく、あなたが現在所有しているx社製のナンバーxxxxの車がオブジェクトなのです。あるいは今朝あなたが乗ったタクシーという具体的なものがオブジェクトということになります。 一方、intangibleなオブジェクトとは、旅行、会議、授業、注文などの概念的な「もの」のことです。ただし、旅行という抽象概念ではなく、あなたが今年の夏休みにハワイに行ったという具体的な旅行がオブジェクトです。x月x日x時にxx会議室で行う具体的な会議がオブジェクトです。
■オブジェクトでないもの
■次回予定 第2回は「オブジェクト指向の基本概念」というタイトルで、オブジェクト指向で用いられる基本的用語の説明を中心に、オブジェクト指向の考え方にもう1歩踏み込んでみたいと思います。
【参考文献】 『まるごと図解 最新オブジェクト指向がわかる』、河合昭男、技術評論社 『まるごと図解 最新UMLがわかる』、河合昭男、技術評論社 『ゼロからわかるオブジェクト指向の世界』、岩田裕道+手島歩三、日刊工業新聞社
|
[an error occurred while processing this directive] |