みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。
さて、先日の定例会「ノンプログラマーのためのドメイン駆動設計超入門」のレポートをシリーズでお送りしております。
前回の記事はこちら。
さて、「エリック・エヴァンスのドメイン駆動設計」読み進める中で、ノンプログラマーがドメイン駆動設計を学ぶべき理由をもうひとつ発見しました。
今回はその点についてお伝えします。
ということで、「ドメイン駆動設計がすべてのノンプログラマーにもたらすもうひとつのメリット」をお送りします。
ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。
では、行ってみましょう!
前回までのおさらい
ノンプログラマーにとって、オブジェクト指向は学習コストが高い一方、そのメリットや活用場所がわかりづらいという問題がありました。
また、ひとりですべての開発工程が完結することも多く、「設計」とは何なのか、なぜすべきなのかがわかりづらい傾向にあります。
そんな中、「ドメイン駆動設計」が、それらのモヤモヤの解決に大きな役割を果たしてくれるのではないか…という大きな期待感を生み出してくれたのが、書籍「現場で役立つシステム設計の原則」です。
そして、より深く学ぶために、「エリック・エヴァンスのドメイン駆動設計」を手に取りました。
この書籍を通して、ドメイン駆動設計とその前提、ドメインモデルについて、ドメイン駆動設計が目指すことについて学べます。
ドメイン駆動設計とは、ドメインの本質を見極め、その複雑さを抑えつつ実装に落とし込む、それをアジャイル的に繰り返すことで、洗練させていく…そのような活動を行うための方針のことでした。
ドメイン駆動設計はビジネスにも応用できる
ここで、私は「学習する組織」という書籍を思い出しました。
この書籍は、組織を「学習する組織」にすべき理由について、以下のように伝えています。
- ビジネスなど人の営みはすべてシステムである
- システムには2種類の複雑性があり、1つはその変数の多さ、1つはそれがダイナミックであるということ
- 自らもシステムの一部であり、その意思決定を設計し直すことが、システムに影響を与える。だから学習が必要である
「ビジネス」と「ソフトウェア」ということで、その対象が異なるのは確かですが、「複雑性に立ち向かう」という点で「エリック・エヴァンスのドメイン駆動設計」と通じる部分が少なくないことに気づきます。
エリック・エヴァンスのドメイン駆動設計では、
- ドメインが複雑であるから、その課題を解決するソフトウェアも複雑である
- 要素感のダイナミックさを抑制するために、高凝集・疎結合を徹底的に追求している
- ドメインの本質を追求しつづけるために、変更容易性を高める
そこで、こんなふうに考えました。
ドメイン駆動設計による複雑性に立ち向かうアプローチは、現実のビジネスでその複雑性に立ち向かうアプローチとして応用できるのではないか、ということです。
組織とソフトウェア
「DXの思考法」という書籍では、Netflixがそのソフトウェアと組織をいかに「シンプルに設計」し、GAFAに並ぶほどの地位を築いたかについて紹介されています。
コンウェイの法則
書籍では「コンウェイの法則」と呼ばれるとても興味深い、以下の法則が紹介されていました。
組織がデザインするシステムは、その組織のコミュニケーションの構造とそっくりになる
たとえば、以下のような組織は、複雑で、見通しが悪く、変更が効きづらいということになります。
- 複雑に絡み合って必要な承認が多かったり、根回しが必要だったりする
- 誰が何をしていて情報がオープンでない
- 昔からのやり方にこだわリが強く、新しいやり方への移行が進まない
Netflixの組織
一方で、Netflixの組織は以下のとおり徹底的に組織を疎結合にして複雑性を排除、見通しを良くし、変更容易性を高めています。
- ピラミッド型組織を排除し、意思決定にかかわる承認は一切不要。社員が契約サインしてOK
- 「この情報をもとにあなたや友人が取引をしたら刑務所行きです」という情報もオープンにする
- 実名の360度評価をはじめ、フィードバックを重視し改善につなげる
たしかに、ソフトウェアの複雑さに対処するための原則が、ビジネスの原則としても応用が効いているのです。
ノンプログラマーがドメイン駆動設計から得るもの
ドメイン駆動設計は、ノンプログラマーに対して設計とはどうすべきかという問いに対する答えを与え、オブジェクト指向の活用場所を提供します。
それだけではなく、ソフトウェアだけでなくビジネスの複雑性に立ち向かうための力を与えてくれるものでした。
今後、デジタル化の波がいっそう押し寄せ、ビジネスの複雑性が増していく中、プログラミングという即戦力になるスキルを学びながら、またそれを通してその複雑性に立ち向かうための訓練が得られるというのは、とても価値のあることですね。
まとめ
以上、ドメイン駆動設計がすべてのノンプログラマーにもたらすもうひとつのメリットについてお伝えしました。
ノンプログラマー×デジタルのゴール地点は、このあたりにありそうと思うので、その道のりをより具体化して、皆さんのサポートができればと思います。
ぜひ、今後の活動を楽しみにしていてください。