メインコンテンツまでスキップ

【技術コラム】第1回:なぜ、メタモデルなのか?

· 約15分
山路 厚

はじめに

ソフトウェア現場改善エバンジェリスト&デザインDXエバンジェリストの山路です。

これまで本ブログでは、Next Designの機能やTIPSなどをご紹介してきましたが、 今回は趣向を変えて、Next Designのコンセプトである設計情報のDX化をテーマに全2回のコラムをお届けします。 以下の内容を予定しておりますのでご期待ください。

  • 第1回:なぜメタモデルなのか?
  • 第2回:エンジニアリングプロセスの共通化

それでは早速「なぜメタモデルなのか?」をテーマに記事を始めます。 Next Designでは、メタモデル言語を使用して設計情報を定義します。 そして、「メタモデルを使って設計情報を定義することが難しい」というお話をよく耳にします。 そもそも、なぜ、メタモデルなのでしょうか? 「メタモデル方式は、きっと良いのだろう」と直感的に捉えていましたが、説明が上手くできませんでした。 デジタルペーパー中心の開発方式が抱える問題に取り組む中で、「なぜ、メタモデルなのか?」につながる知見を得られたのでご紹介します。

info

本記事は、ソフトウェアプロセス改善カンファレンス2024(日本SPIコンソ―シム主催)で発表した経験報告をもとに、記事としてまとめた内容となります。詳細は、発表資料をご覧ください。

デジタルペーパー中心の開発の何が問題か

大規模開発

クラウドやIoT技術の普及により、ソフトウェア開発の大規模化が急激に進み、従来のデジタルペーパー中心の開発方式では対応できずに大炎上・大混乱に陥るプロジェクトが多くなっています。 また、開発規模が大きくなればなるほど、人やチーム間の役割を明確にし、情報の共有をはかる必要性が高まり、ますます開発文書の重要度が高まっています。

つまらない問題

しかしながら、文書の不備に起因する“つまらない問題”が開発現場では多発しています。 “つまらない問題”とは、記述の不整合や記述不足などによる「エンジニア間の認識違い」が引き起こす問題です。 複雑なアルゴリズムが潜んでいるような技術難易度が高い問題ではなく、思い込みや勘違いによるちょっとした認識のずれから発生する問題です。 これらの問題に対し、私達は長年にわたり改善を行ってきました。 いわゆる、プロセス改善です。ルールや規定を作り、チェック作業やチェックツールを投入するなどの改善を実施してきました。 しかし、改善はされるものの新たな文書記述の問題が発生する、または、同じような問題が再発することもあります。 そもそも、本質的とは思えない問題に、工数やお金を投入していることに「何かがおかしいのでは。。。」という違和感を抱いていました。

記述が重複する

つまらない問題は、様々な要因によって引き起こされます。ここでは、文書記述の“重複”によって引き起こされる問題に着目して問題の本質を掘り下げます。多くの開発現場で起きている、身近な問題です。 開発文書間や開発文書内で、重複する記述は多々あります。重複する記述の例として、記述する設計情報の名称をイメージすると、ピンとくると思います。 記述の重複が出現する主な場面は、以下の通りです。

  • 設計のブレイクダウン

設計は段階的に詳細化します(ブレイクダウン)。 設計内容をブレイクダウンする際、上位設計書で使用した記述を下位設計書で使用します。 「概要」から「詳細」のように設計をブレイクダウンする際に、同じ名称を使って記述します。 このようなブレイクダウンは、文書間や文書内で何度も繰り返すので、重複はどんどん増えていきます。

  • 多様な関心事

説明の目的や関心事に合わせて、様々な見た目で設計情報を記述します。 他の箇所で記述した設計情報を使って、目的に合うように記述します。 年々、機能安全など新たな説明要求が加わり、重複する設計情報の記述が増加しています。

重複が起点となり不整合を引き起こす

重複した記述が多ければ多いほど、設計情報の不整合が起こりやすくなります。 特に、変化が激しい開発や大規模開発では、記述内容のメンテナンスが追いつかず、発生頻度が高まります。 その結果、エンジニア間の認識がずれる原因となり、“つまらない問題”が多発するのではないでしょうか。 また、重複する構造は、設計情報間のつながりが不明確となりやすく、エンジニアの理解の障壁となります。 さらに、つながりの分かりにくさは、情報の欠落の原因にもなります。 これらのことが重なって、“つまらない問題”を引き起こすのです。

デジタルペーパー方式の表現の限界

それでは、なぜ、重複となるのでしょうか。 設計には、様々な関心事があり、設計情報間の関係も多岐に渡ります。 そして、関心事ごとに合った表現方法がそれぞれにあります。 それぞれの表現(以降、“特定の見た目”と記載する)によって、個別に記述するため、同じ設計情報を何度も使用することになります。 ここに、デジタルペーパー方式の表現の限界があります。 なぜなら、デジタルペーパーは2次元空間を扱う方式であり、かつ、空間にも限度があるため、一度に表現できることが限られます。 関心事に合った説明を行うには、特定の見た目を使って個々に記述せざるを得ず、どうしても設計情報が重複してしまいます。

設計書の記述方式に対する気づき

「何を」を、特定の見た目「どうやって」で定義している

デジタルペーパー方式の問題点について考える過程で以下の点に気づきました。 設計では、「何をするか」を定めて文書として記述します。 そして、文書の記述は、関心事に合った特定の見た目を用いて、個別に行います。言い換えれば、「何を」を特定の見た目、つまり、「どうやってするか」を使って定義することになります。 ここに違和感があり、問題の本質があると考えています(内在する問題構造)。 「何を」を定義するのに、特定の見た目の影響を受けてしまう方式、これがデジタルペーパーによる従来の記述方式です。

特定の見た目には、それぞれの制約があり同時に定義できることが限られます。 つまり、見た目で表現できることしか定義できないのです。 それゆえに、関心事に合わせた見た目を別々に作成することになり、その結果、記述が重複してしまいます。

この問題を解決するには、見た目に影響を受けない記述方式が必要となります。

どんな記述方式がいいのか

見た目の影響を受けない方式 “セマンティック技術”

セマンティック技術とは、「情報の意味をコンピュータが理解できる形に表現し、コンピュータに処理を行わせる技術」です。 つまり、人間が理解するために必要となる見た目を持たずに、設計情報をコンピュータが理解できる形で表現する技術です。 意味的に表現することで、複数の関係性や関心事を同時に扱うことが可能となります。 加えて、コンピュータが解釈できるので、デジタル検証に代表されるデジタル化の恩恵が得られます。 そして、実現にはメタモデル言語を使用します。

メタモデルによるデータとビューの分離

Next Designでは、「何を」という設計情報の定義と「どうやってするか」という見た目(ビュー)の定義を分離する方式を採用しています。 そして、「何を」を定義するためにメタモデル言語を使用します。

見た目を分離して定義するため、見た目の影響を受けない設計情報の定義が可能となりました。 見た目の解釈はコンピュータが担当し、エンジニアは「何をするか」という本質的な設計課題に取り組みます。 今まで特定の見た目という個別の断面で定義していた設計情報を、全体の関心事を俯瞰して定義することになります。 同時に扱う関係性が増えるので慣れるまでは戸惑いますが、「何を設計するのか」という設計の本質に立ち戻ることになり、エンジニアとしての設計の理解が深まることが期待できそうです。

まとめ

従来のデジタルペーパー中心の開発方式には、内在する問題構造があることに気づきました。

【問題構造】 「何を」を特定の見た目「どうやって」で定義している。 見た目の影響や制約を受けてしまう方式なので、設計情報の定義が不十分となりやすい。

【問題構造】 「何を」を特定の見た目「どうやって」で定義している

見た目の影響や制約を受けてしまう方式なので、設計情報の定義が不十分となりやすい。

メタモデルは、上記の問題構造を解決する方式を提供しています。 具体的には、「何を」という設計情報の定義をメタモデルで行うことで、設計情報の定義と「どうやってするか」という見た目(ビュー)の定義を分離する方式です。 分離することで十分な設計情報の定義が可能となります。メタモデルを使って、設計する内容を熟考し定義しましょう。

さて、「なぜ、メタモデルなのか?」の答えに近づけたでしょうか。