EXERCISE 90分

ストーリー

高橋アーキテクトがあなたの前に座りました。

高橋アーキテクト
ここまでの学びの集大成だ。君がテクニカルリードとして、新規プロジェクトの技術戦略を一から立案してほしい
あなた
技術選定、ドキュメント、チーム育成、コミュニケーション…全部を統合するんですね
高橋アーキテクト
その通り。テクニカルリードの仕事は、個別のスキルではなく、それらを統合してチームを導くことだ。この演習を通じて、テクニカルリーダーシップの全体像を体感してほしい

総合演習の概要

5つのパートで、Month 9の全スキルを実践します。

パートテーマ時間使うスキル
Part 1技術戦略の立案20分技術選定、ロードマップ
Part 2ADR/RFCの作成20分RFC/ADR
Part 3チームビルディング計画20分メンタリング、心理的安全性
Part 4ステークホルダー報告15分プレゼン、コミュニケーション
Part 5ナレッジ共有計画15分ドキュメント、勉強会

シナリオ

## プロジェクト: HealthTrack -- 企業向け健康管理SaaS

### 背景
あなたは、新規SaaSプロダクト「HealthTrack」のテクニカルリードに任命されました。
企業の従業員の健康データを管理し、分析レポートを提供するサービスです。

### 要件
- 従業員の健康診断データの登録・管理
- ダッシュボードでの分析レポート表示
- 企業管理者向けの管理画面
- 従業員向けのモバイルアプリ(将来的に)
- マルチテナント対応(企業ごとにデータを分離)
- HIPAA/個人情報保護法への準拠が必要

### チーム構成
- バックエンド: 2名(1名はシニア、1名はジュニア入社3ヶ月)
- フロントエンド: 2名(ミドルレベル)
- インフラ: 1名(兼務、週の50%のみアサイン)
- QA: 1名(テスト自動化の経験あり)

### 制約
- MVP(最小viable製品)を4ヶ月でリリース
- 初年度のユーザー数: 50社、従業員計1万人
- クラウド予算: 月額30万円以内
- 健康データのため、セキュリティ最優先

Part 1: 技術戦略の立案(20分)

要件

  1. 技術スタックの選定(バックエンド、フロントエンド、DB、インフラ)
  2. 評価基準マトリクス(主要な選定に対して)
  3. 技術ロードマップ(4ヶ月のMVP + 6ヶ月の拡張)
  4. Technology Radarの初期版
解答例
## 技術スタック

| レイヤー | 選択 | 理由 |
|---------|------|------|
| バックエンド | NestJS + TypeScript | 型安全、チームのJS経験、構造的 |
| フロントエンド | Next.js + TypeScript | SSR対応、React経験活用 |
| DB | PostgreSQL | RLS対応、マルチテナント実績 |
| ORM | Prisma | 型安全、マイグレーション自動化 |
| 認証 | Auth0 | マルチテナント対応、セキュリティ |
| インフラ | AWS (ECS + RDS) | マネージド中心で運用負荷軽減 |
| CI/CD | GitHub Actions | チーム全員が使い慣れている |
| モニタリング | Datadog | APM + ログ + メトリクスの統合 |

## 技術ロードマップ

### MVP(Month 1-4)
| 月 | テーマ | 成果物 |
|----|--------|--------|
| 1 | 基盤構築 | 認証、マルチテナント基盤、CI/CD |
| 2 | コア機能 | 健康データCRUD、基本API |
| 3 | ダッシュボード | 分析レポート、管理画面 |
| 4 | 品質・リリース | テスト強化、セキュリティ監査、MVP |

### 拡張(Month 5-10)
| 月 | テーマ |
|----|--------|
| 5-6 | モバイルアプリ対応、API拡張 |
| 7-8 | パフォーマンス最適化、スケーリング |
| 9-10 | AI分析機能、外部連携 |

## Technology Radar
### Adopt: TypeScript, Next.js, PostgreSQL, Docker, GitHub Actions
### Trial: Prisma, Auth0, Datadog
### Assess: GraphQL, Terraform, OpenTelemetry
### Hold: MongoDB(マルチテナントのRLS不可)

Part 2: ADR/RFCの作成(20分)

要件

  1. マルチテナント方式の選定に関するADRを1件作成
  2. 健康データの暗号化戦略に関するRFCの概要(サマリー、代替案、リスク)
解答例
# ADR-001: マルチテナント方式にRow-Level Securityを採用

## ステータス
承認済み

## コンテキスト
企業向けSaaSのため、テナント(企業)ごとにデータを分離する必要がある。
候補:
1. DB分離(テナントごとに別DB): セキュリティ最強だが運用コスト大
2. スキーマ分離(テナントごとに別スキーマ): 中間的だが複雑
3. 行レベル分離(RLS): 共有テーブル + PostgreSQL RLS

## 決定
PostgreSQL の Row-Level Security(RLS)を採用する。

## 結果
### ポジティブ
- インフラコストが最小(1つのDBインスタンス)
- Prismaとの統合が可能
- テナント追加の運用が簡単
### ネガティブ
- RLS の設定ミスで他テナントのデータが見えるリスク → E2Eテストで検証
- 大規模時のパフォーマンス懸念 → 初年度1万人なら問題なし

---

# RFC-001: 健康データの暗号化戦略(概要)

## サマリー
健康データ(個人情報 + 診断結果)の暗号化方式を定義する。

## 代替案
1. **アプリケーション層暗号化**: Prisma middleware で透過的に暗号化
2. **DB層暗号化**: PostgreSQL pgcrypto
3. **AWS KMS + Envelope暗号化**: KMSでデータキーを管理

推奨: AWS KMS + アプリケーション層暗号化の組み合わせ

## リスク
| リスク | 軽減策 |
|--------|--------|
| 鍵の漏洩 | AWS KMS + IAMで厳格にアクセス制御 |
| 暗号化によるパフォーマンス低下 | 検索対象フィールドのみ暗号化 |
| 鍵ローテーション | KMSの自動ローテーション機能を利用 |

Part 3: チームビルディング計画(20分)

要件

  1. ジュニアメンバーのオンボーディング計画(最初の1ヶ月)
  2. チーム全体のスキルマップと育成方針
  3. 心理的安全性を高める施策を3つ
解答例
## ジュニア(入社3ヶ月目)のオンボーディング計画

### 目標: 1ヶ月後に簡単なAPIエンドポイントを一人で実装できる

| 週 | テーマ | 方法 |
|----|--------|------|
| 1 | プロジェクト概要とアーキテクチャ理解 | ペアプロ + ドキュメント |
| 2 | NestJS + Prismaの基本操作 | ハンズオン + バグ修正タスク |
| 3 | テストの書き方、PR作成 | TDDペアプロ |
| 4 | 簡単なAPIを自力で実装 | サポート付きで自走 |

## スキルマップ

| スキル | シニア | ジュニア | FE-1 | FE-2 | インフラ |
|--------|:------:|:--------:|:----:|:----:|:--------:|
| TypeScript | A | B | A | B | C |
| NestJS | A | C | C | C | D |
| React/Next.js | B | D | A | A | D |
| PostgreSQL | A | C | B | B | B |
| AWS | B | D | D | D | A |
| テスト | A | C | B | B | B |
| セキュリティ | B | D | C | C | B |

(A=指導できる, B=自走できる, C=支援が必要, D=未経験)

## 心理的安全性の施策
1. 週次の「困っていること共有タイム」(5分 × 全員)
2. Blameless Postmortemの導入を宣言し、第1回を自分の失敗で実施
3. Slack #質問-何でも チャンネルを作り、リードが最初に質問を投稿

Part 4: ステークホルダー報告(15分)

要件

CTOへの技術戦略報告書を、1ページ(エグゼクティブサマリー形式)で作成してください。

解答例
# HealthTrack 技術戦略報告書

## エグゼクティブサマリー
TypeScript統一スタック(NestJS + Next.js + PostgreSQL)を採用し、
AWS上にマルチテナントSaaSを構築します。MVPを4ヶ月でリリースします。

## 技術方針
- **型安全**: TypeScript統一で品質とDXを両立
- **セキュリティ最優先**: RLS + AWS KMS暗号化 + Auth0認証
- **運用効率**: マネージドサービス中心でインフラ負荷を最小化

## スケジュールとコスト
| 項目 | 内容 |
|------|------|
| MVPリリース | 4ヶ月後(Month 4末) |
| 月額インフラコスト | 推定15-20万円(予算30万円以内) |
| チーム | 6名(FTE換算5.5名) |

## リスクと対策
| リスク | 対策 |
|--------|------|
| ジュニアの立ち上がり | ペアプロ + 段階的なタスクアサイン |
| セキュリティ要件の不確実性 | 専門家レビューをMonth 3に実施 |
| インフラ担当の兼務 | IaCで自動化し、運用負荷を最小化 |

## 次のアクション
1. 来週: 開発環境の構築開始
2. 2週間後: 認証 + マルチテナント基盤のPoC完了
3. 1ヶ月後: コア機能の開発開始

Part 5: ナレッジ共有計画(15分)

要件

プロジェクト立ち上げ期のナレッジ共有計画を策定してください。

解答例
## ナレッジ共有計画

### ドキュメント整備
| ドキュメント | 担当 | 期限 |
|-------------|------|------|
| オンボーディングガイド | テクニカルリード | Week 1 |
| ADR テンプレート + 初期ADR 3件 | テクニカルリード | Week 2 |
| API設計ガイドライン | シニアエンジニア | Week 3 |
| Runbook テンプレート | インフラ担当 | Week 4 |

### 定期的な共有活動
| 活動 | 頻度 | 内容 |
|------|------|------|
| デイリースタンドアップ | 毎日15分 | 進捗とブロッカーの共有 |
| 設計レビュー | 週1回60分 | RFC/設計ドキュメントのレビュー |
| テックトーク | 隔週30分 | 学んだことの共有(LT形式) |
| 振り返り(レトロ) | 隔週60分 | プロセスの改善 |

### ツール
- ドキュメント: GitHub リポジトリ内 docs/
- コミュニケーション: Slack + Notion
- 設計議論: Miro + RFC
- API ドキュメント: OpenAPI + Swagger UI(自動生成)

### 効果測定(3ヶ月後に評価)
- オンボーディング時間: 目標1日以内
- ADR作成件数: 月2件以上
- テックトーク登壇率: チーム全員が1回以上

達成度チェック

パートテーマ完了
Part 1技術戦略の立案[ ]
Part 2ADR/RFCの作成[ ]
Part 3チームビルディング計画[ ]
Part 4ステークホルダー報告[ ]
Part 5ナレッジ共有計画[ ]

まとめ

ポイント内容
技術戦略スタック選定 + ロードマップ + Radar
ドキュメントADR/RFCで意思決定を記録・議論
チームスキルマップに基づく育成計画
コミュニケーションステークホルダーにビジネス価値で伝える
ナレッジ仕組みで継続的な知識共有を実現

チェックリスト

  • 技術スタックを体系的に選定できた
  • ADRとRFCを適切に作成できた
  • チームの育成計画を立てられた
  • ステークホルダー向けの報告書を書けた
  • ナレッジ共有の仕組みを設計できた

次のステップへ

お疲れさまでした。最後に卒業クイズに挑戦しましょう。


推定所要時間: 90分