オブジェクトの広場はオージス総研グループのエンジニアによる技術発表サイトです

モデリング

再開!UMLモデリングカフェ「Square」

~UMLでモデリングを愉しもう~
技術部ビジネスイノベーションセンター 原田 巌
コンサルティング・サービス部 赤坂 英彦
2024年5月30日

今月号からUMLモデリングカフェ「Square」の連載を再開することになりました! 近年のアジャイルの広がりにより、変化への対応のためにモノコトへの理解やシステムへの適用が重視され、オブジェクト指向やドメイン駆動設計の人気の再加熱も相まって、再びモデリングすることに脚光が当たりはじめています。現場や仕事でちょっとしたUMLの勉強に使っても楽しい記事にしていくので、ぜひUMLモデリングカフェ「Square」をご活用ください!

目次

  1. はじめに
  2. モデリングで何をするのか?
  3. モデリングの進め方
  4. モデリングカフェにて…

1.はじめに

今月号からUMLモデリングカフェ「Square」の記事を再度連載することにしました。まだ、コロナ禍のオンライン化によって読者の皆様からどのように投稿をいただくかが決まっていませんが、内容としては今まで通り、毎回、身近にあるモノや出来事など簡単な【お題】を出題し、皆様にモデリングをしていただきます。その次の記事で、皆様の解答モデルの中から 3 つほど取り上げて、コメントを付けていくかたちで進めていきたいと思います。お題の出題は次回を予定しています。どのように楽しくモデリングを皆様と行うのか、楽しみに待っていてください。

テーマは以前と変わらず、以下の2点です。

  • 気軽にモデリングを愉しもう!
  • みんなでモデリングしてみよう!

この連載では、UMLでの表現の優劣やテクニックを競ったりというものではなく、あまりUMLに馴染みのない人も気軽にモデリングを愉しんでもらえる連載にするつもりです。

解答していただきたい読者の方としては、普段からUMLを使ってバリバリ開発されているソフトウェアエンジニアの方よりもむしろ、最近UMLを覚えたばかりでモデル作成の経験の浅い方、モデルを作成するといつも複雑になってしまうと悩んでおられる方を対象に考えています。

モデリング大好きな達人モデラーの方々には少々物足りないネタになってしまうかもしれませんが、まわりの仲間を誘って、一緒にモデリングしてみたり、個別にモデリングしてお互いのモデルを見比べて議論してみても楽しいと思います。ぜひ、身近にいるモデリングの後輩や新人さんを誘ってモデリングしてくださいね。

2.モデリングで何をするのか?

モデリングとは対象を模式化することです。対象のすべてを細かく表現するのではなく、特徴的な部分を利用して、重要でないものは捨てます。

例えば、スマイルマークのように、まん丸の顔と目と口だけで笑顔を表現するようなものです(^_^)。ここでは、プログラミング言語に実装するような詳細なレベルのモデリングではなく、身近なお題に対して、その特徴を表現するモデリングを行うものとします。

3.モデリングの進め方

さて、ここでは本記事で実際にモデリングを実施していただくにあたり、例題を使って、モデリングの手順や注意点について説明します。

【例題】打合せ

長谷川さんは,相田部長から「来週の12月13日(火)に14:00から第3会議室にて 新商品企画の打合せがあるよ」と聞きました。
また,先輩の田中さんから「12月15日(木)13:00から第1会議室にて プロジェクトのキックオフミーティングがあるので参加してくれ」といわれています。

これらの状況を説明できるような「打合せ」をモデリングしてください。

ステップ1:状況を理解する

まず、はじめにモデリング対象となっている状況の全体像を把握します。 思いつく「こと」を列挙したり、文献等を調べて、その状況の中で起こっている「こと」や、 そこに含まれる「もの」を洗い出し、対象が持つ事実関係を具体的に理解していきます。

例題での登場人物は、長谷川さん、相田部長、先輩の田中さん、 安田くんです。何やら打合せの連絡について書かれているようですね。 会話の中からは、打合せの予定として、日付、時刻、会議室、打合せの内容といったことが読み取れます。 ここで、打合せ(あるいは会議)で思いつくことを挙げてみると、

  • 打合せは誰かが企画する
  • 打合せの情報には、内容、日時、開始時刻、終了時刻、参加メンバー、会議室(場所)などがある
  • 打合せには複数の参加メンバーがいる
  • 会議はどこかの会議室で行われるが、ある会議室は一日にいくつもの会議が行われる
  • 会議室には名前があり、内線電話がある
  • また、会議室ごとに、大きさも違い、収容人数が決まっている
  • ここでの長谷川さんのように複数の打合せに参加する人もいる
  • 打合せの予定に対して、実績としての開始時刻、終了時刻もある
  • 会議には目的があり、議事進行のアジェンダがある(べき)
  • 会議が行われると議事録が作成される
  • 会議には、議事進行や書記などの役割を持った参加メンバーがいる

などが思いつきます。

ステップ2:モデルのコンセプトを決める

次のステップでは、モデルを作成するための「コンセプト」を決定します。 「コンセプト」は、モデリング対象をどのように捉えて、どのように表現するのかを決めるものです。 最初のステップで洗い出した様々な状況に対して、欠かすことのできない重要な部分に絞り込みます。

目標は、少ない情報でモデリング対象の重要な特徴を表現することです。

問題文を読み返してみると、ここでは長谷川さんの打合せの予定に関する会話であることが分かります。打合せの特徴はなんでしょうか?打合せの主催者や参加者など、立場を意識して打合せを考えて見えてくるものが違いますが、ここでは、第3者からみた予定としての打合せの特徴を考えてみることにします。

  • 打合せには、いつ、どこで、だれが、なにを、といった情報がある
  • 打合せに参加する人は、複数の打合せに参加することが出来る
  • 打合せが行われる会議室には、複数の打合せが割り当てられる

ステップ3:モデルを作成する

最後に、コンセプトに従ってモデルを作成します。ここでは、UMLを使ってモデリングを行います。 モデリングはあくまでコンセプトをUMLで表現したものに過ぎませんが、実際にはUMLの図を作成することによって気づくことがあります。 コンセプトを図(モデル)として表現してみると、少し意図と違っていたり、不足しているものが見つかったりすることがあります。

おかしいと思ったら前のステップに戻って考え直してみましょう。

例題では、いつ、どこで、だれが、なにをといった出来事(あるいはイベント)を「打合せ」という概念(クラス)で表します。ただし、"どこで“と"だれが"については、それぞれ「会議室」、「参加者」という独立した概念になります。なぜなら、打合せとは別に存在するモノだからです。

このように「打合せ」、「参加者」、「会議室」といった要素に分解できましたので、「参加者」と「打合せ」および「打合せ」と「会議室」の関係でクラス図が書けます(図 1)。

打合せ(クラス図)
図 1 打合せ(クラス図)

「参加者」は複数の「打合せ」に参加できるし、「打合せ」には少なくとも二人以上の「参加者」が必要になるので、多重度はそれぞれ、 0..* , 2..* と表現します。 「打合せ」はひとつの「会議室」で行われ、「会議室」は複数の「打合せ」が行われることから、多重度はそれぞれ、 1 , 0..* と表現します。

具体的な例で考えてみると、問題文にある商品企画の打合せ、キックオフミーティングという打合せは以下のようなオブジェクト図で表現することができます(図 2)。問題文にはありませんでしたが、Aさん、Bさん、Xさんはそれぞれの打合せに参加するものとします。

打合せ(オブジェクト図)
図 2 打合せ(オブジェクト図 1)

「XX打合せ」を追加してみると、以下のように、会議室で複数の打合せが割り当てられる様子を表現できます(図 3)。

打合せ(オブジェクト図)
図 3 打合せ(オブジェクト図 2)

初めからクラス図で考えるのが難しいときには、オブジェクト図を先に書いてみると整理しやすいと思います。

いかがでしたか。実際にソフトウェアを開発している人は「こんなモデルで役に立つの?」と感じられた方もいらっしゃると思います。しかし、実際の開発では、開発対象のソフトウェアが大規模化、複雑化してきており、そのままで扱うと理解しにくいものになってしまいます。

まずは、一番重要な部分に焦点を絞って、根本的な特徴を掴むことが大切です。

4.モデリングカフェにて…

モデリングカフェ

── ここはモデリング好きが集まる不思議なカフェ。今日もモデリング好きなお客さまが集まり、モデリング談議に花が咲いているようです。マスター(モデリングマスター)も時折合いの手(愛の手?)を入れています。

■モデリングカフェへの思い

原田- 赤坂さんはモデリングカフェ「Square」の初期メンバーですよね。当時はどのように始めたのですか?

赤坂- 仕事でモデリングをトレーニングしたいと思っていて、分析モデリングや概念モデリングを日常的にやり続けたいと考えていました。そこで、オブジェクトの広場で連載して、みんなにモデリングへの興味を持ってもらおうと思ったのがモデリングカフェの始まりだったんだよね。

原田- 現場の課題感から、「じゃあ、みんなでやってみよう!」となったんですね。

赤坂- コンサルタントがランチを食べる時に、お店の原価や回転率(儲かってるかどうか)や、流行りそうなメニューについて会話するように、私たちエンジニアも見たものや体験したサービスをモデルとして表現し、どんな構造で考えると良いかなどを議論することが当たり前になると面白いよね。また、思考の可視化にモデルが使えることを感じてもらえるといいなぁと思っていました。

マスター- まるで日々のトレーニングのようだね。筋トレみたいなものですね。

赤坂- 考えていることを、言葉だけでなく、モデルも使って会話できると良いと思っています。これはエンジニア仲間だけじゃなく、誰とでもできることだと考えているので、身近なお題が良いと思います。

原田- 対話の中心にモデルを置く。そのためにエンジニアだけでなく、誰もがモデルの良さが分かるように、お題も誰もがよく知っているものを使用するということですね。すごい楽しそう!やろうやろう!

■モデリングの楽しさ

赤坂- 以前、オフィスで原田さんや他のメンバーと集まって、壁のホワイトボードにモデルを描きながらの会話(当時、それを「禅問答」と呼んでいました)がめちゃくちゃ楽しくて…。あの活動に読者も巻き込めたら最高だと思っています。

原田- ありがとうございます。ただ、あれは自分自身はモデルを描けるのですが、技量や理解度に不安があり、モデ力(モデリングスキル)を鍛える場が欲しいと思ってたので、みんなにぶつけてみてたっていうのはありますね。 そんな中、モデリングカフェ「Square」を見つけて、お題を見ながら自分のモデルを考えて、読者のモデルやモデリングカフェとしての回答例と見比べながら、お互いのモデルから良い所を見て学べるのが良かったです。記事を通して向こうにいる人たちと対話している気分でした。

赤坂- なるほど。理想の読者像です(笑)。

原田- 現場でも何個かお題を試して、お互いのモデルを比べながら、良いと思う部分を採用して良いモデルにしていく方法を体験してもらったりしました。

マスター- それはすごい。自分で記事を読みながら仮想的な対話をするだけでなく、チーム内で実際にやってみたのですね。

赤坂- 素晴らしい。

■さまざまなモデル

マスター- モデルを描いたみんなの反応はどうでしたか?

原田- 正直に言うと、反応は微妙でした(笑)。みんなは仕事に追われており、設計や実装のタスクを抱えている中で、モデリングの練習として「すごろく」を描いてみましょうと言っても、「これをソフトウェアに使えるの?」という反応が多かったです。

マスター- なるほど、みんなはソフトウェア設計が気になってしまったんだね。原田さんはドメインモデリングをイメージしてモデリングについて話しているんだよね。

原田- そうですね。当時、現場ではドメイン駆動設計(DDD)を実践していたので、ドメインモデルをどのように描けば良いか、どうすれば他の人にも理解してもらえるモデルを通じて共通認識を持てるかをお題としていました。ただ、意図を説明することを怠っていたため、そのようなギャップが生じてしまったかもしれません。

赤坂- 自分はソフトウェアエンジニアとして、テスト、実装、設計と(開発プロセスの工程とは逆に)経験を積んできました。設計ではものすごく緻密なものに対峙しなきゃならないと感じる反面、システムの全体像が分からないジレンマを感じました(当時、分析なしに設計していました)。そのため、概念モデルのように足掛かりとなる知識を上手に伝えることが重要だと感じています。

原田- 確かに、DDDを実践することで分析を適切に行うことの重要性を痛感しました。外部設計書や詳細設計書があるとその先の実装ができてしまうのですが、全体感や、そもそもお客さまに届けるべき価値が何かが分かっていない状態でした。

赤坂- 問題解決において、解決すべき問題を明確に特定せず、どのように解決すれば良いかばかりを考えてしまう状況ですね。その結果、動くものは設計できるものの、その設計が最適解かどうかは判断できないのです。

原田- なるほど。

マスター- 目的が明確であれば、それと照らし合わせて100%満たされているのと比べて評価できるけど、目的がなかったら「動きますけど何か?」になっちゃうよね。つまり、解くべき問題と解き方を比較することで、解き方の良さが判断できるんだよね。

■モデリングする楽しさ

原田- モデリングの楽しさって、モデルを描くことそのものよりも、モデルを描きながら新たな発見があることだと思っています。ソフトウェア的には、こう解決できるとカッコいい!ということに興味があるんですよね。

赤坂- 私はピクト図解(ビジネスモデル)を好んで描いています。図を使い、指差しながら会話することで、背後にある経営者の想いを聞き出せたり、会話の中で発見があったりします。これも同じことですね。

マスター- 同じ言葉を使っていても、違うことを考えていることはよくありますよね。モデルの中で関連性や多重度を描いていると、実は違っていることに気づくこともあります。モデルがなければ、すれ違っていても気づけなかったこともあるでしょう。

■モデリングカフェをまた復活させるぞ!

原田- 私たちはモデリングが楽しいということを皆さんに知ってもらいたいんです。モデリングカフェで。

赤坂- 私はモデルを描くだけでなく、他の人が描いたモデルを読むことも好きです。レビューや対話を通じてモデルを洗練させ、自分自身が気づかなかった表現したかったモデルを見つけることもあります。モデリングカフェでは、モデルを作った人に自身の書いたモデルを説明してもらい、その内容から、意図に沿った分かりやすいモデルへとみんなで改善していけたらいいですね。

原田- そうですね。建設的な対話を通じて、掛け合い漫才のような会話ができると嬉しいです。

・・・

── 夜が更けてもモデリングカフェの会話は終わりそうにないですね。こんな情熱をもった人々が集まるモデリングカフェに、ぜひ立ち寄ってみてはいかがでしょうか。