Melting Pot of Thoughts

SaaSスタートアップのCTOです。思考の整理のため考えたことをメモとしてアウトプットしていくブログです。

ドメインエキスパートとどれだけ議論しても、完璧なドメイン理解にはたどり着けない

自分がこれまでSaaSを開発してきた経験の中で、「ドメイン領域に対する自身のモデリング精度が低かったゆえに、機能リリースからある程度時間が経ったのちに仕様をガッツリ見直した」ことがよくありました。

特に投資の計算指標などドメイン知識が複雑なものも扱っており、そういったものについて専門用語の定義やコーナーケースにおける計算ロジックを見直した経験がよくあります。

 

あるときチームメイトと雑談で「自分の過去の仕様検討不足で、今になり結構修正が必要になってしまって大変だった」と話したところ、「むしろ単に、仕様の考慮不足に気づけるだけドメイン理解が深まってきたということではないか」と言われ、なるほどと思いました。

 

その会話の中で『ドメインエキスパートとどれだけ議論したとしても、完璧なドメイン理解にたどり着けない』という気づきを得たので簡単に書いてみます。

 

++++++++++++++++++++++

 

開発者によく知られているノウハウとして「機能の開発前に、ドメインエキスパートと開発者が議論をすることで適切なモデリングができる」というものがあります。

有名なドメイン駆動設計(DDD)においても、ドメインエキスパートと開発者が同じ用語(ユビキタス言語)を使い議論をする方法が推奨されています。

 

このノウハウの有用性には100%賛成するのですが、「どれだけ手を尽くしてもはじめから完璧なドメイン理解にはたどり着けない」というのが個人的考えです。

 

なぜならドメインエキスパートは全てを見通す神ではないからです。法的なルールなどについては当然詳しいですが、実態として全てのユーザが現場で現在どのように業務を行っているかを完璧に把握している人はいません。

また仮に全知全能の神だと仮定し、全てのユーザの現在の業務フローパターンを全て把握していたとしても、それはあくまで現在の業務フローについての知識であり、プロダクトを通じて実現したい理想の業務フローではありません。

モデリングは現在の業務フローに対してではなく、プロダクトを通じて提供する理想の業務フローに対して行うものなので、理想の業務フローがわからない限りは適切なドメインモデリングはできません。

 

++++++++++++++++++++++

 

ここまで『ドメインエキスパートとどれだけ議論したとしても、完璧なドメイン理解にたどり着くことはない』理由について書きましたが、前に書いたとおりドメインエキスパートと議論することを否定しているわけではありません。

むしろかなり良いことであり積極的にやるべきだと思っています。

 

ただし最初のモデリング作業に労力をかけすぎるのではなく、『当初のドメイン理解は時間の経過とともに間違ったものになる』という前提で考えておき、間違っていることがわかったタイミングで早めにモデルの修正を行うことのほうが大事だと思います。

(特にSaaSのように様々なユーザのニーズを汎用化して捉えないといけないプロダクトを開発する場合や、スタートアップ企業のように作るべきものが頻発に変わる環境においては、強くそう感じます。)

 

世の中の事例を見ていると、事前のモデリングに心血を注ぎ図や文書などの資料を作ることに傾倒しているケースもありますが、事前にどれだけ時間をかけても間違いは必ずあるということを理解した上でどの程度労力をかけるか考えることが大事だと感じます。