プロジェクトや開発チームは設計の不十分なシステムで苦労している。システムを維持する目的のみのパッチ開発に忙殺される技術者も多い。おもな原因は,ソフトウェア開発の文化が破壊されていることだ – Vaughn Vernon氏は,今年初めにDomain-Driven Design Europeで行なったプレゼンテーションの中でこのように主張して,自身の遭遇した問題の紹介に加えて,それらの問題に対するソリューションについても解説した。
氏の経験した問題の中でもっとも油断ならないのが,IT部門をコストセンタと考えている企業において,会社側がソフトウェア開発をネガティブな,単に資金を浪費するだけの存在と見ていることだ。このような企業はソフトウェアをゲームチェンジャとは考えず,単に容認せざるを得ない存在とみなしている。
ビジネス側の人々がコラボレーションツールに何日間も向かって仕様を書くのは,まったくの時間の無駄だ,というのが氏の意見だ。開発者のほとんどは,このような仕様を使わない。必要な情報が含まれていないため,不十分なコラボレーションに終わるからだ。ビジネス側の人々と開発者は,もっと会話を持つべきだ。そうすれば,ビジネスニーズに裏打ちされた確固たる設計を,はるかに短時間で実現することが可能になる。
氏がタスクボードシャッフルと呼ぶテクニックでは,“ToDo”欄にある付箋紙を“In Progress”欄に移動することで,すべての設計作業が行なわれる。しかしながらこの方法では,付箋紙が移動するたびに設計が乱雑になるため,考慮すべき設計要求の大部分を欠いたシステムにつながる可能性がある。設計をしないことがコーディングや開発の経費削減策だと考える人の数は多い。しかしながらVernon氏は,これは悪い設計につながる誤った経済意識だ,と主張する。
Vernon氏が説明したこれらの問題を克服するには,チームの開発成熟度を高めなくてはならない,と氏は強く信じている。企業のソフトウェア開発に対する見方を改めて,ビジネスに連なる存在として認識させるためには,ビジネス促進のソリューション開発を通じて企業が重要な目標を達成するように,ビジネスを支援できなくてはならない。これを実施する方法が,ビジネスとのコラボレーションの開始だ。チームを編成して,従事する作業用のコンテキストとモデルを対象とするユビキタスな言語を開発するのだ。
ドメインのモデリングに役立つツールのひとつがイベントストーミングだ。氏はこれについて,コンテキスト境界(bounded context)を見つけ出す上でもっとも有用かつ重要なツールである,と評価している。数時間も使用すれば,ユビキタス言語を形成し,ドメインのコンテキスト境界を理解することができる。イベントストーミングセッションから生み出された成果は,見積のプロセスから生み出された,より実勢に近い見積単位としても利用可能だ。
マイクロサービスもまた,ドメイン駆動設計(DDD)やコンテキスト境界と同じように,Vernon氏の取り上げている最近のホットな話題のひとつだ。ただし,ひとつのコンポーネントとしてマイクロサービスをデプロイするのではなく,コンテキスト境界のレベルで複数のマイクロサービスを開発することで,より強力なアプローチになると氏は考えている。
氏はまた,多くの開発者が使用を開始すべき必須ツールとして,アクタモデルについても説明している。サーバのコア数やメモリ容量が増加する中で,アクタモデルは,これら新たなリソースを活用する優れた方法だ。氏が推奨するのは,ひとつのコンテキスト境界でマイクロサービスを開発するためにアクタモデルを用いる方法だ。アクタモデルは多くの場合,システムを大幅に簡素化することが可能になる。このような設計を氏は,非常に多くの機能を詰め込んだがために,上級開発者でも完全に理解するためには数ヶ月を要するような複雑なスタックの様相を見せる今日のエンタープライズシステムに対比する意味で,簡易化スタック(Simplicity Stack)と呼んでいる。
多くのチームが設計の行き届かないシステムに苦労を重ねる中,開発者の技術的成熟とDDDの採用がこの状況を改善する可能性がある,と述べて,Vernon氏は自身のプレゼンテーションを結論付けている。
次回のDomain-Driven Design Europeカンファレンスは,2017年1月末に開催される予定だ。