LESSON 30分

ストーリー

高橋アーキテクト
良いアーキテクトは、目の前のシステムだけでなく、組織全体の技術の方向性を示す
高橋アーキテクト
技術選定は場当たり的にやると、数年後にカオスになる。統一的な技術戦略があれば、チームは迷わず、ビジネスに集中できる

技術戦略とは

// 技術戦略の構成要素
interface TechStrategy {
  // ビジョン: 3-5年後にどうなっていたいか
  vision: string;

  // 原則: 技術判断の基準となるルール
  principles: TechPrinciple[];

  // 技術レーダー: 採用・評価中・保留・廃止の技術一覧
  techRadar: TechRadar;

  // ロードマップ: いつ何をどの順序で実行するか
  roadmap: TechRoadmapItem[];

  // ガバナンス: 戦略の遵守と評価の仕組み
  governance: GovernanceModel;
}

interface TechPrinciple {
  name: string;
  description: string;
  rationale: string;
  implications: string[];
}

const EXAMPLE_PRINCIPLES: TechPrinciple[] = [
  {
    name: "Buy over Build",
    description: "コア競争力でない部分はSaaSやOSSを活用する",
    rationale: "限られたエンジニアリングリソースをコアビジネスに集中",
    implications: [
      "認証はAuth0を使用(自前実装しない)",
      "監視はDatadogを使用",
      "独自ORMを作らない",
    ],
  },
  {
    name: "API First",
    description: "全てのサービスはAPIを通じてのみ通信する",
    rationale: "疎結合な設計により、独立したデプロイと進化を可能にする",
    implications: [
      "DB共有を禁止",
      "OpenAPI仕様を先に定義",
      "後方互換性を維持",
    ],
  },
  {
    name: "Boring Technology",
    description: "実績のある技術を優先し、新技術の導入は慎重に行う",
    rationale: "運用の安定性と開発者の採用のしやすさ",
    implications: [
      "新技術の導入には Innovation Token(年に2-3個)を使う",
      "PoC → 小規模導入 → 本番適用の段階を踏む",
    ],
  },
];

技術レーダー

// ThoughtWorks式の技術レーダー
interface TechRadar {
  adopt: TechItem[];     // 積極的に採用すべき
  trial: TechItem[];     // 試験的に使い始めてよい
  assess: TechItem[];    // 評価中(PoC段階)
  hold: TechItem[];      // 新規採用しない(既存は維持)
}

interface TechItem {
  name: string;
  quadrant: 'languages' | 'frameworks' | 'tools' | 'platforms';
  description: string;
}

const EXAMPLE_RADAR: TechRadar = {
  adopt: [
    { name: "TypeScript", quadrant: "languages", description: "全新規プロジェクトで使用" },
    { name: "PostgreSQL", quadrant: "platforms", description: "RDBMSの標準選択肢" },
    { name: "Docker", quadrant: "tools", description: "全環境のコンテナ化" },
    { name: "GitHub Actions", quadrant: "tools", description: "CI/CDの標準" },
  ],
  trial: [
    { name: "Deno", quadrant: "platforms", description: "小規模ツールで試行" },
    { name: "OpenTelemetry", quadrant: "tools", description: "分散トレーシングの標準化" },
  ],
  assess: [
    { name: "WebAssembly", quadrant: "platforms", description: "パフォーマンス要件の高い処理で評価中" },
  ],
  hold: [
    { name: "jQuery", quadrant: "frameworks", description: "新規採用禁止。React/Vueに移行" },
    { name: "MongoDB", quadrant: "platforms", description: "新規採用禁止。PostgreSQLを使用" },
  ],
};

技術的負債の管理

// 技術的負債の分類と対応
interface TechDebt {
  category: 'intentional' | 'unintentional';
  type: string;
  impact: 'high' | 'medium' | 'low';
  effort: 'high' | 'medium' | 'low';
  strategy: string;
}

const TECH_DEBT_MANAGEMENT: TechDebt[] = [
  {
    category: "intentional",
    type: "レガシーフレームワークの継続使用",
    impact: "high",
    effort: "high",
    strategy: "Strangler Figパターンで段階的移行(6ヶ月計画)",
  },
  {
    category: "unintentional",
    type: "テストカバレッジの不足(30%)",
    impact: "medium",
    effort: "medium",
    strategy: "新機能開発時に関連コードのテストも追加(ボーイスカウトルール)",
  },
  {
    category: "intentional",
    type: "モノリスのままでの運用",
    impact: "medium",
    effort: "high",
    strategy: "ドメイン境界を整理し、優先度の高いサービスから分離",
  },
];

// 技術的負債の可視化: 四象限マトリクス
// High Impact, Low Effort  → 即座に対応(Quick Wins)
// High Impact, High Effort → 計画的に対応(Strategic)
// Low Impact, Low Effort   → 余裕があれば対応
// Low Impact, High Effort  → 対応しない(Accept)

技術ロードマップ

const TECH_ROADMAP = {
  q1: {
    theme: "基盤強化",
    items: [
      "CI/CDパイプラインの改善(デプロイ頻度を週1→日次に)",
      "監視基盤の統一(Datadog導入)",
      "テストカバレッジ50%達成",
    ],
  },
  q2: {
    theme: "モダナイゼーション",
    items: [
      "認証基盤をAuth0に移行",
      "レガシーAPIのv2設計とOpenAPI仕様策定",
      "コンテナ化(Docker + ECS)",
    ],
  },
  q3: {
    theme: "スケーラビリティ",
    items: [
      "キャッシュ層の導入(Redis Cluster)",
      "データベースのリードレプリカ追加",
      "CDN導入によるフロントエンド高速化",
    ],
  },
  q4: {
    theme: "イノベーション",
    items: [
      "マイクロサービス第1弾(検索サービスの分離)",
      "AI/ML基盤のPoC",
      "次年度の技術戦略策定",
    ],
  },
};

まとめ

ポイント内容
技術原則Buy over Build、API First、Boring Technology
技術レーダーAdopt/Trial/Assess/Holdで技術を分類管理
負債管理影響度と工数のマトリクスで優先順位付け
ロードマップ四半期ごとのテーマと具体的なアクション

チェックリスト

  • 技術戦略の構成要素を理解した
  • 技術レーダーの4カテゴリを説明できた
  • 技術的負債の管理方法を把握した
  • 技術ロードマップの策定プロセスを理解した

次のステップへ

次は「設計者としてのキャリアパス」を学びます。技術者としてのキャリアの進め方を考えましょう。


推定読了時間: 30分