/note/tech

アーキテクチャを設計するといふこと 2025年版

要約:

■ アーキテクチャ設計の基本と意義

  • アーキテクトの定義: ITスキル標準や情報処理技術者試験(システムアーキテクト)によると、ビジネス・IT上の課題を分析し、情報システム化要件として再構成し、システムの構造設計や要件定義を主導する役割を担う。
  • アーキテクチャの語源: 古代ギリシア語の「architectonice」に由来し、「始原、原理、首位」「職人」「制作」の3要素を含み、特に原理や抽象という概念が含まれている。
  • アーキテクチャの定義(ソフトウェア): ISO/IEF/IEEE 42010:2011では、「環境におけるシステムの基本的な概念や特性が、その要素や関係、および設計と進化の原則に具体化されたもの」と定義される。
  • アーキテクチャ不在のリスク: 全体的視点や長期的視点、秩序、戦略、方針が欠如し、部分最適化、サイロ化、巨大な泥団子(レガシーシステム)化を招く。
  • アーキテクチャ設計の目的: 機能要求に加え、品質特性(非機能要求)という達成すべき目標がある。これらの特性達成の難易度やトレードオフを克服し、ソフトウェア制作の原理や方針を定めることが本質である。
  • 品質特性とアーキテクチャ: 顧客やユーザーの文脈、ニーズにより重要視される品質特性(例:理解容易性、修正容易性、テスト容易性、スケーラビリティ、時間効率性)が決まり、それに応じて最適なアーキテクチャ(例:Map/Reduceパターン)が選択される。

■ アーキテクティングと価値・勝ちの設計

  • アーキテクティングの概念: アーキテクチャを設計する一連の行為を指す。システムに上位目的を達成する能力を与えるため、ソフトウェアアーキテクチャを記述し、実現する活動である。
  • アーキテクトの役割の拡張: ソフトウェアアーキテクチャに限定せず、システム(系)全体が上位目的を達成するための能力付与に拡張できる。
  • 「価値」の設計: ビジネスサイドとの共創、顧客視点、仮説検証を通じて「正しいもの」を作り、ソフトウェアエンジニアリングや開発プロセス、組織設計により「正しく」作る活動を指す。
  • 「勝ち」の設計: 勝ち筋を見出し戦略を立てる活動であり、ゴールを明確にし、取るもの/取らないものを決め、資源の配分を行うことを意味する。
  • 戦略的設計の例: DDD(ドメイン駆動設計)では、サブドメインの種類(コア/支援/汎用)に応じて、内製、ローコードツールの活用、SaaSの利用といった実現手段を使い分ける戦略が重要である。
  • 社内政治の重要性: ポジティブな意味での社内政治は、摩擦を軽減し組織全体の成長に繋がる。ステークホルダーマップの作成や、ナラティブアプローチ(対話)を通じて、各々の立場や行動原理を理解することが具体策となる。

■ アーキテクトとしての成長に必要な要素

  • アーキテクトの人材像: アーキテクティングを柱とし、土台となるソフトウェアエンジニアリング、さらに業務知識やソフトスキルといった幅広い要素が必要となる。
  • アーキテクチャの特殊解: アーキテクチャスタイルやパターンといった一般解を、特定の状況に適用・評価することで、目の前の課題に対する特殊解としてのアーキテクチャを導き出す。
  • ソフトスキルの重要性: 技術力と同じくらい重要であり、ビジネスに技術で貢献するためにはソフトスキルが伴う必要がある。
  • リーダーシップと動機づけ: 組織の一人ひとりがリーダーシップを持って自律的に行動するには、内発的動機づけが重要であり、そのためには組織のWHY、共通のゴール、ナラティブが必要である。
  • 思考力の強化: アーキテクトとして鍛えるべき思考方法として、具体と抽象、推論(演繹法、帰納法、アブダクション)、メンタルモデル、仮説思考などが挙げられ、これらを鍛えることはレバレッジが効く。
  • 推論の活用: 帰納法で事例から知識(ルール)を獲得し、演繹法で知識を応用した結果予測を行い、アブダクションで結果を説明できる仮説(例:AIの精度向上策)を立てることで問題解決を行う。