LESSON 30分

ストーリー

佐藤CTO
アーキテクチャ設計の第一歩は、“誰のために設計するのか”を明確にすることだ

佐藤CTOがホワイトボードにステークホルダーの名前を次々と書き出していきます。

佐藤CTO
NexPayのスーパーアプリプロジェクトには、多くのステークホルダーが関わる。CEO、事業責任者、コンプライアンス部門、開発チーム、運用チーム、加盟店、エンドユーザー…それぞれが異なる関心事を持っている
あなた
すべての要望に応えるのは不可能ですよね?
佐藤CTO
その通り。だからこそアーキテクチャドライバーの特定が重要になる。すべてのステークホルダーの関心事を分析した上で、アーキテクチャに最も影響を与える要素を見極める。それがアーキテクトの最初の仕事だ

ステークホルダーマッピング

ステークホルダー一覧

NexPayスーパーアプリプロジェクトの主要ステークホルダーを特定します。

ステークホルダー役割主な関心事影響力
CEO / 経営陣事業方針の決定市場シェア拡大、競合優位性、ROI最高
CFO / 財務部門予算管理開発コスト、インフラコスト、収益性
コンプライアンス部門法規制対応PCI DSS、資金決済法、犯収法
CISO / セキュリティチームセキュリティ統括データ保護、脅威対策、インシデント対応
プロダクトマネージャー機能仕様の決定ユーザー体験、リリース速度、機能優先度中-高
開発チーム(50名)実装開発効率、技術的な健全性、学習コスト
SRE / 運用チームシステム運用運用負荷、障害対応、自動化
QAチーム品質保証テスト容易性、品質基準、自動テスト
加盟店(200万店舗)決済受入決済の確実性、入金サイクル、管理画面
エンドユーザー(1,000万人)アプリ利用利便性、速度、安全性
外部パートナーAPI連携API安定性、ドキュメント、SLA低-中
監査法人外部監査監査証跡、透明性、コンプライアンス低-中

ステークホルダーの影響力と関心度マトリクス

graph TD
    subgraph Q1["情報提供
低影響力 × 高関心度"] A1["監査法人"] A2["QAチーム"] end subgraph Q2["密な連携
高影響力 × 高関心度"] B1["CEO"] B2["CFO"] B3["CISO"] B4["コンプライアンス"] end subgraph Q3["最小管理
低影響力 × 低関心度"] C1["外部パートナー"] end subgraph Q4["満足維持
高影響力 × 低関心度"] D1["PM"] D2["開発チーム"] D3["SRE"] D4["加盟店"] end style Q1 fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af style Q2 fill:#fee2e2,stroke:#dc2626,color:#991b1b style Q3 fill:#f3f4f6,stroke:#9ca3af,color:#374151 style Q4 fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e style A1 fill:#dbeafe,stroke:#2563eb,color:#1e40af style A2 fill:#dbeafe,stroke:#2563eb,color:#1e40af style B1 fill:#fee2e2,stroke:#dc2626,color:#991b1b style B2 fill:#fee2e2,stroke:#dc2626,color:#991b1b style B3 fill:#fee2e2,stroke:#dc2626,color:#991b1b style B4 fill:#fee2e2,stroke:#dc2626,color:#991b1b style C1 fill:#f3f4f6,stroke:#9ca3af,color:#374151 style D1 fill:#fef3c7,stroke:#d97706,color:#92400e style D2 fill:#fef3c7,stroke:#d97706,color:#92400e style D3 fill:#fef3c7,stroke:#d97706,color:#92400e style D4 fill:#fef3c7,stroke:#d97706,color:#92400e

品質属性の優先順位付け

ステークホルダー別の品質属性要求

各ステークホルダーの関心事を品質属性に変換し、優先順位を付けます。

// ステークホルダーの関心事から品質属性への変換
interface QualityAttributePriority {
  attribute: string;
  stakeholders: string[];
  priority: "MUST" | "SHOULD" | "COULD";
  rationale: string;
}

const priorities: QualityAttributePriority[] = [
  {
    attribute: "セキュリティ(Security)",
    stakeholders: ["CISO", "コンプライアンス", "CEO", "監査法人"],
    priority: "MUST",
    rationale: "金融サービスの根幹。PCI DSS/犯収法は法的義務",
  },
  {
    attribute: "可用性(Availability)",
    stakeholders: ["CEO", "エンドユーザー", "加盟店", "SRE"],
    priority: "MUST",
    rationale: "決済基盤の停止は直接的な売上損失と信頼毀損",
  },
  {
    attribute: "パフォーマンス(Performance)",
    stakeholders: ["エンドユーザー", "加盟店", "PM"],
    priority: "MUST",
    rationale: "決済のレイテンシはUXと加盟店の業務効率に直結",
  },
  {
    attribute: "スケーラビリティ(Scalability)",
    stakeholders: ["CEO", "CFO", "SRE"],
    priority: "MUST",
    rationale: "300万→1000万ユーザーへの成長を支える必要がある",
  },
  {
    attribute: "保守性(Maintainability)",
    stakeholders: ["開発チーム", "PM", "QA"],
    priority: "SHOULD",
    rationale: "3つの事業領域を50名で並行開発するための効率性",
  },
  {
    attribute: "相互運用性(Interoperability)",
    stakeholders: ["外部パートナー", "PM"],
    priority: "SHOULD",
    rationale: "銀行API、証券API、外部決済ネットワークとの連携",
  },
  {
    attribute: "コスト効率(Cost Efficiency)",
    stakeholders: ["CFO", "CEO"],
    priority: "SHOULD",
    rationale: "インフラコストが収益を圧迫しないこと",
  },
  {
    attribute: "デプロイ容易性(Deployability)",
    stakeholders: ["開発チーム", "SRE", "PM"],
    priority: "COULD",
    rationale: "高頻度リリースによる市場投入速度の向上",
  },
];

品質属性の優先順位マトリクス

優先度品質属性理由
MUSTセキュリティ法的義務(PCI DSS/犯収法)、金融業の前提条件
MUST可用性決済停止 = 直接的な損害、加盟店の信頼
MUSTパフォーマンス決済UX、加盟店オペレーション
MUSTスケーラビリティ3倍成長を2年以内に達成
SHOULD保守性50名の開発チームの生産性
SHOULD相互運用性外部金融システムとの連携
SHOULDコスト効率持続可能な事業運営
COULDデプロイ容易性市場投入速度の改善

「MUSTとSHOULDの境界は明確にしておくべきだ。フィンテックではセキュリティと可用性は交渉の余地がない。保守性やデプロイ容易性は”あるに越したことはない”が、セキュリティを犠牲にしてまで追求するものではない」 — 佐藤CTO


アーキテクチャドライバーの抽出

ドライバー分析

ステークホルダー分析と品質属性の優先順位から、アーキテクチャドライバーを抽出します。

interface ArchitecturalDriver {
  id: string;
  category: "FunctionalRequirement" | "QualityAttribute" | "Constraint";
  description: string;
  impact: "HIGH" | "MEDIUM" | "LOW";
  relatedStakeholders: string[];
}

const architecturalDrivers: ArchitecturalDriver[] = [
  // 主要機能要件(アーキテクチャに影響するもの)
  {
    id: "FR-001",
    category: "FunctionalRequirement",
    description: "決済・送金・投資の3サービスを統合し、シームレスな連携を実現する",
    impact: "HIGH",
    relatedStakeholders: ["CEO", "PM", "エンドユーザー"],
  },
  {
    id: "FR-002",
    category: "FunctionalRequirement",
    description: "リアルタイム取引処理(決済完了まで2秒以内)",
    impact: "HIGH",
    relatedStakeholders: ["エンドユーザー", "加盟店"],
  },
  {
    id: "FR-003",
    category: "FunctionalRequirement",
    description: "KYC/AMLのリアルタイム審査と継続的モニタリング",
    impact: "HIGH",
    relatedStakeholders: ["コンプライアンス", "CISO"],
  },

  // 品質属性(定量的に定義)
  {
    id: "QA-001",
    category: "QualityAttribute",
    description: "決済システムの可用性 99.99%(年間ダウンタイム52.6分以下)",
    impact: "HIGH",
    relatedStakeholders: ["CEO", "SRE", "加盟店"],
  },
  {
    id: "QA-002",
    category: "QualityAttribute",
    description: "決済APIレスポンス p99 < 500ms",
    impact: "HIGH",
    relatedStakeholders: ["エンドユーザー", "加盟店"],
  },
  {
    id: "QA-003",
    category: "QualityAttribute",
    description: "10,000 TPS(決済ピーク時)を処理可能",
    impact: "HIGH",
    relatedStakeholders: ["CEO", "SRE"],
  },
  {
    id: "QA-004",
    category: "QualityAttribute",
    description: "PCI DSS Level 1に完全準拠するセキュリティ",
    impact: "HIGH",
    relatedStakeholders: ["CISO", "コンプライアンス", "監査法人"],
  },

  // 制約(変更不可能)
  {
    id: "CON-001",
    category: "Constraint",
    description: "PCI DSS Level 1準拠(クレジットカード情報の取扱い)",
    impact: "HIGH",
    relatedStakeholders: ["CISO", "コンプライアンス"],
  },
  {
    id: "CON-002",
    category: "Constraint",
    description: "資金決済法・犯罪収益移転防止法(犯収法)への準拠",
    impact: "HIGH",
    relatedStakeholders: ["コンプライアンス", "CEO"],
  },
  {
    id: "CON-003",
    category: "Constraint",
    description: "既存QRコード決済システム(Java/Spring Boot)からの段階的移行",
    impact: "MEDIUM",
    relatedStakeholders: ["開発チーム", "SRE"],
  },
  {
    id: "CON-004",
    category: "Constraint",
    description: "開発チーム50名(Java/Kotlin/TypeScript経験者中心)",
    impact: "MEDIUM",
    relatedStakeholders: ["開発チーム", "CEO"],
  },
  {
    id: "CON-005",
    category: "Constraint",
    description: "年間インフラ予算: 3億円以内",
    impact: "MEDIUM",
    relatedStakeholders: ["CFO", "CEO"],
  },
];

ドライバー間の相互作用

アーキテクチャドライバーは独立しているわけではなく、相互に影響し合います。

ドライバーAドライバーB関係影響
QA-001(可用性99.99%)CON-005(予算3億円)競合高可用性にはコストがかかる
QA-002(レイテンシ)QA-004(PCI DSS)競合暗号化処理がレイテンシを増加させる
FR-001(サービス統合)QA-001(可用性)補強サービス分割により障害分離が可能
CON-001(PCI DSS)FR-002(リアルタイム処理)競合コンプライアンス要件が処理フローを複雑化
QA-003(10,000 TPS)CON-004(チーム50名)競合高スループット設計には専門知識が必要

「ドライバー間の競合を見つけることが、トレードオフ判断の出発点になる。特にフィンテックではセキュリティとパフォーマンス可用性とコストの競合が常につきまとう。これをどう解決するかが、アーキテクトの腕の見せどころだ」 — 佐藤CTO


ステークホルダーコミュニケーション計画

コミュニケーションマトリクス

アーキテクチャ設計のプロセスにおいて、各ステークホルダーとどのようにコミュニケーションするかを計画します。

ステークホルダー頻度形式内容
CEO / 経営陣月1回エグゼクティブレポート進捗、リスク、ROI見通し
CISO週1回セキュリティレビュー脅威モデル、PCI DSS対応状況
コンプライアンス隔週コンプライアンスレビュー法規制対応状況、監査準備
PM週2回設計セッション機能要件とアーキテクチャの整合
開発チーム毎日デイリー + ADR共有設計判断の共有、技術的課題の議論
SRE週1回運用設計レビューSLI/SLO、監視設計、DR計画
ステークホルダーマネジメントのポイント

フィンテックプロジェクト特有のポイント

  1. コンプライアンスファースト: 法規制対応はアーキテクチャの前提条件であり、交渉の余地がない。早い段階でコンプライアンス部門と密に連携する。

  2. セキュリティバイデザイン: CISOとの連携は設計の初期段階から。後付けのセキュリティ対策は必ず手戻りを生む。

  3. 経営層への翻訳: 技術的な判断を経営言語(ROI、リスク、市場投入時期)に翻訳して説明する能力が必須。

  4. 開発チームの巻き込み: 50名のチームが設計を理解し、実装できることが前提。ADRを通じた設計判断の共有が重要。


まとめ

ポイント内容
ステークホルダー12のステークホルダーグループを特定し、関心事を分析
品質属性優先順位セキュリティ・可用性・パフォーマンス・スケーラビリティがMUST
アーキテクチャドライバー機能要件3件、品質属性4件、制約5件を抽出
ドライバー間の競合セキュリティvsパフォーマンス、可用性vsコストが主要な競合
コミュニケーションステークホルダー別のコミュニケーション計画を策定

チェックリスト

  • 主要ステークホルダーとその関心事を特定できた
  • 品質属性の優先順位付け(MUST/SHOULD/COULD)を理解した
  • アーキテクチャドライバーの3分類(機能要件/品質属性/制約)を把握した
  • ドライバー間の競合関係を識別できた
  • コミュニケーション計画の重要性を認識した

次のステップへ

次は「品質属性シナリオの策定」に進みます。抽出したアーキテクチャドライバーを、定量的で検証可能な品質属性シナリオに変換しましょう。


推定読了時間: 30分