コンテキストに沿い、インテントを持ち、セマンティクスを踏まえ、シンタックスに則る。

UMLの重要性は明らかだが、UML記法に従っていれば有用だと思われている節がある。文法的に正しければ良いわけではない。良いUML図とは、コンテキストに沿い、インテントを持ち、セマンティクスを踏まえ、そしてシンタックスに則っている。

 

最も大切なのはインテントを持つこと。あなたがなぜその図が必要だと思ったのかという意図を明確に意識する。そして、その意図が読み手にも伝わり、共感されなければならない。たとえば、「ソフトウェア構造」という章節にクラス図を配置したとする。しかし、どんな粒度の図がいくつ必要かはケースバイケースである。したがって、各図は「まず全体の設計を明らかにし」、「次に個別のパッケージ内の設計を明らかにし」、などというあなたの意図に基づいていて、図はそれを顕したものでなければならない。この点、テンプレをコピーしただけの文書で非常に見苦しいことが多い。

インテントは、書き手の意思だけではなく、読み手の要請によっても創出される。つまり、読んでみたら「ここに図がほしい」ということが当然ある。優れた書き手は、読み手が持つであろうインテントを推測して図を配置できる。

次に重要なのはコンテキストに沿うこと。つまり、その図がなぜその位置に配置されたのか意識することだ。たとえば、仕様書の「はじめに」にクラス図をいきなり記載する人はいない。文法的に正しくても、内容が正確でも、クラス図は「はじめに」に記載することはふさわしくない。したがって、クラス図は「ソフトウェア構造」など、適切なコンテキスト(文脈)に配置されなければならない。

次に重要なのは、インテントをセマンティクスに則って表現すること。つまり、読み手に誤解されないようにすることだ。たとえばUMLには関係の線にも「依存」「関連」「実現」などのバリエーションがある。これらを利用すればかなり正確にあなたの意図を表現できる。もし、標準のセマンティクスから外れて独自記法・解釈を用いる場合には、「この線は何々を表していてこれこれこういう実装を抽象化したものです」という長々とした説明が必須である。そうしない場合はあなたの意図は正確に理解されず、図は意味をなさなくなる。

最後にシンタックスに則ることである。これは、関係線はクラス間で引けるとか引けないとか、そういうことである。しかしながら、私はシンタックスの重要性は(他の三要素と比較して)低いと思っている。人間はシンタックスの誤りを容易に判断できるし、補完もできる。シンタックスが少々間違っていたとしても、一般的な図の活用場面では大きな問題にはならないだろう。

 

しかしながら、UMLに限らず、この手の表記法の教育の優先順位が シンタックス>セマンティクス>>コンテキスト>>インテント であることは悲しいことだ。

 

まとめ。図で重要なのはインテント、コンテキスト、セマンティクスである。シンタックスはプラスアルファ。「シンタックスが正しいから正しい図だ」というのは誤り。正しく意味のある図を書きたい。