🧱

アーキテクトが請け負うのは、誰も気づかない未来

に公開

この記事が語ること

本記事では、アーキテクトとはどのような職種なのかを改めて整理する。
定義や他職種との比較から、曖昧に見えがちなアーキテクト像を明確にしていく。

「アーキテクト」のイメージは?

アーキテクトと聞いて、何を思い浮かべるだろう?

上流工程をする人?
プロダクトの管理者?
設計原則を適用する人?
テックリードの配下にいる人?

おそらく、明確に答えられる人はそう多くないのではないだろうか。
正直、筆者もいまだに「これだ!」と言い切れるわけではない。
アーキテクトは、数あるエンジニア職種の中でも定義が難しい位置に存在している。
だからこそ、この記事ではアーキテクトという役割を改めて整理し、その輪郭をはっきりさせていきたい。

定義を探そう

まずは、公式的な定義から探してみよう。
以下はIPAにより示されている定義[1][2]を抜粋・要約したものだ。

■アーキテクトの役割

  • 情報システム戦略を具体化するために、全体最適の観点からシステム構造を設計する
  • システム化計画を具体化するために、開発に必要な要件を分析・整理・取りまとめる
  • 要件を実現し、情報セキュリティを確保できる最適なシステム方式を設計する
  • 設計された方式に基づき、品質・セキュリティを確保できるソフトウェアの設計・開発・テスト・運用・保守を検討する
  • アプリケーション・システム連携・インフラの三領域で、全体最適なアーキテクチャを設計し、その実現性と品質を保証する
  • これらの活動を主導し、下位者を指導する

なるほど、この定義によると、設計・要件分析・セキュリティ・品質など、扱う範囲が広範であることは分かるが、やはり抽象度が高い。

アーキテクトという職種は、単にコーディングをするわけでもなく、管理職のように人をマネジメントする立ち回りを期待されているわけでもないようだ。

アーキテクトに必要な資質

別の角度から掘り下げてみよう。

ここでは、『アーキテクトの教科書』[3]からヒントを得たいと思う。
この本の著者は、アーキテクトが備えるべき能力や考え方について記している。筆者の解釈を織り交ぜながらまとめてみよう。

■能力像

  • 設計力・コーディング力
    実装の現実を理解し、概念や方針を実際に形に落とし込める基礎技術。
  • 抽象化能力
    抽象と具象を分離し、複雑な課題の本質的な形を導き出す思考スキル。
  • ビジネス理解
    技術ではなく価値を軸に最適な設計を判断するための前提知識。
  • 好奇心(アンテナを張る)
    新しい技術やパターンを吸収し、様々な事柄の選択の幅を広げる姿勢。
  • 完璧主義より合理主義
    制約下でバランスを取りながら、合理的な“現実解”を選ぶ判断基準。

■人材像

  • 複数領域で専門性を持ちながら、広く横断できること
  • ITの基礎技術を広く押さえていること
  • アーキテクチャ設計に習熟していること
  • 業務知識とソフトスキルを備えていること

なるほど、『アーキテクトの教科書』からは、制約、ドメイン、抽象概念、トレードオフ、設計判断といった言葉がキーワードとしてピックアップできそうだ。

ここまで噛み砕いてみると、少し具体的なアーキテクト像が浮かび上がってくるのではないだろうか。

他職種との違いは?

さらにもう一押し、掘り下げてみよう。

他職種との違いを探すことでアーキテクトを浮き彫りにしてみよう。
ここでは、思考の壁打ち相手としてチャットAIを用いながら、他職種との違いを整理してみた。
以下の表はあくまで筆者の考えであることに留意いただきたい。

ロール 担当するコア領域 アーキテクトとの違い
エンジニア 実装を中心に、機能を形にする 部品は作るが、システム全体の整合性の最終判断は担わない
テックリード チームの技術方針を整える チーム内は見るが、複数チームや長期的な技術判断は担わない
PdM 何を求められているのか見定め、何を作るか決める 価値判断は行うが、技術構造の最終判断は担わない
EM チーム運営・生産性 組織運営は行うが、技術全体の設計判断は担わない
コンサル 課題を整理し助言する 助言はするが、設計判断や結果責任は担わない
アーキテクト システム全体が破綻せず動くように、技術的な全体像を設計する 複数チーム・長期スパンをまたぐ技術的な整合性を設計し、その最終判断と結果責任を担う立場

なるほど、この表によると、システム全体の設計判断、長期にわたって影響する構造への責任、といったものがアーキテクトには求められるようだ。

局所的な最適解の寄せ集めでは、かならずどこかで衝突する。
パフォーマンス、保守性、開発速度、コストといった要求は、同時には最大化できないからだ。
こうした衝突には、どこかで折り合いをつけなければならない。
それを引き受けるのがアーキテクトなのだ。

つまり、アーキテクトは全体の設計判断と、それに伴う長期の責任を引き受ける役割であり、この点で他職種と差別化される。

筆者なりの答え

ここまで、アーキテクトの定義を眺め、求められる資質を掘り下げ、他職種との違いを整理してきた。
そして、「アーキテクトとは何か?」の問いへの答えが見えてきた。

まず、シャープにまとめるとこうだ。

アーキテクトとは、
広い視野と技術を持ち、トレードオフを前提に、長期にわたってプロダクトを成立させるためのシステム設計と判断を担う職種である。

あるいは、言い方を少し変えると、こうも言える。

アーキテクトとは、

  • ドメイン境界を整え、システムが破綻しない仕組みを作る責任者
  • 幅広い前提や制約のもとで、健全な優先順位を見定める決定者
  • 未来の正解を、今、見抜こうとする人

ここまでが筆者なりの答えだ。

もちろん、この答えも時間や経験とともに変わっていくかもしれない。
アーキテクトという仕事は、常に問い続け、考え続けることに価値があるのだから。

この記事が、「アーキテクトとは何か?」という問いを、あなた自身の言葉で考えるきっかけになれば幸いだ。

脚注
  1. https://www.ipa.go.jp/shiken/kubun/sa.html ↩︎

  2. https://www.ipa.go.jp/jinzai/skill-standard/plus-it-ui/itss/download_v3_2011.html ↩︎

  3. https://www.shoeisha.co.jp/book/detail/9784798184777 ↩︎

Discussion