前回は「UMLと自然言語」というテーマで、UMLも形式言語という範疇の一種の言語であるというお話しをしました。UMLはオブジェクト指向によるモデリングのための言語ですが、オブジェクト指向は現実世界をそのままモデリングできるという特徴があります。従って、自然言語で表現できるものはそのままUMLで表現することも難しくありません。
例として英語の5文型を取り上げ、UMLでどこまで表現できるかにチャレンジしてみました。第3文型SVOは典型的なUML2項関連で表現することができます。つまり主語・目的語がオブジェクトになり、述語はリンクになる。第2文型SVCでは補語は主語の属性になります。第4文型SVOOは、主語と直接目的語の間の2項関連および直接目的語と間接目的語間の2項関連の合成として表現することができます。第5文型SVOCのVは人間の感情や感覚的要素が大きく、オブジェクト指向で表現するのは困難です。
今回はその続編として「UMLで新聞記事を読む」というテーマで、UMLで新聞記事の内容をどこまで表現できるかにチャレンジしてみましょう。題材として日本経済新聞の記事を取り上げます。そもそもUMLは英語圏で生まれた言語であり、英語の文章の方が合っているとは思いますが、日本語の文章もおおむね英語の5文型に当てはめて考えることができます。
小室直樹氏の一連のユニークな著作に「論理の方法」[*]という1冊があります。小室氏の文章はどんなテーマでも明快にすぱすぱ切ってゆき、読んでいて気持ち良いです。筆者が最近なるほど……と思ったのが、上に挙げた『モデルとは論理の結晶である』です。
前回UMLはU+M+Lすなわち統一されたモデリングのための形式言語、略して「統一モデリング言語」と呼ばれるという話をしました。
U+M+LのMはモデリングですが、このモデルとは何でしょう。同書にもあるとおり、モデリングとは『本質的なものだけを強調して抜き出し、あとは捨て去る作業』です。この作業の結果得られるものが『論理の結晶』であるモデルです。
また『モデルは仮説』であり、モデルは必ずしも真理ではない。個人が頭の中に持っているモデル、あるいは組織で共有しているモデルは絶対的に正しいものではないので異なるモデルを持っている人・組織が自分のモデルを基準にして議論しても平行線をたどることもあるわけです。「相手が間違っている」のではなく「自分の仮説と相手の仮説」が異なっているにすぎません。
今回新聞記事をUMLでどこまで表現できるかにチャレンジしますが、新聞記事は具体例なのでクラス図ではなくオブジェクト図となります。事例が集まればパターンができると思いますが、そのときはクラス図になります。これは今後の課題です。
[例題 1]
燃料電池車に必要な水素供給方法に関する次の記事を考えて見ましょう(日本経済新聞2004年4月5日 朝刊1面、記事からの引用を『』で示します)。
まずこれら3つのタイトルから頭の中で文章を構築しましょう。例えば、「ホンダなどは、燃料電池車のための水素を、化石燃料ではなく水力で製造する」となります。
このニュースが1面に掲載される理由は、主タイトル「化石燃料を使用しない」ことが画期的であったことのようです。
「ホンダなどが水素を製造する」は典型的なSVOパターンで、UMLでは前回に紹介したとおりSとOの間の2項関連で、Vは関連です。
サブタイトル2は「水素は燃料電池車の燃料に使用する」という意味で、水素に対する説明であり、「燃料電池車」オブジェクトと「水素」オブジェクトの間にリンクを張って「水素」側にロール名として「燃料」と記述します。
サブタイトル1は「水力発電」により水素を製造することをいっています。この3つのタイトルから読み取れることは、水素を製造するのに従来は化石燃料によっていたのが、ホンダなどの今回の方式では水力発電によることになる、非常に画期的である、ということです。「水力発電」は製造する企業と製品の間に存在する製造法の1つと考え、関連クラスのインスタンスとして表現しました(図1)。
ところでニュースとして一番強調したいメインタイトル「化石燃料を使用しない」はどのように表現すればよいでしょう。UMLでは図のように「化石燃料」オブジェクトがどこともつながらないで孤立していることにより使用しないことを消極的に表現しているにすぎません。関係のないものはモデルに描かないで捨て去るべきですが、それではニュースとしていいたいことが伝わりません。そこで図2のように(UMLとしてはこんな表記法はないのですが)、記事としては例えばこんな表記にしたいものです。フォントサイズも新聞記事のタイトルに合わせて変えてみました。
さて、次に記事内容に入ってゆきます。『ホンダ、太平洋セメントグループ、昭和電工と鹿児島大、国連大学などの産学グループは、鹿児島県屋久島に水素ステーションを建設し……』。
まず前半の産学グループですが、これはUMLでは集約関係で表現することができます。
後半の「産学グループは水素ステーションを建設する」はSVOパターンです。
「屋久島」は「水素ステーション」の説明なのでリンクを張って「屋久島」のロールを「場所」とします(図3)。
記事の続き『……水力で製造した水素を燃料電池車に供給する実験を月内に始める』。
この文章の前半を「水素ステーションは水力により水素を製造する」と補足して読み替え、「水力発電」を「水素ステーション」と「水素」の関連クラスのインスタンスと考えます。
次の「水素を燃料電池車に供給する」に主語はありません。「水素」と「燃料電池車」にリンクを張り、「水素」側にロール名として「燃料」と記述します。
「化石燃料を使用しない」はこの図3では孤立していますが、図2のような拡張形式にして強調したいところです。
[例題 2]
30秒で充電できるという有機ラジカル電池開発の記事です(日本経済新聞2004年4月2日朝刊17面)。
まずメインタイトル「新電池」をオブジェクトとし、「30秒で充電」は新電池に充電時間という属性を設け、その値が30秒であると考えました。
サブタイトル1は「新電池で携帯音楽機器を駆動すると80時間使用できる」と補足して読み替えます。80時間は新電池それ自身の属性でもなければ携帯音楽機器の属性でもなく、両者の関連クラスのインスタンス属性と考えました。
サブタイトル2は「NECは新電池を開発した」と補足して読み取り、SVOパターンとしました(図4)。
次に記事内容に入ってゆきます。『……デジタルカメラや携帯型MDプレーヤーなどに使われているニッケル水素電池と同程度の電気を蓄えられるうえ、1時間前後かかっている充電時間を約30秒に短縮できる』。
ここで新たに「ニッケル水素電池」が出てきました。この充電時間という属性の値を1時間とします。2種類の電池オブジェクトが出てきましたが、まとめて「電池」というクラスを作成し、充電時間という属性を持たせます。
「同程度の電気を蓄えられる」という部分は駆動時間が同じ80時間と考え、関連クラスのインスタンスで表現します(図5)。
今回は前回の「UMLと自然言語」の続編として、UMLで新聞記事の内容を表現するとどうなるかにチャレンジしてみました。わずか2つの記事しか取り上げなかったので、ここから一般論を述べることはまったく無謀ですが、著者の感想として新聞記事に書かれている内容はある程度UMLで表現することは可能です。新聞記事が書籍と大きく異なるのは、取り上げられるものが「ニュース」であることです。その記事がなぜニュースになるかというと、何か普通ではない出来事を扱っているからです。この「普通でない」あるいは「いかに優れているか」がうまく表現できませんでした。例題1では地球温暖化防止という観点で、例題2では充電時間短縮という点で従来の方式や製品と比較して優れているわけですが。
とはいえ、UMLの適用可能範囲とその限界が垣間見えたと思います。意外と何にでも使えそうですね。ただし現段階ではUMLで書いて何がメリットかという議論にまでは踏み込めません。それはこれからゆっくりと考えていきたいと思います。
次回は今回の方向でもう少し考えを進めたいと思います。バックログとして次のようなテーマを考えています。
河合昭男(かわいあきお)
大阪大学理学部数学科卒業、日本ユニシス株式会社にてメインフレームのOS保守、性能評価の後、PCのGUI系基本ソフト開発、クライアント/サーバシステム開発を通してオブジェクト指向分析・設計に携わる。
オブジェクト指向の本質を追究すべく1998年に独立後、有限会社オブジェクトデザイン研究所設立、理論と実践を目指し現在に至る。
ビジネスモデリング、パターン言語の学習と普及を行うコミュニティ活動に参画。著書『まるごと図解 最新オブジェクト指向がわかる』(技術評論社)、『まるごと図解 最新UMLがわかる』(技術評論社)。『UML Press』(技術評論社)、『ソリューションIT』(リックテレコム)ほかの専門誌に多数執筆。ホームページ「オブジェクト指向と哲学」。
Copyright © ITmedia, Inc. All Rights Reserved.