/note/tech

なぜアーキチームは設計や実装のパターンを絞りたいか? 背景にある思考と技術選定のジレンマ

要約:

■ 1. 設計・実装パターンを絞る理由

  • 全体最適と局所最適:
    • レビュイーは目の前のタスクの最速完了を重視
    • レビュワーはプロジェクト全体の長期的な健全性を重視
  • コードベース全体の一貫性維持:
    • 新規メンバーの学習コスト削減
    • 横断的な修正作業時の調査漏れリスク軽減
    • 予測可能性の確保
  • 開発者の設計余地の削減と均質化:
    • 手法選択の迷いを排除しレビュー時の衝突を回避
    • チーム成熟度が低い場合の誤った選択を防止
    • プロジェクト遅延リスクの軽減
  • ライブラリやサービス追加による管理コスト削減:
    • 学習コスト、バージョンアップ、脆弱性対応の追加作業を抑制
    • 引き継ぎやドキュメント作成の手間を最小化

■ 2. 統制のメリットとデメリット

  • メリット:
    • 品質の担保
    • 認知負荷の低減
    • 保守性の向上
  • デメリット:
    • モチベーション低下(特に若手)
    • 開発速度の低下
    • 変化への対応の遅れ
  • 統制と裁量のバランスは状況に応じて変化し、プロジェクトフェーズで方針が変わることもある

■ 3. プロジェクト特性による統制レベルの違い

  • 開発速度最優先の場合:
    • 新規事業のプロダクト開発では自由度を高める
    • セキュリティとコンプライアンスのみチェックし、腕利き開発者のセンスに任せる
  • プロジェクト初期:
    • 不確実性が高い段階では自由度を高める
  • 成熟期:
    • ユーザー増加と安定性重視の段階で統制を強化
    • 保守運用を見据えた細かい処理方式の指摘を実施

■ 4. 開発ガイドラインの課題

  • 後手に回る理由:
    • ガイドラインを書いても読まれない傾向
    • 記載量が多いと読解困難で記憶不可能
    • メンテナンスコストの増大
  • 実効性確保の方針:
    • 現場感が強い内容のみを記載
    • フォーマッターやリンターの整備が必須
    • カスタムルールを適用するツールの開発
  • AIレビュー導入により、ガイドライン記載内容を増やせる可能性がある

■ 5. 統制を強める基準

  • チーム規模による判断:
    • 5人程度: 阿吽の呼吸で運用可能
    • 10-15人超: 統制が必要
    • 15-50人: 専門家による統制
    • 50-150人: 強いトップダウンのルールが不可欠
  • 技術レベルによる判断:
    • 小規模×熟練メンバー: 見守りモード
    • 小規模×ジュニア中心: 指導・規範の整備
    • 大規模×ジュニア中心: 統制を強める
    • 大規模×熟練メンバー: 維持困難(メンバー入れ替わりは必然)
  • 運用時の最も弱い体制を見据えた技術選定が必要

■ 6. アーキテクトの成長と価値創出

  • 枯れた技術採用のジレンマ:
    • 大規模案件ほど枯れた技術を採用しがち
    • リスクを受け入れてモダンな技術にチャレンジする判断も必要
  • 成長の楽しみの見出し方:
    • 仕組み化によるプロジェクトライフサイクル全体の開発継続性確保
    • 開発生産性技術セットの習得(CI/CDパイプライン、Git開発フロー)
  • 実績を詰めれば大規模案件でもモダン技術を採用しやすくなり、ノウハウは小中規模案件にも還流する

■ 7. コミュニケーションと判断基準の明確化

  • 判断基準と理由の伝達:
    • 指摘とWhy(理由)をセットで伝える
    • ADRや開発ガイドラインで設計決定を記録
    • 後出しの場合は謝罪し、ルールが必要になった背景を説明
  • 納得感と一貫性が信頼関係構築に不可欠

■ 8. 視座の違いによる技術選定

  • プロジェクト視点:
    • 所属プロジェクトの円滑な推進に注力
  • 複数プロジェクト・部門視点:
    • ノウハウ共有とメンバー流動性確保のため非差別化領域の標準化
  • 全社視点:
    • セキュリティ、コンプライアンス、人材育成コストの最適化
    • 技術広報・採用広報との連動
  • Webフレームワーク、DBアクセスライブラリ、ログライブラリなど利用頻度が高いライブラリは全社・部門レベルで統一することが望ましい
  • アーキテクチャに個性は不要で妥当性が重要

■ 9. まとめ

  • アーキテクトは短期的な開発速度と長期的な引き継ぎコストのジレンマでバランスを取る
  • スイートスポットはチーム規模と技術力に依存し常に変化する
  • 新技術導入時は全体を見通して既存修正や開発規約修正まで行うべきかを検討
  • 現場の現実と全体最適の視点の両立が建設的な議論の前提