SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2025 セッションレポート

「良い設計」は誰のため? 開発者体験と原理・原則から見直すアーキテクチャデザイン

【13-B-1】Architecture to Design:より良い設計を目指して

 わかりやすく、変化に強いソフトウェアシステムを構築するためには、堅牢かつ柔軟なアーキテクチャ設計が不可欠だ。しかし、理想的なアーキテクチャを実現することは決して容易ではない。設計方針、技術選定、チーム体制といった複数の要素が複雑に絡み合い、日々の開発現場では多くの判断が求められる。本セッションでは、株式会社電通総研の米久保 剛氏が登壇。アーキテクチャを単なる構造ではなく、「よりよいアプリケーション設計を導くためのコンセプト」と捉え、その思考法や実践のヒントを提示した。

なぜ設計をするのか――良い設計の目的と価値

 株式会社電通総研に所属する米久保氏は、同社でITアーキテクトとして自社プロダクトの設計・開発を牽引している。2024年には『アーキテクトの教科書』を上梓し、アーキテクチャ設計の現場知を体系的に整理した。このセッションでは、その書籍に通じる核心的なコンセプトをもとに、「良い設計とは何か」「それをどう実現するか」について、三つの問いを軸に解説が展開された。

株式会社電通総研 米久保 剛氏
株式会社電通総研 米久保 剛氏

 冒頭で米久保氏は、「設計の本質は“分ける”こと」と明言する。単一巨大なコードベースは認知負荷が高く、全体を把握しにくい。これに対し、適切に分割された設計は見通しがよく、変更や拡張に強い。米久保氏はこの性質を「理解容易性」「テスト容易性」「拡張性」に整理し、いずれもソフトウェアの品質特性の一部であると説明した。

 品質特性とは、ISO/IEC 25010で定義されるソフトウェアの評価基準である。機能適合性や保守性、信頼性、性能効率性など8つの主要特性が定義されており、それぞれに対応する副特性も存在する。なかでも設計が担うのは、「非機能要求」への対応だ。これは利用者からは見えにくいが、将来的な運用性や拡張性に直結する重要な領域である。

 続いて米久保氏は、設計レイヤーにおける抽象度の扱いにも言及。アーキテクチャ、モジュール、クラスといった階層構造は、抽象から具体への移行を段階的に進めるためにある。各層で「何を抽象化し、どこまで詳細化するか」を意識することで、設計の迷いを減らせるという。

設計レイヤーでは、抽象レベルを意識することが重要だ
設計レイヤーでは、抽象レベルを意識することが重要だ

 さらに米久保氏は、ソフトウェア設計の最上位にあるべきは、技術的正しさではなく「合目的性」だと強調する。すなわち、システムがビジネスの成功や経営ビジョンに貢献しているかどうかが、「良い設計」を評価する基準になるということだ。全ての品質特性を満たす必要はなく、ビジネス文脈に即した優先順位付けが重要になる。

 その出発点として米久保氏が挙げたのが「アーキテクチャドライバ」だ。業務ドメイン、規制、戦略、対象ユーザーなど、設計に影響を与える文脈要素を抽出し、それに基づいて判断していくべきだとする考え方である。

「良い設計」はアーキテクチャドライバに基づき、最適な設計を選別して進める
「良い設計」はアーキテクチャドライバに基づき、最適な設計を選別して進める

 加えて米久保氏は、「良い設計とは目的を達成するだけでなく、人間の認知や行動にも配慮されたものであるべきだ」とも指摘する。設計にはHCD(Human-Centered Design)、つまり人間中心設計の視点が必要だとし、「それはUI/UXだけでなく、ソースコードにも適用できる」と説く。なぜなら、コードの利用者は開発者自身であるからだ。

 「開発者はソースコードという“道具”を使って、良いプロダクトをユーザーに提供したいという課題を持っている。そう考えると、開発者にとっての良い体験、つまり開発者体験を高めるような優れたコード設計こそ、良い設計の条件と言える」(米久保氏)

 では、良い開発者体験とは何か。米久保氏によれば、「コードを安全かつ素早く変更できること」に尽きる。実際、開発者はコードを書く時間よりも、読む・理解する時間の方が長い。したがって、変更のしやすさ=保守性の高さが、開発者体験に直結する。

 ここで重要になるのが「認知負荷」の概念である。人間の作業記憶には限界があり、複雑な構造や曖昧な責務、過剰な依存関係は思考を妨げる。認知負荷理論では、コントロール可能な負荷として「課題外在性負荷」を挙げており、これを減らす設計こそが求められるという。

 さらに米久保氏は「メンタルモデル」という心理学的概念についても紹介する。これはユーザーが頭の中で持つ「こう動くはず」という理解の枠組みであり、これが設計者の意図と一致していれば、挙動は自然なものと認識される。UI設計に限らず、コード設計にも通じる考え方である。

 再び設計論へと戻り、米久保氏はドメイン駆動設計(DDD)における「ドメインモデル」の意義を強調する。ビジネス領域における概念やルールをコードに反映するためには、業務知識を持つドメインエキスパートとの対話が不可欠となる。

 この対話を通じて得られるのが「分析モデル(概念モデル)」であり、これは現実の構造を記述した問題空間のモデルだ。これを実装に繋げるには、解決空間のモデルである「ドメインモデル」への橋渡しが必要になる。

 米久保氏は、開発者こそがこの「橋渡し役」を担っていると強調する。なぜなら、問題空間(分析モデル)と解決空間(ドメインモデル)の両方を扱えるのは、開発者しかいないからだ。そして両者をシームレスに往復するためには、会話で使われた語彙とコードに登場する語彙を一致させる工夫――「共通の語彙の定義」が重要だ。クラス名やメソッド名がドメインの用語と一致していれば、認知負荷は大きく下がる。構造的にも概念モデルとの対応が取れていれば、設計意図のズレも減らせるというわけだ。

共通の語彙によって解決空間はデザインしやすくなるという
共通の語彙によって解決空間はデザインしやすくなるという

 「分析モデルやドメインモデルによって、開発者の頭の中に良質なメンタルモデルが構築される。これが開発者体験の向上に直結する」。米久保氏は、ドメイン駆動設計を単なる設計技法ではなく、複雑な現実を整理し、構造的に理解するための「思考ツール」と位置づけ、その本質的価値はそこにあると結論づける。

次のページ
“わかりやすく、変えやすく”を実現するには――良い設計を支える原理と原則

この記事は参考になりましたか?

Developers Summit 2025 セッションレポート連載記事一覧

もっと読む

この記事の著者

水無瀬 あずさ(ミナセ アズサ)

 現役エンジニア兼フリーランスライター。PHPで社内開発を行う傍ら、オウンドメディアコンテンツを執筆しています。得意ジャンルはIT・転職・教育。個人ゲーム開発に興味があり、最近になってUnity(C#)の勉強を始めました。おでんのコンニャクが主役のゲームを作るのが目標です。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

川又 眞(カワマタ シン)

インタビュー、ポートレート、商品撮影写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/21430 2025/10/24 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング