カテゴリー「astahによるUMLモデリング」の139件の記事

2026/08/16

「System of Systems(SoS)の統合テストは不可能だ」という言説を聞いた

【1】「System of Systems(SoS)の統合テストは不可能だ」という言説を聞いた。

Geminiに聞いたら、こんな回答だった。
結論から言えば、この主張は半分正解であり、半分は言葉足らずです。
正確には、「従来の単一システムで行っていたような、全状態をコントロールし、網羅的かつ決定論的な(結果が必ず一致する)統合テストを行うことは、原理的・実務的に不可能である」というのが真意です。

この話は真理を突いていると思う。

複数システムを組み合わせた全体に対し、統合テストで検証し品質担保できるならば、それは一つのシステムになりうるが、System of Systems の定義に反するので、システムになり得ない。
だから、System of Systemsアーキテクチャでは、複数システムを組み合わせた全体はシステムになり得ず、中途半端な状態にある。
つまり、System of Systems アーキテクチャの品質保証は完全にできない。

実際、各要素である個別システムは単体テスト~システムテストまで全て可能だが、全ての要素であるシステムを組み合わせたテストを検討してみると、本番環境だけでしかテストできないユースケースが多々出てくる。
つまり、本番環境でないテスト環境にて、いくらテストしても、確認できない機能や非機能要件が出てくる場合がある。

特に障害テストが多いように感じる。

【2】よって、複数システムを繋げた全体の品質保証範囲やレベルの上限をどこまで広げられるか、にアーキテクトは知恵を絞ってるわけだ。
つまり、本番環境でしか実際に実行しなければ確認できない機能要件、非機能要件がある前提で、それ以外はテスト環境でできるだけテストして、機能要件も非機能要件も網羅してしまおうという戦略を取ることになるだろう。

【3】「System of Systems(SoS)の統合テストは不可能だ」という前提で、SoSの品質保証するアーキテクトは誰になるのか?
発注者側なのか?
受託者側なのか?

SoSでは全ての品質基準を網羅できない。
よって、SoSのアーキテクトは非常に高度な意思決定と高度な知見を要求される。

契約上は、発注者側になる。
発注者は、各要素の個別システムを各メーカーや各SIerへ開発を受託し、納品してもらうことになる。
それら納品された各システムをつなげて、全体のシステム(SoS)を構成し、一つのモノリシックシステムを完成させたい。
しかし、発注者側のアーキテクトは、SoSは統合テストできない前提を承知したうえで、モノリシックシステムを、品質基準を満たしたうえで動作できるのか?

しかし、賢い発注者なら、受託者側にSoSの品質保証を押し付けるだろう。
賢い発注者であれば、SoSのリスクをできるだけ受託者側に押し付けることで、品質やコストを抑えたいだろう。
よって、発注者は、受託者側に各システムだけでなく、システム全体の統合の責任も契約に入れて、責任を押し付けたい。

すると、受託者は、SoSは統合できない前提のうえで、どこまで品質担保できるのだろうか?
賢い受託者であれば、契約に潜むリスクを見極めたうえで、SoSの品質保証の範囲やレベルを明確に定義して、契約に盛り込んで、発注者と握りたいだろう。
そうでなければ、リスクを全て受託者側に引き受けてしまう罠に陥ってしまうからだ。

【4】SoSの例としては、航空管制システムや自動運転車を含む交通システム、ミサイル発射システムなどの防衛システムなどがあげられるだろう。
それぞれのシステムには、要素となる製品やシステムがあるが、それらを組み合わせて一つのモノリシックシステムを作りたい。
しかし、上記の通り「System of Systems(SoS)の統合テストは不可能だ」。
SoSの品質保証は非常に難しい性質を持つ。
実際にどうやってSoSの品質を担保するのか、思考してみたい。

| | コメント (0)

2026/08/13

チケット駆動でAIを制御する仕組みのアイデア

AI開発が常識化した今、AIの「暴走」とローカルな文脈理解の欠如がソフトウェア開発現場の障壁だ。
本稿では、AIのハルシネーションを物理的に封じ込める最適解「チケット駆動」の実践論を考えてみた。
IssueをAIへの作業指示書とし、Markdownで文脈を制御する次世代アジャイルの真髄と、AIスクラム適用の限界に迫ってみた。

【参考】
AIエージェントのハルシネーションは「チケット駆動」で防ぐ~次世代アジャイル開発の実践論: プログラマの思索

AI開発の新潮流「Loop Engineering」を、Gitとチケット駆動(TiDD)で今日から安全に始める方法 #開発プロセス - Qiita

AIの暴走を物理的に封じ込める【Git × チケット駆動】のクローズドループ開発 #TiDD - Qiita

ちょっとAIにスクラム開発を任せてみたら破綻した話 #アンチパターン - Qiita

【1】2026年現在、プログラミングは全てAIに任せて開発するのが当たり前だろう。
もはや手作業のプログラミングは、伝統工芸と同じレベルに落ちた。
わざわざプログラミングを手作業で一つずつ書くのは、時間もかかるし、品質も不安だ。
むしろAIにやらせた方が楽だ。

しかし、設計、コーディング、テスト、ビルド、デプロイのすべての作業をAIに任せたとしても、人間の作業がなくなるわけではない。
むしろ、AIは暴走しやすいので、いかにAIをコントロールすべきか、に皆頭を使っているのではないだろうか。

【2】では、「AIによるプログラミング自動化」の問題点は何だろうか?

僕は3つあると思う。
1つ目は、AIはその人だけのコンテキスト、案件特有のコンテキスト、チームや組織の文化に根ざしたコンテキストがとても弱い。
2つ目は、AIは汎用的な知識だけで、私たちの意図を超えた範囲まで、勝手に機能実装したり、成果物を改変してくる。
つまり、AIは余計なお世話が多い。
3つ目は、AIはWordやPDFなどのドキュメント類をいきなり出力させると、意図しないレイアウトや思い通りでない内容が出る場合がある。
これもAIが余計なお世話を焼きすぎる。

【3】「AIはその人だけのコンテキスト、案件特有のコンテキスト、チームや組織の文化に根ざしたコンテキストがとても弱い」問題は、昔からずっと言われているAIの弱点だ。
たぶん、AIのコンテキストバッファは限定されていて、AIにローカルなコンテキストを保持させるにはコンテキストバッファは小さすぎる。

では、どうやって問題解消すべきか?
解決策の一つは、プロンプトを作業指示とみなし、GitHubのIssueに作業指示書として書く。
AIはIssueを前提条件かつ作業指示書とみなして実行してくれる。

@tokudiroによれば、プロダクトバックログを作って、AIにPBLに従ってプログラミングさせるやり方は上手くいくらしい。
しかし、PBL自身をテキストファイルで管理し、GitHubで管理するのは面倒だったらしい。
そこで、PBLに書いた製品の要件を全てGitHubのIssueに書き出して、PBLの優先順位をIssueの優先順に対応付けると上手くいったらしい。

理由は、作業指示書のIssueがたくさん存在し、Issueに基づいてコミットした履歴がIssueと紐づくことで、ノウハウやナレッジがAIにも蓄積されるからだろう。
つまり、Issueに従ったAIによるコミットは、AI自身がローカルなコンテキストを蓄積出来ていることを意味するのだろう。
すなわち、蓄積されたIssueとIssueに紐づくコミット履歴は、AI自身のノウハウ、ナレッジになるのだろう。

この解決策の良い点は、Issueにナレッジを貯める意識がなくても、PBLに沿ったIssue一覧とIssue実行履歴により、自然にAI自身にナレッジやノウハウが溜まることだろう。
結局、AI自身に経験主義を実践させて、ローカルなコンテキストを認識させているわけだ。

別の解決策は、AIとチャットしながら、試行錯誤したり、意思決定して何かを選択した履歴は、Issueコメントにすべて残す。
たとえば、AIに相談して、プログラミングの選択肢を3つ挙げさせた。
3つの選択肢のうち、1つを選んで、AIにIssueを書かせて実行させる。
その選択肢を実行させて、結果を見て、やはりこの選択肢は止める、という履歴もIssueコメントに残す。

@tokudiroによれば、AIとのチャットを別のチャット画面でやり取りさせるならば、Issueコメントに全て書き残せばいいと思いついたらしい。
Issueコメントに意思決定の履歴、試行錯誤の履歴も全て残せば、ローカルなコンテキストは全てIssueに集約される。
AIには、過去のIssueを全部読んでおけ、と言えば、ローカルなコンテキストを理解してくれる。

この解決策の良い点は、Issueコメントはmarkdownで書けるので、AIと相性がいい。
また、Issueコメントもmarkdownで書いた方が人間も読みやすい。
さらに、AIとのやり取りが複雑になれば、Issueを分割して、新規Issueに新たな作業指示書を書けばいい。

つまり、AIにローカルなコンテキストを理解させるために、Issueに作業指示書、ならびに、意思決定や試行錯誤などの履歴も集約させて、AIにIssueを読み込ませるわけだ。
GitHubならば、ソースコードの全てが存在し、コミット履歴もすべて残っているので、AIに案件特有のコンテキストもGitHubリポジトリそのものを読み込ませればいい。

すなわち、AIに読み込ませるローカルなコンテキストは、GitHubというIssueTrackingSystemそのものなわけだ。

【4】「AIは汎用的な知識だけで、私たちの意図を超えた範囲まで、勝手に機能実装したり、成果物を改変してくる」問題は、AIは先走りすぎて暴走してしまう弱点だ。

解決策は、上記の通り、プロンプトではなく、Issueを作業指示書としてAIに実行させることだ。
AIにガードレールを課すことと、IssueをAIの作業指示書として扱うことは同義だ。

【5】「AIはWordやPDFなどのドキュメント類をいきなり出力させると、意図しないレイアウトや思い通りでない内容が出る場合がある」問題は、ソースコードだけでなく、ドキュメント類もAIで自動化させたいのに上手く制御できない点にある。

単純なアイデアは、GitHubリポジトリのソースコードから、ユーザマニュアルをPDF出力せよ、とAIに直接指示させることだが、そのやり方では上手くいかなかった、と@tokujiroは言う。
やはり、ドキュメントの粒度や整合性、フォーマットなどをAIに指定しないと、AIは勝手に作ってしまう。

そこで、AIにまず、ユーザマニュアルや設計書に相当するテキストをmarkdownで出力させる。
ユーザマニュアルや設計書に相当するmarkdownファイルをインプットとして、AIやPandocでPDFやWordに出力するやり方を取る。

@tokudiroによれば、AIとmarkdownは相性が良いので、中間成果物としてmarkdownを出力させるのが良いらしい。
この意見は僕も同意する。
AIはテキストに強い。
特にAIはmarkdownに強い。
だから、まずドキュメント類そのものをテキスト出力し、フォーマットも別のmarkdownで指定して、AIに実行させる方がいいだろう。

【6】AIでプログラミングがいくら効率化されて自動化出来たとしても、人間によるコードレビューは必要だ。
@tokudiroと話していて気づいた点は、品質基準は人間だけが持っている。
AIに品質基準を持たせたとしても、最終的な品質基準は人間だけが最終決定するからだ。
つまり、人間がAIが生成したコードをゲートレビューしている状況と同じだ。

その時、人間によるAI生成済みソースコードのコードレビューはどうやるといいのか?
ここでも、AI自身にGitHubからDiff出力させて、そのDiffを人間がチェックする方法が良いだろう。

Diff自体もテキストなのでAIも扱いやすい。
人間にとっても、ソースコード全体は読めないが、Diffならば読みやすくなる。

今は、人間がプログラミングしなくなっても、大量のコードレビューが必要であり、コードレビューに時間がかかってボトルネックになっている状況だ。
結局、人間自身がボトルネックになっているわけだ。

【7】上記が「チケット駆動でAIを制御する仕組みのアイデア」だ。
ここから次の問題が思いつく。
「AIは監査プロセスを実装し実現できるのか?」
「AIはScrumプロセスを実装し実現できるのか?」

現代のソフトウェア開発では、Scrumでプロセスを回すのが主流だ。
すると、当然AIにScrumを回したくなる。
たとえば、開発チームの開発メンバーを複数のAIエージェントに任せてプログラミングさせて、スクラムマスターもAIに任せてスクラムチーム内の障害解決を担当させることができるだろう。
プロダクトオーナーさえも、PBLの元ネタとなる要求を渡せば、AIに任せられるだろう。

スクラムガイドをAIに事前に読み込ませれば、プロセスも役割もイベントも成果物もAIは理解するだろう。
では、本当にそれだけで、AI自身がScrumというプロセスを回せるのだろうか?

同様に、たとえば、ISO9001、A-SPICE、機能安全、サイバーセキュリティなどの規格に沿ったシステム監査がある。
これらの規格は、膨大なドキュメントとして手順、ワークフローシステム、制約条件などが細かく定義されている。
これらの規格のドキュメントをインプットにすれば、AIは一連のプロセスを理解するだろう。

では、本当にそれだけで、AI自身が規格に沿った監査プロセスを回せるのだろうか?

直感的には僕は疑問に感じる。
たったそれだけでAIが上手くいくならば、既に色んな人が試して、運用されている事例が出てくるだろう。
しかし、今時点ではそんな成功事例を聞かない。

なぜならば、AIはローカルなコンテキストに弱いからだ。
AIの暴走をチケット駆動で制御するアイデアは、IssueTrackingSystemに、人間とAIが相互会話した履歴を残し、Issueを作業指示書としてAIにガードレールを課すことで、AIを制御できる点にある。
この発想を、AIへScrumの適用、AIへ監査プロセスの適用を当てはめなければ、上手くいなかいだろうと直感する。


| | コメント (0)

2026/07/25

AIが設計も思考も代替する時代ではエンジニアはモデルを理解するだけの存在なのか?

要件から実装までAIが完遂する「FDE」の台頭。
それはアジャイル開発の終焉と、システム設計や「思考」すらAIに委ねる未来を示唆している。
人間はAIが生成したモデルをただ「理解」するだけになるのか。
すべての作業と思考が代替される世界で、私たち人間の存在意義は一体どこにあるのか。

【参考】
Astah Pro MCP | astah* プラグイン

takaakit/astah-pro-mcp: A local MCP server that runs as a plugin for Astah Professional, a UML modeling tool.

takaakit/superpowers-uml: Superpowers-UML modifies Superpowers to ensure a software development workflow in which AI agents design through UML modeling.

astah* AI連携機能

FDEは「客先常駐SES」と何が違う?人間の複雑さに向き合う「AI SaaSの生存戦略」【ログラス×LayerX】 - レバテックLAB

FDEとは?最高峰のAI職種「Forward Deployed Engineer」について徹底解説!年収・職務内容・転職・求人情報 | AI・エンジニア転職ならムービン

【1】最近、FDEという言葉を知った。
「Forward Deployed Engineer」と呼ぶらしい。
僕の理解では、FDEは、要件だけ作って、後はAIエージェントに設計・実装・テスト・移行まで全てやらせる。
つまり、顧客にヒアリングして、課題解決のためにシステム要件を提案し、その後のシステム開発は全てAIにやらせる。
また、AIエージェントにシステム開発させる仕組み、つまり、ハーネスエンジニアリングも設計する役割と理解している。

【2】では、プログラマはもちろん、システムアーキテクトもFDEで代用されるのか?
そんな疑問を感じる。

AIによるシステム開発は、アジャイル開発そのものを否定するだろう。
アジャイル開発は、顧客と開発チームが一体化して開発する。
しかし、要件さえ固めれば、後はAIが全て自動生成してくれる。
つまり、顧客と、顧客からヒアリングして要件をまとめるコンサルがいれば、後はAIがよろしくシステム開発してくれる。

すなわち、ソフトウェア開発プロセスを見れば、要件定義だけになる。
なぜならば、その後の工程、設計、開発、テスト、移行は全てAIが代替してくれるので、気にしなくていいからだ。
すると、AI主導のソフトウェア開発プロセスはWF型開発に先祖返りするだろう。
要件定義をガチガチに固めるのが重要なのだから。

アジャイル開発プロセスに乗せたとしても、AIがリリースしたシステムから顧客のフィードバックをもらって、それを要件定義して、再度リリースするだけだ。
アジャイル開発プロセスが定義する、設計も開発もテストも同時並行して開発チームが考えるプロセスは無くなる。
つまり、要件定義とAIのシステム開発だけの工程になるならば、WF型開発で工程管理した方が楽だ。

よって、システムアーキテクトという役割もAIに吸収される。
じきに、顧客自身が要件をまとめられるならば、コンサルも必要ない。
要件をのものをまとめる作業すら、AIにいろんな要望をプロンプトで投げれば、要件定義書も作ってくれるだろう。
つまり、ビジネスアナリストという役割もAIに吸収されるかもしれない。

FDEが示唆するものは、AIがシステム設計から移行までを代替するだけでなく、じきに要件定義そのものもAIが代替することを示唆しているだろう。

【3】また、astahでは、AI機能が投入された。
Copilotと連携して、AIと対話形式でクラス図、シーケンス図などの自動生成をしてくれる。

astah* AI連携機能

振り返れば、MermaidやPlantUMLでクラス図やシーケンス図などUMLダイアグラムは全て書けるのだから、AIでMermaidやPlantUMLをAIで生成すればいい。
つまり、モデルそのものもテキストで表現できるならば、プロンプトと相性がすごくいい。

astah上で、モデルの配置をマウスでグリグリする作業すらいらない。
AIがモデル要素を吐き出し、モデルの配置すら定義してくれるからだ。

【4】では、モデリング作業や、システム設計という思考そのものはAIがどこまで代替可能であるか?

モデリング作業そのものはAIに吸収されるだろう。
UMLの全てのダイアグラムは、MermaidやPlantUMLで書けるのだから、UMLによるモデル生成はAIで実装される。

FDEと同様に、モデルを定義するアーキテクチャ設計そのものもじきにAIが代替するだろう。
要求を適当にプロンプトで投げれば、要件定義書が出力できるからだ。
そこから、Bestなアーキテクチャ設計もAIに聞いて、判断すればいい。
判断そのものも、判断基準をプロンプトで投げてAIにやらせればいい。

すると、システム設計という思考そのものもAIに委託して、AIに代替されるのか?
確かに、人間が思考する行為そのものもAIに委託できるだろう。

しかし、人間はシステムを理解したい欲求があるはずだ。
システムは複雑で、目に見えないので理解しづらい。
そこで、システムをモデル化して理解したい。
よって、システムをリバースして、モデル化する作業そのものをAIにやらせればいい。

AIにシステム開発させるだけでなく、人間が理解するためのモデルもAIに生成させる。
AIで生成されたモデルを通じて、人間はシステムとアーキテクチャ設計を理解するだろう。

【5】結論は、AIがシステム開発も、システム設計も、アーキテクチャ設計も、モデル生成も、モデル設計の作業も全て代替するだろう。

システム要件を考える行為、モデルを考えるモデリング行為そのものもAIが代替するだろう。
人間の思考そのものも、AIに委託できるだろう。

しかし、モデリング作業は必要にはならないと思う。
人間がシステムを理解するためにモデルが必要だからだ。
つまり、人間がシステムを理解し把握するために、AIがモデル生成する作業そのものは残るだろう。

すると、人間の役割は何なのか?
AIがすべての作業を代替してやれるならば、人間の存在意義は何なのか?

要件定義を行うビジネスアナリスト、システムアーキテクチャを考えるシステムアーキテクトの役割もAIが代替するならば、人間の存在は何の役に立つのか?
思考する行為が人間の存在意義だったのに、それすらもAIに委託できて、AIの方がはるかに深い考察結果を出すのならば、人間は不要なのか?

| | コメント (0)

2026/05/03

愛憎のUML~なぜ「設計図」は消え、「スケッチ」として生き残ったか

「UML」という言葉を耳にしなくなった今、なぜ一つのツイートが10万超の閲覧を記録したのか。
そこにはエンジニアたちの深い愛憎と、理想と現実の乖離がある。
時代が求める「モデル」の形はどう変容したのか。
重厚長大な開発から俊敏なWeb開発へ、設計図からスケッチへと姿を変えた、その生存戦略に迫る。

【1】なぜか、下記のツイートがバズって10万件以上の閲覧、1千件近いいいねがついた。
僕もなぜバズったのか理由も分からない。
単に記事のリンクを貼って、自分用のメモにしただけ。

(1) Xユーザーのakipiiさん: 「これ面白い。なぜ、2000年代には巷で耳にした「UML」を現在では全く耳にしないのか?|pdfractal https://t.co/gMUjbOYO7X #zenn」 / X

【参考】
なぜ、2000年代には巷で耳にした「UML」を現在では全く耳にしないのか?

イントロダクション:複雑化したUMLを救え | 日経クロステック(xTECH)

UML再考: プログラマの思索

モデルの粒度とトレーサビリティ、変更管理の問題は、モデリングツールではなくUMLそのものに真因があるのではないか: プログラマの思索

仕様書にもExcel脱却が求められている: プログラマの思索

現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法 | 増田 亨 |本 | 通販 | Amazon

改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 | 仙塲 大也 |本 | 通販 | Amazon

UML モデリングのエッセンス 第3版 | マーチン ファウラー |本 | 通販 | Amazon

ドメイン駆動設計をはじめよう

【2】なぜ、UMLの記事がバズったのか?
理由は、皆、UMLに愛や憎しみがすごく溜まっているので、的確に分析した記事に思わず反応してしまったのだろう。

オブジェクト指向が流行っていた時代、モデリングといえばUMLだった。

UMLを積極的に使っている人は、プログラミングできるだけでなく、モデリングも重要という認識を持ち、非常に高い能力を持つ人が多かったのではないかと思う。
しかし、理想と現実の狭間が大きすぎた。

しかし、UMLで作った設計ドキュメントと実際のソースコードに乖離があり、同期しづらく、労力が掛かる割にはメリットが少なかった。

下記のツイートに一番共感できた。

(1) XユーザーのDr.K Laboratoryさん: 「@akipii Rational Roseを使ってRUPを実践する中でブループリントとしても、双方向ツールのTogetherを使ってプログラミング言語としても経験した身として、身につまされる思い。 RUPは一定以上の規模のプロジェクトだとかなり良かった。 Togetherは使い物にならず。 ファウラーが正しかったという結論かな。」 / X

【3】なぜ、2000年代には巷で耳にした「UML」を現在では全く耳にしないのか?の記事で、非常に優れた分析だと思う点は、リリース周期の長さと厳密なモデル設計がトレードオフである点だ。

SaaSのようなWebサービスであれば、リリース頻度は1日数回、あるいは何万回もデプロイまでしているだろう。
よって、動くソースコードとモデルを同期するメリットよりも、無駄なコストがかかるというデメリットの方が上回る。
なぜならば、リリースサイクルが極端に短すぎるために、モデルを書いてソースコードを自動生成して同期させる作業がリリース速度に間に合わないからだ。

したがって、動くソースコードそのものが設計書、モデルそのものになる。

一方、UMLのようなモデルが生き残った領域は、重厚長大な産業領域だ。
たとえば、車載ECU、医療機器、防衛装置のように莫大な費用がかかり、ISOのような認証や監査が必要な領域では、モデルとソースの一貫性が求められるからだ。
たしかに、ECU開発ではAUTOSARが事実上の業界標準であり、要件からモデル、ソースコードまでのトレーサビリティを一気通貫で管理できる

しかし、とても重たいプロセスだ。
現場で見ていて、やり方は綺麗だが、設計者も開発者もトレーサビリティの維持にたくさんの労力をかけていて、膨大なドキュメントを作って監査を通す作業に時間を費やしている。
正直見ていて楽しいと思えそうな作業ではなかった。

【4】他方、平鍋さんがイントロダクション:複雑化したUMLを救え(2ページ目) | 日経クロステック(xTECH)で述べているように、、現場でのUMLの利用方法を「スケッチとして(UML as sketch)」「設計図として(UML as blueprint)」「プログラミング言語として(UML as programming language)」の3つに分類して、UMLの生き残りを図る考え方もある。
その結果、なぜ、2000年代には巷で耳にした「UML」を現在では全く耳にしないのか?の記事の通り、「スケッチとして(UML as sketch)」だけが生き残り、UMLという言葉と関係なく、モデリングという行為そのものが普及したのが現状ではないだろうか。

たとえば、MermaidやPlantUMLのように、MarkdownやテキストでUMLのモデルそのものが簡単にかける環境では、AIにプロンプトで指示すれば、簡単にモデルを描くことができる。
アーキテクチャドキュメントやアーキテクチャデシジョンの1つの資料として、生き残ったのではないだろうか。

そんなことを思うと、UMLは当初の意図から違った歴史を経て、未だに生き残っていると言えるだろうと思う。

| | コメント (0)

2026/04/12

AIエージェントとastahが変える真のモデル駆動開発とは何か

20年前のモデル駆動開発の理想が、AIでついに現実できる気がした。
AIエージェントがastahで描いたUMLとソースコードを同期する「Superpowers-UML」プラグインについて、考えたことをラフなメモ書き。

【参考】
オブジェクト指向でなぜつくるのか 第3版

Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践 (impress top gear) | Sam Keen, 株式会社クイープ |本 | 通販 | Amazon

UMLモデリングの本質 第2版 | 児玉 公信 |本 | 通販 | Amazon

Amazon.co.jp: UMLモデリング入門 : 児玉 公信: 本

図解即戦力 UMLのしくみと実装がこれ1冊でしっかりわかる教科書 | 株式会社フルネス 尾崎 惇史 |本 | 通販 | Amazon

XAstahさん:「ユーザーの一人が、Obraの「Superpowers」エージェントスキル用の拡張機能であるSuperpowers-UMLをリリースしました。これで、Astah Pro + Claude + Astah Pro MCPプラグインを使用して、AIエージェントがUMLモデルでソフトウェアを設計できるようになります。Superpowers-UMLのインストールはこちら:https://t.co/6WuXX9nP0f #AIagents #SoftwareDesign」 / X


takaakit/superpowers-uml: Superpowers-UML modifies Superpowers to ensure a software development workflow in which AI agents design through UML modeling.

Xユーザーのakipiiさん: 「Astah Pro + Claude + Astah Pro MCP Plugin を組み合わせて、AIエージェントがUMLモデリング+Javaプログラミングまでやってくれるみたい。AIエージェントがどこまでモデリングとプログラミングの作業を代替してくれるのか?」 / X

Xユーザーのakipiiさん: 「@sana_ailovetaku 仰る通りモデルとコードが同期して連動する観点はメリットですね。20年前のモデル駆動開発が本来やりたかったことはモデルからソースコードを吐き出して同期させて構成管理する事だった。ようやく時代が追いついてきた印象です」 / X

【1】astahとAIエージェントでモデル駆動開発させるプラグイン紹介が面白かった。

(引用開始)
Superpowers-UMLはSuperpowersを改良し、AIエージェントがUMLモデリングを通じて設計を行うソフトウェア開発ワークフローを実現します。

超能力に関する主な変更点:

AIエージェントは、ソフトウェア設計[1]を含む仕様をUMLモデルとして表現します。
ユーザーとAIエージェントはUMLモデリングを通じて仕様と設計を共同で改良します[1] 。
AIエージェントは、ユーザーが承認したUMLモデルに基づいて実装計画を作成する。
AIエージェントは、実装されたコードと一致するようにUMLモデルを修正します。
このプロジェクトはフックやサブエージェントといったClaude Code固有の機能に依存しているため、Claude Codeのみがサポートされています。
[1] : 将来的には、仕様と設計の成果物は分離される可能性があります。
(引用終了)

【2】20年前のモデル駆動開発と、Superpowers-UMLの違いは何なのか?

20年前のモデル駆動開発では、UMLモデリングツール上でモデルを手作業で描いた後に、ソースを自動生成してシステム開発するやり方だった。
この手法の弱点は2つある。

1つ目は、仕様変更の取込が非常にやりにくいこと。
ちょっとずつ仕様変更を取り込んでソース自動生成してコンパイルしてリリースして、という手順が当時の開発環境ではかなり時間がかかった。
一番嫌なのは、モデルと同期する必要があるためにソースコードを直接変更できないことだ。
よって、フィードバックループそのものに時間が凄くかかっていた。
だから、WF型開発のように、事前に要件や仕様をガチガチに決めた後にモデルを確定して、ソース自動生成させるやり方がほとんどだったように思う。
正直、モデル駆動のありがたみがあまり感じられなかった。

2つ目は、モデルの構成管理、変更管理がやりにくいこと。
モデルの差分を見たいのだが、モデルそのものはバイナリファイルだったり複雑なXMLなので、それらを履歴管理しても、実際のモデルのどの部分が変更されているのか分かりづらい。
人間が理解できるモデルの差分が見たいのに、その表現力がモデリングツール上では弱かった。
ちょっとしたレイアウトの差分を見たいわけではないのに。

【3】しかし、Superpowers-UMLのようなClaudeCodeとAIエージェントの組み合わせにより、ようやくモデル駆動開発が真の意味で実用的になってきたように思える。
つまり、「AIが設計モデルを理解し、モデルとコードを同期させながら開発を進める」という高度なモデル駆動開発が実現可能になったことだ。

AIエージェントが単にテキストを生成するだけでなく、「UMLモデルを介してソフトウェア設計を行う」というワークフローを定義している。
つまり、astah*が持つモデル情報、たとえばクラス図、シーケンス図などをAIが読み取り、修正・追加を自動でやってくれる。
そして、AIがUMLモデルをベースラインとしてソースコードを自動生成してくれる。
一方、ソースコードの変更を直接やっても、AIがモデルにその変更を取り込んで、AIがUMLモデルとソースコードの1対1対応を保証してくれる。

エンジニアは、ソースコードを直接触ってもいいし、モデルを触ってもいい。
モデルとソースコードの同期はAIが保証してくれる。

【4】AIエージェントがモデル駆動開発を保証してくれるなら、どんなメリットがあるのか?

エンジニア観点のメリットは、膨大なソースコードを逐一見る必要はなく、蒸留されたモデルをによりシステム構造を手早く理解でき設計の判断ができることだろう。
AIエージェントがUMLを介して構造を理解しているため、開発者は「どのクラスがどの機能に責任を持つか」を視覚的なモデルを通じてAIと会話できるので、認知負荷を下げられる。

AIがUMLダイアグラムをリアルタイムで更新・チェックするため、設計書が古くなる「ドキュメントの形骸化」を防げる。
また、モデルに基づいたコード生成により、設計意図を正確に実装に反映できる。

開発者同士のレビューでも、モデルを通じてコミュニケーションできるので、曖昧さを排除し、会話を促進してくれる。

【5】そんなことを考えると、モデル駆動開発の理想がようやく時代に追いついて来たと言えるだろう。
プログラミング作業はほぼAIで代替されている現代では、モデルそのもので会話できる基盤が重要になってきているのではないか。
モデルがあれば、エンジニア同士だけでなく、ソフトウェア開発の知識がない一般ユーザと会話できる基盤があるからだ。

この辺りの発想も深めていきたい。


| | コメント (0)

2026/03/29

すり合わせの優位性は健在か?日本の製造業が直面するPLM活用とMBSEソフトウェア運用の理想と現実

石油危機は再び日本の自動車産業を塗り替えるのか。
現場で感じた「すり合わせ」の限界、PLMによる設計資産のデジタル化、そしてMBSE導入に立ちはだかる高価な壁。製造業DXの理想と過酷な現実を深く考察してみる。

【参考】
Xユーザーのブルームバーグニュースさん: 「石油危機が自動車市場を変える、かつての勝ち組日本車劣勢 https://t.co/NoIbkcR5k0」 / X

PLMツールとは部品表の構成管理ツールでありGitHubである: プログラマの思索

いまこそ知りたいDX戦略 自社のコアを再定義し、デジタル化する

図解 DX時代のPLM/BOMプロセス改善入門 デジタル化 段階別課題解決のアイデア100 | 三河 進 |本 | 通販 | Amazon

システムズエンジニアリングに基づく製品開発の実践的アプローチ

システムズエンジニアリングの探求 | ジョン・ホルト, Jon Holt, 伊藤 侑太郎, 河野 文昭 |本 | 通販 | Amazon

システムズエンジニアリングハンドブック 第5版 | デイビッド・D・ウォルデン, 西村秀和 |本 | 通販 | Amazon

実践に活かす モデルベースシステムズエンジニアリングの基礎 | 西村 秀和, 西村 秀和, 河野 文昭 |本 | 通販 | Amazon

5つの問題解決パターンから学ぶ実践メソッド BOM(部品表)再構築の技術 | 三河 進 |本 | 通販 | Amazon

BOM/部品表入門: マテリアル・マネジメント改革の基本技術 (図解でわかる生産の実務) | 佐藤 知一, 山崎 誠 |本 | 通販 | Amazon

【1】50年前の石油危機が日本の低燃費自動車普及のきっかけと同様に、今回の石油危機がEV化、SDVを加速させるだろう。
日本メーカーはITに弱いのでこの波に乗れないように見えるのが辛い。

Xユーザーのブルームバーグニュースさん: 「石油危機が自動車市場を変える、かつての勝ち組日本車劣勢 https://t.co/NoIbkcR5k0」 / X

Photo_20260329155801
【2】日本の製造業の現場を1年ほど見てきて、疑問に思う点は2つある。

【3】1つ目は、日本の製造業が得意とする「すり合わせ」とは一体何だろうか?
現代では「すり合わせ」の技術に優位性はあるのか?

50年前なら、ソフトウェアはハードのおまけであり、ハードウェアのすり合わせ技術が品質保証に繋がっていたのだろう。
しかし、現代では、自動車であれ、機械製品であれ、部品点数は数万点、10万点以上に及ぶ。
そんな大量の部品を組み合わせて量産するのは、人間の脳みそによる管理限界を超えている。

また、市場環境の変化、国際政治の変化によるサプライチェーンへの影響により、次から次へと多品種少量生産を強いられる。
そんな状況で、すり合わせをいちいち実施していて、環境変化の速度についていけるのだろうか?

「すり合わせ」の優位性は今でもあるのか、正直疑問に思う。

Photo_20260329160001

【4】もう一つは、日本の製造業のDX戦略のあるべき姿はどこにあるのか?

いまこそ知りたいDX戦略 自社のコアを再定義し、デジタル化するでは、DX成熟度というべき段階レベルがある。
具体的には、DX成熟度には、デジタル化→デジタル改革→デジタル変革 の3つがある。

現在、日本の製造業のDX成熟度は、まだデジタル化の段階にある。
彼らの現場では、職人技術者の頭にノウハウが染み付いていて、OJTという名で技能継承してきた。
いまだに2D-CADが主流であり、つい最近まで紙ベースの製図が割とあった。
製品設計図がデジタル化されていると言っても、Excelやパワポで散在していて、一元管理もできていない。

だからこそ、PLMツールを使って、製品設計図をデジタル化して一元管理しようと試みている企業が多い。
この流れは正しい道筋と思う。

しかし、彼ら日本の製造業は、今後、デジタル化された資産をどのように戦略策定に使おうとしているのか?

本来は、PLMツールに格納された設計資産を、FMEAのような品質保証と結びつけたり、見積もりや原価計算などのコスト管理に結びつけたり、MESやERPを連携させて工程管理で使うことで、設計工程や製造工程の業務プロセスを改善したい。
だが、日本の製造業の設計・製造プロセスは過去の長い歴史の経緯もあって、非常に複雑で例外フローが多く、属人的なフローが多すぎる。
まずは整理整頓する段階で留まっている。

PLMツールとは部品表の構成管理ツールでありGitHubであるならば、設計資産を有効活用して、QCD向上につながる業務プロセス改革に使いたい。
そういう戦略策定が必要になるだろう。
今は試行錯誤しているように見える。

Dxplm

【5】PLMツールで設計資産を一元管理できたとして、MBSEとどのように関係づけて、より高度な製品開発にもっていくか、という課題もある。

実際の物理構造である設計図面ではなく、論理的なあるべき機能からモデルを構成して、モデルベースで製品開発していくべき。
それがMBSEになろうだろう。

【6】しかし、僕は、MBSEは巷で言われているように本当に有効なのか、疑問に思っている。
理由はいくつかある。

1つ目は、新製品開発の期間が短く、多品種少量生産を強いられる環境の中で、いちいちモデルを新規作成するのは、時間もコストも掛かりすぎる。
せっかく作ったモデルもすぐに陳腐化しやすい。

また、一度作成したモデルも、設計後に量産化する前の検証段階で、何度も手が加えられて変更される。
つまり、モデルの構成管理が必要になる。
しかし、モデル作成専用のソフトウェアがなければ、構成管理は難しいだろう。
たいてい、MBSE専用のソフトウェアは非常に高価であり、大量の設計者が同時使用できる代物ではない。
モデル作成のコスト、モデルの構成管理のコストは、想像以上に高く、ハードルが高い。

MBSEソフトウェアとして、カメオシリーズが有名。
Cameo Systems Modeler | カメオ システムズ モデラー | SysMLモデリングツール | アイコクアルファ株式会社

Mbse

【7】2つ目は、モデルを作成できたとして、何が嬉しいのか、効果が見えづらいことだ。

確かに、論理的なモデルにより、ハードウェアの制約や過去開発の思い込みをゼロベースから検討できるのはメリットの一つだが、それだけでは弱すぎる。

僕の直感では、ハードで実現した試作品を作る前に、MBSEで作成したモデルをソフトウェア上で何度もシミュレーションで何度でも検証できることが最大のメリットではないか、と考える。
なぜならば、ハードの試作品を作っては検証して、何度も作り直すのは、仕損費が膨れ上がり、設計コストが耐えられないからだ。

むしろ、ソフトウェア上で何度も作っては検証して、機能だけでなく性能や非機能要件まで細部の仕様を詰められれば、試作品の仕損費を劇的に減らせる。
量産に持ってくまでの試作期間を短縮することも可能だ。

つまり、Simulinkでシミュレーション検証する、CAEで検証する、と言った検証作業をソフトウェア上で何度も試せる点が重要だろうと考える。

そして、ここでも、MBSEベースのモデル検証にはMBSE専用ソフトウェアが必要であり、MBSE専用ソフトウェアが非常に高価である点がボトルネックになってくる。

すなわち、MBSEベースのモデル駆動開発とは、MBSE専用ソフトウェアによるモデル開発とモデル検証であって、我々IT技術者が思い描くGitHubベースのソフトウェア開発ではない。
よって、MBSEベースのモデル開発は非常にハードルが高いと言えるだろう。

この考え方が正しいのかどうか、今後も思索していく。

Mbse_20260329160201

| | コメント (0)

2026/02/14

データモデリングではシステムが宿命的に負う複雑性をどのように解決しようとしているのか

関西IT勉強会で、データモデリングについて聞いてきた。
関西IT勉強会の議論について、@kitaohxさんと議論しながら、「データモデリングでは、システムが宿命的に負う複雑性をどのように解決しようとしているのか?」について気付きがあった。
ラフなメモ書き。

【参考】
販売管理システムで学ぶモデリング講座 (DB Magazine Selection) | 渡辺 幸三 |本 | 通販 | Amazon

システム開発・刷新のための データモデル大全 | 渡辺 幸三 |本 | 通販 | Amazon

業務別データベース設計のためのデータモデリング入門 | 渡辺 幸三 |本 | 通販 | Amazon

生産管理・原価管理システムのためのデータモデリング | 渡辺 幸三 |本 | 通販 | Amazon

業務システムのための上流工程入門 | 渡辺幸三 |本 | 通販 | Amazon

人月の神話 | フレデリック・P・ブルックス,Jr., 滝沢徹, 牧野祐子, 富澤昇 | 工学 | Kindleストア | Amazon

データモデリングの手法をあなたは持ってますか? at 関西IT勉強宴会: プログラマの思索

「やさしいデータベース設計」出版記念講演 in 新大阪 - connpass

「やさしいデータベース設計」出版記念講演 in 新大阪 (第105回IT勉強宴会) | IT勉強宴会blog

【0】システムが持つ本質的な複雑性を、データモデリング屋はどのように解決しようとしているのか?

人月の神話」には「ソフトウェアの複雑性は本質的な性質であって偶有的なものではない」という一節がある。
この言葉は、システムが本質的な複雑性を持っている、という論点だし、SEもアーキテクトも皆、この論点をいつも考えていると思っている。
この内容について以下考える。

ソフトウェアの複雑性は本質的な性質であって偶有的なものではない: プログラマの思索

【1】お題は、大学生に対するストレスチェックみたいなアンケートシステムに対し、データモデルを書く。
渡辺さんは、ホワイトボードを前に、ライブ・コンサートみたいに、スラスラとデータモデルを書いていく。

データモデリングの手法をあなたは持ってますか? at 関西IT勉強宴会: プログラマの思索

書いたデータモデルについて、参加者と議論があった。

外部キー制約の実装箇所はDB層なのか、アプリ層なのか、あなたがモデラーならどうする?

外部キー制約をRDDBMSに貼れば、ER図をそのまま実現できる形になる。
一方、大量データをデータ移行する時、外部キー制約があると、外部キーとして存在しないキーを登録するとエラーになる。
つまり、データをインポートする順番を事前検討する手間がかかる。
Railsや他のフレームワークでもそうだが、たぶん、RDBのテーブルは主キーぐらいの制約だけで、アプリ層で外部キー制約を実装する場合が多いだろう。

渡辺さんもえとうさんも、話を聞くと同じで、フレームワーク層に配置する、と。
つまり、DBMSに制約も張らず、アプリ層でもなく、その間のフレームワーク層に配置する意見で一致していた。

渡辺さんは自作のローコード開発基盤を持っているので、その基盤上で制約を実装する。
えとうさんはTM手法手法の人だが、Seasarを使っていると言っていたので、フレームワーク層で実装するのだろう。
僕の理解と合ってたので特に違和感なかった。

【2】この論点の問題をさらに発展させると、外部キー制約だけでなく、動的参照関係、ユニーク制約などのDBMSの制約ロジックはDB層なのか、アプリ層なのか、どこに実装すべきなのか?

渡辺さんは、外部キー制約、動的参照関係、ユニーク制約など、DBMSの関数従属性にプラスアルファされる制約条件は、ローコード開発基盤に実装すべきであり、アプリ層に配置すべきではない立場だ。
なぜならば、DBMSの制約条件とビジネスロジックは関心事が異なるから、という論点と理解している。
えとうさんはTM手法ですが、実装レベルでは、Seasarで実装していると言っていたので、フレームワーク層で実現する点は同じと理解している。

つまり、DB層とアプリ層の中間レイヤである純粋仮想化物の層であるフレームワーク層に、制約を配置すべきだ。

【3】アンケートシステムのデータモデルでは、渡辺さんがデータモデルに、「支援制約」「回答値制約」というカラムを書いていた。
ストレスチェックのアンケートシステムの目的は、学生の心身状態をアンケートで回答してもらい、心が病んでいる学生にはカウンセリングや薬物処方などの手当や支援が必要だ、という考え。
だから、アンケートの質問に応じて回答内容は何でも良いわけではなく、何らかの制約がある。
「支援区分」には学生、家族のようなカテゴリがあり、学生への支援内容、家族向けの支援内容ではそれぞれ対策が異なるので、何らかの制約がある。
そのような内容があるので、「支援制約」「回答値制約」と書いていた。

【4】では、「支援制約」「回答値制約」のような制約ロジックの内容をテーブルのカラムに埋め込むのか、フレームワーク層やアプリ層にロジックを実装するのか?

確か楽々フレームワークの人はフレームワークに実装する意見だった。
渡辺さんは、テーブルのカラムに制約ロジックまで入れてしまえばいい意見だった。
例えば、何らかの制約ロジックはJavaScript プログラムのテキストでカラムに放り込み、フレームワーク層でJSプログラムを評価して実行すれば良い。
そうすれば、プログラム実装やビルド、デプロイも不要で、データをアップデートすれば簡単と言う理由と思う。

【5】僕の意見では、単に制約ロジックと言う業務ロジックをDB層に配置するか、フレームワーク層やアプリ層のプログラミングする層に配置するのか、と言う単純な論点ではないと考える。
つまり、論点は、アーキテクトとして、システムが持つ本質的な複雑性をどのように解決しようとするか、だ。

システムが宿命的に負うべき複雑性をいかに分散して全体のコストを最小化すべきか?

一般に、普通のアーキテクトであれば、N層レイヤーの発想を元に、MVCモデルのように、ビジネスロジックを層別に分割し配置して、複雑性を人間の手で扱えるレベルまでバラす。

一方、データモデリング屋は、業務ロジックをできるだけDB層に全て表現したい欲求がある。
この利点は、本質的な複雑性をDB層に押し込むことで、機能を実装するアプリ層の複雑性を狭めて、アプリ開発のコストを減らしたい意図があると考える。
渡辺さんが提唱する三要素分析法は、システムが持つ本質的な複雑性をDB層に落とし込むために、データモデリングでもっと頭を使い、プログラミングするアプリ層は簡単にしたい発想と思う。

販売管理システムで学ぶモデリング講座 (DB Magazine Selection) | 渡辺 幸三 |本 | 通販 | Amazon」では、「データモデルと業務モデルを複雑にして機能モデルを簡単にする」という言葉で表現されている。
この意味は、システムが持つ本質的な複雑性をDB層のデータモデルと、例外業務を含む業務手順に集約し、プログラミングで実装する機能モデル、つまり、アプリ層は複雑にすべきではない、という考え方だ。

実際、例外業務はいくらでもあるので、それを全てシステムで実装すべきではないだろう。
年1回しかやらない例外業務で手間が駆らないなら、業務マニュアルで解決すればいい。
例外業務をプログラミングしてしまうと、例外業務のロジックがあれば修正コストが発生し、トレードオフを考慮すると無駄になるかもしれない。

また、業務ロジックから発生する関数従属性の制約条件は、アプリ層で逐一実装するのではなく、DB層あるいはDB層を薄く包むようなフレームワーク層に配置すればいい。
プログラマは、関数従属性の制約ロジックを逐一実装しなくてもいい。
もっと本質的な業務ロジックを実装すべきだから。

【6】この発想を推し進めると、ローコード開発基盤は、データモデルやモデル駆動開発と相性がいいと思う。
ローコード基盤はDB層をラッパーしているから、プログラマはRDBMSのテーブルを直接触ることもないし、アプリ層で必要なオブジェクトだけ触れば、自然に制約条件が満たされる、という形になるはずだ。
つまり、DB層をラッパーしたフレームワーク層はローコード開発基盤というわけだ。

今後はAIがプログラミングしてくれるので、モデリングや要件定義の重要性が高まるから、ますますローコード開発基盤の重要性は高まるだろう。
我々は本来、事業に役立つ業務を実行したいのであって、無駄なプログラムを大量に作りたいわけではない。
ローコード開発基盤を使って、直接の利用ユーザが使いたいシステムを素早く品質よく作りたいのだ。

特にローコード開発基盤は、製造業の基幹系システム、生産管理システムでニーズが多いと思う。

データモデリングを極めていくと、ローコード開発基盤に落ち着き、さらにはAIエージェント駆動によるプログラミング自動生成までつながるのが面白い。

【補足】
データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて | 杉本 啓 |本 | 通販 | Amazon

実践的デ-タモデリング入門 (DB Magazine SELECTION) | 真野 正 |本 | 通販 | Amazon

やさしいデータベース設計 要件定義から運用までの勘どころ | 衛藤 豊 |本 | 通販 | Amazon

事業分析・データ設計のためのモデル作成技術入門 | 佐藤 正美, TMの会 |本 | 通販 | Amazon

| | コメント (0)

2026/02/11

データモデリングの手法をあなたは持ってますか? at 関西IT勉強宴会

関西IT勉強宴会で、データモデリングについて聞いてきた。
データモデリングの手法をあなたは持ってますか?と皆に聞かれた気がした。
ラフなメモ書き。

【参考】
やさしいデータベース設計 要件定義から運用までの勘どころ | 衛藤 豊 |本 | 通販 | Amazon

「やさしいデータベース設計」出版記念講演 in 新大阪 - connpass

「やさしいデータベース設計」出版記念講演 in 新大阪 (第105回IT勉強宴会) | IT勉強宴会blog

事業分析・データ設計のためのモデル作成技術入門 | 佐藤 正美, TMの会 |本 | 通販 | Amazon

システム開発・刷新のための データモデル大全 | 渡辺 幸三 |本 | 通販 | Amazon

業務別データベース設計のためのデータモデリング入門 | 渡辺 幸三 |本 | 通販 | Amazon

生産管理・原価管理システムのためのデータモデリング | 渡辺 幸三 |本 | 通販 | Amazon

業務システムのための上流工程入門 | 渡辺幸三 |本 | 通販 | Amazon

【1】渡辺さんのライブモデリングは、いつ見ても、すごいと感じる。
佐野さんよりいきなり、お題は、大学生に対するストレスチェックみたいなアンケートシステムに対し、データモデルを書いてみましょう。

20260211_1

渡辺さんは、大学と学生のテーブルを書いた後、こんな感じでホワイトボードに書き始める。
アンケートと質問が必要ですね。
質問はアンケートごとに作られるので行番号があり、アンケート回答ごとの何らかの制約は回答値制約、アンケートに基づき大学生の心身状態に対応する必要があるので、対応区分と対応制約があるね。

次に、アンケート実施した結果は、学校別アンケートが必要で、その元ネタは生徒別回答だね。
ここで、生徒別回答テーブルのカラムを書き出した時、さらっと「(対応区分)」と書いて、動的参照関係が出てくるね、と書き下す。

そして、アンケート結果から、学生の心身状態に対応する集計結果が必要なので、対応区分別SUM(サマリ)も必要だね。

最後に、学校別にもアンケート集計結果が必要で、学校別対応区分SUMがいるね。
ここで、学校別対応区分SUMへ、外部キー制約や親子関係を貼っていく。

20260211_2

では、このデータモデルを皆で見てみましょう。
ここで、「対応区分」という言葉が、アンケートシステムの目的にフィットしていないことに気づき、本来は学生の心身状態に応じて支援する対策を立てることであるから、「支援区分」と書きましょう、と赤字で書き直した。

20260211_3

衛藤さんが絶賛されていた点は、一度書いたデータモデルを赤字で「支援区分」に見直して修正したこと。
まさにモデラーですね。
データモデルに対し、最後まで美学というか、こだわりをもって、少しでも用語に違和感があれば最後まで粘って、用語を修正し、モデルを修正する。
ドメイン駆動設計で言う、ユビキタス言語にこだわっている。
モデラーの美学、コンサルの美学を僕も感じた。

【2】渡辺さんのデータモデリングの最大の利点は、DBMSの制約条件が自然に出てくることだ。
具体的には、外部キー制約だけでなく、ユニーク制約などだ。
ユニーク制約は、国民年金番号みたいに別の主キーがもう一つあるね、とか、取引管理番号みたいにもう一つの主キーがいるはず、という業務ルールを意識して考えなければ、出てこないだろう。

特に、動的参照関係という、DBMSでは実装できず、論理的なER図だけでしか表現できないような制約条件も、渡辺さんのデータモデリングでは自然に出てくる。
動的参照関係は、TM手法でも他のデータモデリング手法でも、明示的に導出される場面を見た時がない。

たぶん、渡辺さんの過去の経験値から、こういう手法が編み出されているのかなと想像する。

こういうシーンは過去にも見た時がある。
10年以上前だが、花束問題のデータモデルに、テーブルの派生関係にさらに2次識別子を設けて、受払いの過去データと予定データを1つにまとめる手法は、目からウロコだった。

第39回IT勉強宴会の感想~花束を作る花屋の業務モデルをT字形ERと三要素分析法で比較する: プログラマの思索

【3】TM手法と渡辺さんの関数従属性だけのモデリング手法は、どちらが優れているのか?
見た感じでは、渡辺さんの関数従属性だけのモデリング手法が生産性が高く、分かりやすい。

実際、今日はいきなり、佐野さんから、アンケートシステムのお題を出されて、渡辺さんはあっという間にホワイトボードにデータモデルを書き上げた。
しかも、実際にアンケートシステムは既に作られていて、その画面を見ながら答え合わせすると、そのデータモデルはほぼ同じ。

一方、TM手法では、2つのリソースの対照表を作っては、業務レベルで必要なのか吟味する作業を延々と続けるので、正確ではあるが、モデルを完成させるまでに手間がかなりかかる。
また、外部キー制約、ユニーク制約とか、特に動的参照関係の制約までは、業務ルールを意識しなければ出てこない。

【4】ただし、TM手法では、2つのメリットがあると思う。
1つは、リソース数とイベント数を数えて、リソース数>イベント数であれば、新しいイベントを生み出すことで新しい事業を生み出す可能性があると指摘できること。

リソース数がビジネスの可能性に関係する理由: プログラマの思索

もう一つは、「データモデリング入門-astah*を使って、TMの手法を使う-」はとても良いモデリング資料: プログラマの思索に書いたように、2つの業務の順番を入れ替えることで、コストやリードタイムを劇的に改善できる可能性を指摘できること。
たとえば、「伝統的なセーターの製法は「糸を染めてからセーターを編む」」だが、「染色から販売まで6ヶ月もかかるので、見込生産になる。在庫が蓄積されやすい。」
しかし、「ベネトンは「セーターを編んでから染める」手法へ製造順序を逆転した」ことで「製造期間を短縮できるので、受注生産や直販が可能になった。在庫も減らせる。」

「データモデリング入門-astah*を使って、TMの手法を使う-」はとても良いモデリング資料: プログラマの思索

つまり、TM手法では、データモデルから新しい事業や業務を提案できる仕掛けを持っている。
その点が非常に面白いと思っている。

【5】渡辺さんのデータモデリングは何度か見ているが、今日みたいに、いきなりライブモデリングしていく姿に刺激を受けた。
関数従属性というたった一つのルールだけで、データモデルをTOBEとして描くことができるわけだ。
真似できないが、色々考えてみたいと思う。

【補足】
データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて | 杉本 啓 |本 | 通販 | Amazon

実践的デ-タモデリング入門 (DB Magazine SELECTION) | 真野 正 |本 | 通販 | Amazon

| | コメント (0)

2025/10/25

astahでPJ管理もプロセス設計もアイデア発想も全て表現したい

astahでPJ管理もプロセス設計もアイデア発想も全て表現したい。
つまり、astahで描けるUML、データモデリング、マインドマップを駆使して、仕事のすべての場面でアイデア発想、アイデア収束、展開するパワポ資料のアウトラインまで作成したい。

【参考】
astah システム設計、ソフトウェア開発支援ツール | astah*

ダイアグラム思考 次世代型リーダーは図解でチームを動かす | 髙野 雄一

第4回astah関西勉強会の感想 #astahkansai|akipii

astah*の因果ループプラグインがいいね: プログラマの思索

astahで使える無償プラグイン一覧

astah*のデータをiPadで持ち運ぶ | 雲の巣

【1】なぜ、astahをそんなに使いたいのか?

1つ目は、単純に僕はastahが好きだから。
PlantUML、Mermaidも良いが、直感的に絵を描きたい時、astahの方が手に馴染む。
EnterpriseArchitectも良いツールだし、多機能なので何でも描けるが、僕の感覚に合ってなかった。

2つ目は、モヤモヤした状況をいろんな観点で図示して、構造を見える化したいからだ。
システムやソースコードの分析だけではない。

日々の業務では、定常業務の手順や業務フローをアクティビティ図やDFDで描けば、誰に何をどのタイミングで渡せばいいのか、理解できる。

PJ管理では、PJのゴールや成功条件に対し、中間目標には何があって、それを解決する手段は何なのか、紐づけて可視化したい。
ステークホルダー分析では、アクターとなるステークホルダーと要求事項、期待値を紐づけて、どんなコミュニケーションを実施すればいいのか、色んな観点で案を探るために、ユースケース図でイメージしたい。
発生した問題に対し、その事象にはどんな要因が原因と結果の流れでつながっていて、因果ループ図のようなシステマティックな構造で発生している構造を可視化し、本来の真因やボトルくネックを特定することで、効果的な対策を実施したい。
展開するパワポ資料を作る時、いきなり書き出すのではなく、アウトラインや目次の構成を考えるために、メッセージやアイデアを発散して収集する。意味ある因果関係で整理するために、マインドマップを使いたい。

つまり、仕事のあらゆる場面で、astahを使うことで手順の可視化、計画の可視化、問題の可視化に使いたいのだ。


【2】では、astahをどの場面でどんな技法を使うと有効なのか、考えてみたい。

UML、データモデリングは一通り使える。

【2-1】個人的に好きなツールは、ユースケース図に因果ループ図の構造を把握してくれるプラグインだ。
因果ループ図を使う場面は、PJ管理上でQCDに関する問題が発生した時に、複数の事象や複数の原因がどのように因果関係でつながっているかを可視化して、ボトルネック特定や対策策定に役立つときだ。

astah*の因果ループプラグインがいいね: プログラマの思索

【2-2】最近、アクティビティ図にInput、Outputをオブジェクトとして追加し、DFDぽく表現するやり方をやってる。
一連の業務フローに帳票、システムへの入出力となる情報、メール送信などを入れると、理解しやすくなる。
単純なDFDは順序が表現されないので、その弱点を解決できるのもメリットだ。

【2-3】最近、チームの状態やチームの能力成熟度を状態遷移図で表現するやり方をやってる。
たとえば、ファシリテーションなら、会議の中で、チーム内の議論の状態が、共有→発想→収束→展開のように流れるので、そのまま状態遷移図で表現してしまう。
すると、どんなトリガーで次の状態に移るのか、条件を考える気づきがある。

この考えを進めると、CMMIの能力成熟度モデル5段階、マズローの欲求5段階説も同様に、状態遷移図で表せる。
1段上の能力に上がるにはどんなトリガーや条件を満たす必要があるのか、を表現できるわけだ。

【2-4】ユースケース図のうち、ロバストネス図の機能を使って、DFDみたいに書く時がある。
デマルコ記法のDFDよりもロバストネス図の方が、クラス図やシーケンス図にも連動しやすいので便利だ。

【2-5】マトリクスで4象限を表現したい時、アクティビティ図でレーンで枠を囲って、無理やり表現している。
迷うのは、4象限に配置した概念をアクティビティにするか、ノートにするかだ。
長い文字列で表現するときはノートにせざるを得ないが、アクティビティの方がそれらしく見えやすいので悩んでる。


【2-6】ユースケース図をアクティビティ図の代わりに業務フローで表す手段も試してる。
ユースケース図で業務の流れを表現するメリットは、アクターやInOutのオブジェクトをクラスやロバストネス図のオブジェクトなど、色んなツールで多彩に表現できることだ。
そもそも、アクティビティ図も本来は、一つのアクティビティがユースケースになり、そこからクラス図やシーケンス図へ落とされていくので、ユースケース図の方が詳細化する他の図に連動させやすいメリットがある。

【2-7】今度試したいのは、タイミング図だ。
たとえば、時系列で推移や変動をグラフで表現したい時がある。
タイミング図では、時系列に状態を表現できる機能があるので、時系列グラフをうまく表現できないか、考えている。

【2-8】マインドマップはアイデア発散に使える。
僕は、資料構成のアウトライン作成で使って、そこからパワポ出力する機能を愛用してる。
他に、たくさんの図を残していて、それらを整理するために、マインドマップにドラッグ・アンド・ドロップしてリンク集みたいに使っている。
マインドマップ上で、リンクされた図をカテゴリすればさらに見やすくなる。

【2-9】ER図にようやくパッケージ構造の機能が追加されたので、フォルダ分けすることで、複数のER図を作りやすくなった。
DBリバース、DBエクスポートプラグインを使えば、ExcelのDB定義書と同期できるので便利。

【2-9】astahの図を全てHTML出力するプラグインも入れた。
astahの100個以上の図を貯めているので、HTMLで出力してiPhoneやiPadに入れて、暇な時に読んでいる。
自分が書いた図なのに、後で読み返すと気づきがあってすごくいい。


DiagramToHTMLプラグイン | Astah

astah*のデータをiPadで持ち運ぶ | 雲の巣

【3】結論は、astahで全て書ききれると思う。

書きづらい場面は、マトリクスや表形式で詳細にまとめたい時、パワポ資料に描くポンチ絵だろう。
その辺りもまた解決方法を考えてみたいと思う。

astahでPJ管理もプロセス設計もアイデア発想も全て表現することで、自分のアイデアも手順も全て可視化したい。
そうすれば誰にでも説明できるし、自分の中でストーリーも作りやすい。
もっともっと試してみたい。

astahでPJ管理もプロセス設計もアイデア発想も全て表現したい

| | コメント (0)

2024/09/22

アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)

ソフトウェアシステムアーキテクチャ構築の原理 第2版」をアジャイルアーキテクトさんや他の方と輪読していたときの感想をメモ。

【1】「ソフトウェアシステムアーキテクチャ構築の原理 第2版」は既に絶版なのだが、内容は良い本だ。
アーキテクチャ設計のプロセスを現代風にうまく表現してくれている。
今のマイクロサービス設計にも当てはめることもできるだろう。

ソフトウェアシステムアーキテクチャ構築の原理 第2版」に出てくる用語は、図4-3.コンテクストにおけるパースペクティブを見ればいい。

43_20240922212201

その時のビューは、図15-1.ビュー間の関係 の観点で整理される。

151_20240922212201

【2】「ソフトウェアシステムアーキテクチャ構築の原理 第2版」をアジャイルアーキテクトさんや他の方と輪読していたときに一つの疑問があった。

ソフトウェアシステムアーキテクチャ構築の原理 第2版」では、アーキテクチャを定義し、設計し、実装し、評価する一連のプロセスが、図7-3.アーキテクチャ定義の詳細で定義されている。
そのプロセスの中に、「適切なアーキテクチャスタイルを識別する」プロセスでは、過去のアーキテクチャパターンを参照するという記述があり、腑に落ちていなかった。
アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか。
アーキテクチャ設計はもっと高尚なプロセスではないのか、という認識が強すぎた。

73_20240922211101

実際のシステム開発では、ユーザの要求を元に、業務やシステムの要件を定義し、スケジュールやコスト、品質の観点からアーキテクチャの候補を複数から選定して基盤を決定する。
そこから具体的な設計、実装に入っていく。
今なら、業務要件や機能要件を定義する中で、非機能要件を満たせるようなインフラ基盤やネットワーク基盤、開発フレームワークを選定するだろう。
サーバはクラウド、クライアントはPCやスマホなどを基盤に選定するだろう。

そういう設計を具体的に行うときに、過去のアーキテクチャパターンを参照するときもあるが、新しい技術を導入する時は過去の事例がないので、苦労するし、失敗しやすい。
その疑問を解決できていない気がしていた。

【3】この疑問について、先輩と議論して気づいたことがある。

アーキテクチャ設計について、アーキテクトの経験や会社の過去事例に既に実績があるならば、いきなりアーキテクチャ設計を実装するのではなく、要件を基に、過去に成功して実現性の高いアーキテクチャパターンを採用することで実装する方針を決めるのは自然な流れと理解した。
その時に、プロセスの実行(プロセスクラスをインスタンス化して実行)においても、同様に過去のプロジェクトで成功して実績のあるプロセス事例を参照して、プロセスを設計するのは自然な考え方ではないか、と気づいた。

一方、新しい技術を取り入れてアーキテクチャ設計する時、社外の専門家である外部ベンダーに参画してもらい、その知見を活かしてもらうわけだが、そのやり方も実現性の高いアーキテクチャパターンを知っている専門家を利用しているわけだ。

この辺りをモデル化してみた。

Photo_20240922211201


「当初の案」では、プロセスパターンクラスをアーキテクチャごとのタイプみたいなパターンクラスとみなし、プロセスクラスとしてプロセスのテンプレートを生成し、各プロジェクトではプロセスクラスのテンプレートををカスタマイズして実行するイメージだった。

しかし、要求とパターンの整合性を取る必要がある時に、要求そのものにパターンを抽出する基準が暗黙的に既に埋め込まれている。
実際、要求に沿ってシステムとして実現できるアーキテクチャはこれだ、と選定するときに、要求を制約事項とみなすアーキテクチャを過去のベストプラクティスを元に選定しているからだ。
つまり、アーキテクチャ設計としてアーキテクチャを選定するときに何らかの選定基準は暗黙的に埋め込まれている。

その暗黙的な基準こそが、パターンでありイディオムであるわけだ。
アーキテクトは、自身の脳みその中に、多数のパターンカタログ、イディオムカタログを暗黙的に保持していて、それを基準に当てはめている。

そこで、「田中さん案を元に再構成した案」で書き直してみると、プロセスパターンクラスをインスタンス化したものがプロセス記述書になる。
これはアナリシスパターンの抽象・具象パターンに相当するだろう。
そのプロセス記述書は、アーキテクチャ設計プロセスのテンプレートであり、どのプロジェクトでも使えるテンプレートになっている。
このプロセス、手順に従えば、アーキテクチャ設計ができますよ、という手順書になっている。
そのプロセス記述書は単なる手順書ではなく、過去のベストプラクティスが盛り込まれて、ソフトウェア開発が成功するような知見が盛り込まれているわけだ。

このプロセス記述書を各プロジェクトに当てはめて、必要であればカスタマイズして実装して、プロジェクトを実行していくことになる。

【4】そんなことを考えると、まだうまく表現できていないかもしれないが、ソフトウェア設計、ソフトウェア開発そのものも一つのソフトウェアのような気がしてくる。

そんな論文「Software Processes are Software, Too」は1980年代に既に提唱されているよ、と先輩から教えてもらった。

Software Processes are Software, Too

主張は「ソフトウェア開発プロセスは、プロセス記述書というクラスをインスタンス化したものである」と理解したがもう一つ重要な観点があると思う。
それは「ソフトウェアを再利用して効率化するやり方と同様に、ソフトウェア開発プロセスも再利用できるはずだし、それがパターンやイディオムになるはず」だという考え方だと思う。
つまり、「ソフトウェアシステムアーキテクチャ構築の原理 第2版」本で「適切なアーキテクチャスタイルを識別する」ときにパターンを参照することと同義だと理解している。

この辺りはもう少し整理してみたい。

| | コメント (0)

より以前の記事一覧