分析手法のキホン:「分解と分類」オブジェクト指向の世界(9)

» 2005年04月09日 12時00分 公開
[河合昭男(有)オブジェクトデザイン研究所]

 第8回「分析から設計へのモデル変換などについて」はシステム開発プロセスで「分析・設計」と隣り合わせで使われるが、本来全く異なる概念である「分析(analysis)」と「設計(design)」について考えてみました。分析は複雑で理解困難な対象を単純な構成要素に分解して本質を見極める科学(science)の範疇(はんちゅう)に入ります。一方設計は、人工物を合成する工学(engineering)の範疇です。システム開発では分析と設計の間に大きなギャップがあります。

 実際、このモデル変換という作業はとても大変で、機械的にできるものではありません。例えば、大学の学部でいえば分析は、(対象が自然現象なら)「理学部」か、あるいは(対象が社会現象なら)「社会科学系の学部」に属し、設計は「工学部」に属すくらいの差があるといえるでしょうか。なお、ある時期から、理工学部という、科学と工学の橋渡しを行うような存在の学部がたくさんできました。分析から設計への変換作業はその範疇に入るものだと考えるのが妥当な気がします。

 今回は前回のテーマの前半「分析」の基本的な2つの手法「分解」と「分類」について考えてみたいと思います。日常生活でも、あるいはシステム開発で行うモデリング作業にもこの類似した2つの概念が現れて混乱することがあります。では、これらはどのように違うのでしょうか?

ピアノを分析する

 ピアノという楽器を例として考えてみましょう。

  1. 「ピアノは鍵盤楽器である」
  2. 「ピアノは鍵盤を持つ」

 (1)の文は、「ピアノは鍵盤楽器の一種である」という認識の仕方を示しています。「ピアノ is-a 鍵盤楽器」という表現ができるので“is-a”関係と呼び、UMLでは汎化関係で表すことができます。鍵盤楽器というものが認識のベースとしてすでに定義されている場合は、これでピアノというものの本質の一部を理解することができます。

 (2)は、ピアノを構成要素に分解して認識するスタイルです。「ピアノ has-a 鍵盤」という表現ができるので“has-a”関係と呼び、UMLでは集約関係で表すことができます。鍵盤いうものが認識のベースとしてすでに定義されている場合は、これでピアノというものの本質の一部を理解することができます。

ALT 図1 “is-a関係”と“has-a”関係(1)

 (1)の鍵盤楽器をさらに分析すると「鍵盤楽器は鍵盤を持つ」−「鍵盤楽器 has-a 鍵盤」なので(1)のモデルは図2の(3)のように表現することができます。これを文章で表現するなら「ピアノは鍵盤を持つ楽器の一種である」となります。

 (2)のモデルに「ピアノは楽器の一種である」を追加すると図2の(4)になります。これを文章で表現するなら「ピアノは楽器の一種で鍵盤を持つ」となります。

ALT 図2 “is-a関係”と“has-a”関係(2)

 さて、これらの例には2つの分析技法が含まれています。“is-a”関係と“has-a”関係です。対象を分類して理解する方法が“is-a”関係、対象をより単純な構成要素に分解して理解する方法が“has-a”関係です。次に、これら「分類」と「分解」という2つの手法について考えてみましょう。

分解

 「万物の根源は水である」−ターレス。古代ギリシャの哲学者たちは、この世界を成り立たせている万物の根源を探し求めました。「水」だけでは足りないと考えた哲学者たちは、「空気」「火」を追加し、エンペドクレスはさらに「土」を加えて4元素説を唱えました。

 デモクリトスは、ものを分解していくと最後にはそれ以上分解することができないものが存在すると考え、それを「atom−原子」と名付けました。つまり、すべてのものはこの原子が組み合わさってできていると考えたわけです。

 このように自然界に存在するものを分解して、最後にそれ以上分解できないものを見つけることが哲学者の1つの課題でした。

広辞苑(第4版)

「分解」

(1)一体をなすものを個々の要素に分けること。

以下省略



 対象を分析するための1つの手法は、そのままでは複雑で理解困難な対象を分解して単純化して理解しやすくすることです。科学の手法も、対象となるものや現象の本質を見極めるために対象を分解して、構成要素となるより単純な部分について調べるのが基本です。

分類

 哲学者たちが自然界に存在するものを構成要素に分解することにより、ものの本質を追究しようと議論しているときに、アリストテレスは分類という違った視点があることに気付きました。ものを分解しないであるがままで理解し、それらの共通点と差異に注目する方法です。

 分解による方法は、万物の根源が見つかったとして、その性質を調べても、それらの合成要素の性質は部分の総和にはならないという問題があります。ものの本質を追求するために分解しているうちに、全体としての本質も消えていきます。酸素の性質と水素の性質を調べてもその合成要素である水の本質を完全に理解することはできません。分類による方法は、全体としての本質を消さないようにしつつ、その本質を追求する方法であるということができます。

広辞苑(第4版)

「分類」

(1)種類によって分けること。類別。

(2)(classification)区分を徹底的に行い、事物またはその認識を整頓し、体系づけること。



 プラトンの「パイドロス」(藤沢令夫訳、岩波文庫)の中で、主人公であるソクラテスはものの本質を人に話したり考えたりするのに「分割と綜合」という2つの方法の有効性を説いています。

 「綜合」とは「多様にちらばっているものを綜観して、これをただ1つの本質的な相へまとめること」で、それとは逆に「分割」とは「自然本来の分節に従って切り分ける能力をもち、いかなる部分をも、下手な肉屋のようなやり方でこわしてしまおうと試みることなく」うまく理解しやすい部分に切り分けることです。

 前回紹介したプラトンの「パイドロス」でソクラテスが語っている「分割と綜合」による方法は、「分解」と「分類」に置き換えて考えることができます。「綜合」は“is-a”関係(1)のスタイルで本質に迫る方法です。ちょっとプラトンの対話編風に考えて見ましょう。

−初めにいったようにピアノは鍵盤を指でたたいて演奏する楽器ですね。ほかにもこのような楽器があるのだろうか。

−はい、オルガンと呼ばれる楽器も鍵盤を持っています。こちらはピアノのように強くたたかなくても押せば音が出るようです。

−ではオルガンも鍵盤楽器の一種、つまり「オルガン is-a 鍵盤楽器」といえるだろう。では鍵盤を持たない楽器というものについて考えてみよう。

−はい、バイオリンやチェロは弦を左手で押さえて音程を変え、右手の弓で弦をはじいて演奏します。

−ではこういった楽器は鍵盤楽器と区別して弦楽器と呼ぶことにしよう。

ALT 図3 楽器の分類

 引き続いて「分割」は“has-a”関係(2)のスタイルで本質に迫る方法です。

−そうすると「弦楽器とは弦と弓を持つ楽器である」と考えよう。

−いえ、日本の三味線には弦はあるのですが、弓の代わりに「ばち」と呼ぶへらで弦をはじいて音を出すようです。

−では「弦楽器とは弦を持つ楽器」としよう。ところで弦楽器をもう少し詳しく説明してください。

−はい、例えばバイオリンは4本の弦を持ち、それぞれ弦の張りを調整するために4つの糸巻きがあります。弦の音を胴体に伝えるのが駒です。胴体の中に隠れて外からは見えませんが、駒の下に魂柱と呼ばれる細い棒が胴体の上下の間に突っ張っていて、駒から伝わってきた音を裏板に伝えます。この位置はミリ単位で音色に影響を与えるものでまさにバイオリンの“魂”です。

−整理すると、バイオリンを分解するとまず本体と弓に分かれる。本体には、4本の弦と糸巻き、駒、魂柱が含まれる。

ALT 図4 バイオリンの分解

−このように「分類」と「分解」という2つの手法は、いろいろな概念を整理したりものの本質をつかむのにとても役立つものです。UMLで図示するとさらに明確になりますね。

−分かりました。楽器だけでなくいろいろと応用ができそうです。UMLは簡単で強力ですね。


 今回は対象の本質を理解するために行う分析の2つの技法「分類と分解」について考えてみました。分類は“is-a”関係と呼ばれ、UMLでは汎化関係で表現できます。集約は“has-a”関係と呼ばれ、UMLでは集約関係で表現できます。

 分解による方法は、複雑な対象を単純で理解しやすい小さな部分に分解するという発想ですが、全体の持つ本質が分解により失われ、分解された部分の総和が全体にならないという問題があります。分類による方法は、全体としての本質を消さないようにしつつその本質を追究する方法であるということができます。次回はプラトン対アリストテレスというテーマでオブジェクト指向を考えてみたいと考えています。

プロフィール

河合昭男(かわいあきお)

 大阪大学理学部数学科卒業、日本ユニシス株式会社にてメインフレームのOS保守、性能評価の後、PCのGUI系基本ソフト開発、クライアント/サーバシステム開発を通してオブジェクト指向分析・設計に携わる。

 オブジェクト指向の本質を追究すべく1998年に独立後、有限会社オブジェクトデザイン研究所設立、理論と実践を目指し現在に至る。ビジネスモデリング、パターン言語の学習と普及を行うコミュニティ活動に参画。ホームページ「オブジェクト指向と哲学」 。

 『JavaデベロッパーのためのUML入門』(監修)。著書は『まるごと図解 最新オブジェクト指向がわかる』『まるごと図解 最新UMLがわかる』(共に技術評論社)、『明解UML−オブジェクト指向&モデリング入門』(秀和システム)。



「オブジェクト指向の世界」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.