モデリングは誰の仕事か?

こんにちは、CTOの山岡(@hiroy.kotori.styleまたは@hiro_y)です。

2024年2月11日、PHPカンファレンス関西2024が開催されました。なんと430人以上の方が参加されたとのことで、大盛況。私も東京から日帰りで参加しましたが、とても楽しい、有意義なイベントでした。

当社からはエンジニアの荻島さんが登壇しました。当日の様子は別記事になっているので、そちらをご覧ください。

tech.innovator.jp.net

さて、私が当日参加したセッションに、菱田裕美さん(@77web)の「モデルとは何か」があります。Webシステム開発で使われるところの「モデル1」ではなく、「模型」(「プラモデル」とかの)を示す言葉としての「モデル」に着目して、モデルにすると何がうれしいのか、Webシステム開発におけるモデルとは何なのかについてわかりやすく語られていました。

システムは現実世界の活動に成り代わるものです。例えば、音楽のライブの抽選申し込みシステムであれば、元々の現実世界に紙の申込用紙があって、手書きで記入、その後何かしらの手段で抽選が行われて、最終的に当選/落選を決定してその結果を連絡していたはず。そうした一連のプロセスを分析、言語化・図解して「モデリング」した上で作られるのがシステムではないでしょうか。

モデリングとは、何かをかたどって(真似して)作ること。現実世界の活動のプロセスをあきらかにし、言語化・図解していく「業務モデリング」。そしてそれを元に、「データモデル」「機能モデル」「オブジェクトモデル」「構成モデル」などを考えていくのが設計の仕事です。全然エンジニアだけの仕事ではありませんね。プログラミングの文脈で語られる「モデル」「モデル設計」はシステム全体のモデリングの一端、あるいは結果でしかありません。

モデリングはエンジニアだけの仕事ではないので、開発していて困ったり悩んだりしたらエンジニア以外の職種の人と一緒に相談しながら進めて全然大丈夫です(考えを説明することは必要ですが、うまくできればよりよいコラボレーションが生まれるはず)。システムは現実世界の投影でありながら、現実世界を超えるためのものでもあります(利便性や低コストなど)。よりよいシステムを作るために、より上手なモデリングができるように皆でやっていけたらよいと思うのです。


  1. ソフトウェアアーキテクチャーの「MVC(Model-View-Controller)」における「Model」は決してO/Rマッパー等のデータベースアクセスのためだけの機構ではなく、処理(データと手続き(いわゆるビジネスロジック))全般を表現する要素です。モデルこそがシステムの根幹であり、とても大事。