なぜ設計をするのか――良い設計の目的と価値
株式会社電通総研に所属する米久保氏は、同社でITアーキテクトとして自社プロダクトの設計・開発を牽引している。2024年には『アーキテクトの教科書』を上梓し、アーキテクチャ設計の現場知を体系的に整理した。このセッションでは、その書籍に通じる核心的なコンセプトをもとに、「良い設計とは何か」「それをどう実現するか」について、三つの問いを軸に解説が展開された。
冒頭で米久保氏は、「設計の本質は“分ける”こと」と明言する。単一巨大なコードベースは認知負荷が高く、全体を把握しにくい。これに対し、適切に分割された設計は見通しがよく、変更や拡張に強い。米久保氏はこの性質を「理解容易性」「テスト容易性」「拡張性」に整理し、いずれもソフトウェアの品質特性の一部であると説明した。
品質特性とは、ISO/IEC 25010で定義されるソフトウェアの評価基準である。機能適合性や保守性、信頼性、性能効率性など8つの主要特性が定義されており、それぞれに対応する副特性も存在する。なかでも設計が担うのは、「非機能要求」への対応だ。これは利用者からは見えにくいが、将来的な運用性や拡張性に直結する重要な領域である。
続いて米久保氏は、設計レイヤーにおける抽象度の扱いにも言及。アーキテクチャ、モジュール、クラスといった階層構造は、抽象から具体への移行を段階的に進めるためにある。各層で「何を抽象化し、どこまで詳細化するか」を意識することで、設計の迷いを減らせるという。
さらに米久保氏は、ソフトウェア設計の最上位にあるべきは、技術的正しさではなく「合目的性」だと強調する。すなわち、システムがビジネスの成功や経営ビジョンに貢献しているかどうかが、「良い設計」を評価する基準になるということだ。全ての品質特性を満たす必要はなく、ビジネス文脈に即した優先順位付けが重要になる。
その出発点として米久保氏が挙げたのが「アーキテクチャドライバ」だ。業務ドメイン、規制、戦略、対象ユーザーなど、設計に影響を与える文脈要素を抽出し、それに基づいて判断していくべきだとする考え方である。
加えて米久保氏は、「良い設計とは目的を達成するだけでなく、人間の認知や行動にも配慮されたものであるべきだ」とも指摘する。設計にはHCD(Human-Centered Design)、つまり人間中心設計の視点が必要だとし、「それはUI/UXだけでなく、ソースコードにも適用できる」と説く。なぜなら、コードの利用者は開発者自身であるからだ。
「開発者はソースコードという“道具”を使って、良いプロダクトをユーザーに提供したいという課題を持っている。そう考えると、開発者にとっての良い体験、つまり開発者体験を高めるような優れたコード設計こそ、良い設計の条件と言える」(米久保氏)
では、良い開発者体験とは何か。米久保氏によれば、「コードを安全かつ素早く変更できること」に尽きる。実際、開発者はコードを書く時間よりも、読む・理解する時間の方が長い。したがって、変更のしやすさ=保守性の高さが、開発者体験に直結する。
ここで重要になるのが「認知負荷」の概念である。人間の作業記憶には限界があり、複雑な構造や曖昧な責務、過剰な依存関係は思考を妨げる。認知負荷理論では、コントロール可能な負荷として「課題外在性負荷」を挙げており、これを減らす設計こそが求められるという。
さらに米久保氏は「メンタルモデル」という心理学的概念についても紹介する。これはユーザーが頭の中で持つ「こう動くはず」という理解の枠組みであり、これが設計者の意図と一致していれば、挙動は自然なものと認識される。UI設計に限らず、コード設計にも通じる考え方である。
再び設計論へと戻り、米久保氏はドメイン駆動設計(DDD)における「ドメインモデル」の意義を強調する。ビジネス領域における概念やルールをコードに反映するためには、業務知識を持つドメインエキスパートとの対話が不可欠となる。
この対話を通じて得られるのが「分析モデル(概念モデル)」であり、これは現実の構造を記述した問題空間のモデルだ。これを実装に繋げるには、解決空間のモデルである「ドメインモデル」への橋渡しが必要になる。
米久保氏は、開発者こそがこの「橋渡し役」を担っていると強調する。なぜなら、問題空間(分析モデル)と解決空間(ドメインモデル)の両方を扱えるのは、開発者しかいないからだ。そして両者をシームレスに往復するためには、会話で使われた語彙とコードに登場する語彙を一致させる工夫――「共通の語彙の定義」が重要だ。クラス名やメソッド名がドメインの用語と一致していれば、認知負荷は大きく下がる。構造的にも概念モデルとの対応が取れていれば、設計意図のズレも減らせるというわけだ。
「分析モデルやドメインモデルによって、開発者の頭の中に良質なメンタルモデルが構築される。これが開発者体験の向上に直結する」。米久保氏は、ドメイン駆動設計を単なる設計技法ではなく、複雑な現実を整理し、構造的に理解するための「思考ツール」と位置づけ、その本質的価値はそこにあると結論づける。
