ストーリー
L2の10ヶ月間の振り返り
const L2_JOURNEY = {
month1: {
theme: "API設計とRESTful原則",
learned: [
"RESTful APIの設計原則",
"OpenAPI仕様とAPI First開発",
"バージョニングと後方互換性",
],
keyTakeaway: "APIは契約。一度公開したら簡単には変えられない",
},
month2: {
theme: "データベース設計と正規化",
learned: [
"正規化と非正規化のトレードオフ",
"インデックス戦略",
"NoSQLの使い分け",
],
keyTakeaway: "データモデルはシステムの基盤。後から変更するのは非常に高コスト",
},
month3: {
theme: "認証・認可のアーキテクチャ",
learned: [
"OAuth2.0 / OIDC",
"JWT vs Session",
"RBAC / ABAC",
],
keyTakeaway: "セキュリティは後付けできない。設計段階から組み込む",
},
month4: {
theme: "テスト戦略と品質保証",
learned: [
"テストピラミッド",
"TDD / BDD",
"テスト自動化戦略",
],
keyTakeaway: "テストはコストではなく投資。長期的に見れば開発速度を上げる",
},
month5: {
theme: "CI/CDとDevOps",
learned: [
"CI/CDパイプラインの設計",
"Infrastructure as Code",
"デプロイ戦略(Blue/Green, Canary)",
],
keyTakeaway: "自動化とフィードバックループが開発チームの速度を決める",
},
month6: {
theme: "パフォーマンスとスケーラビリティ",
learned: [
"レイテンシとスループットの最適化",
"キャッシュ戦略",
"水平スケーリング",
],
keyTakeaway: "計測なくして最適化なし。推測ではなくデータに基づく",
},
month7: {
theme: "マイクロサービスと分散システム",
learned: [
"サービス分割の基準",
"サービス間通信(同期/非同期)",
"分散トランザクション(Saga)",
],
keyTakeaway: "マイクロサービスは銀の弾丸ではない。必要になるまでモノリスでよい",
},
month8: {
theme: "クラウドネイティブ設計",
learned: [
"コンテナオーケストレーション",
"サーバーレスアーキテクチャ",
"クラウドデザインパターン",
],
keyTakeaway: "クラウドの利点を最大化するには、クラウドネイティブな設計が必要",
},
month9: {
theme: "セキュリティ設計",
learned: [
"ゼロトラストアーキテクチャ",
"暗号化戦略",
"セキュリティ監査と脅威モデリング",
],
keyTakeaway: "セキュリティは全レイヤーで多層防御する",
},
month10: {
theme: "究極のシステムを設計しよう",
learned: [
"システム設計の総合フレームワーク",
"実世界のケーススタディ",
"アーキテクチャレビューと技術戦略",
],
keyTakeaway: "全ての知識を統合して初めて、本物の設計ができる",
},
};
L2で身についた能力
const L2_COMPETENCIES = {
design: {
name: "システム設計力",
before: "個別の機能を実装できる",
after: "システム全体を設計し、トレードオフを議論できる",
},
analysis: {
name: "要件分析力",
before: "与えられた要件を理解できる",
after: "曖昧な要件を構造化し、非機能要件を定量化できる",
},
communication: {
name: "技術コミュニケーション力",
before: "コードで表現できる",
after: "図、ADR、プレゼンで設計意図を伝えられる",
},
judgment: {
name: "技術判断力",
before: "チュートリアル通りに技術を使える",
after: "複数の選択肢からトレードオフを考慮して選択できる",
},
};
L3で待っているもの
const L3_PREVIEW = {
theme: "設計者→リーダーへの進化",
focus: [
{
area: "大規模分散システムの深掘り",
topics: ["CAP定理の実践的適用", "コンセンサスアルゴリズム", "Eventually Consistentの設計"],
},
{
area: "組織設計とConwayの法則",
topics: ["チームトポロジー", "プラットフォームエンジニアリング", "Developer Experience"],
},
{
area: "技術戦略とロードマップ",
topics: ["ADRの組織展開", "技術レーダー運営", "技術的負債の経営層への可視化"],
},
{
area: "SRE / Production Engineering",
topics: ["SLI/SLO駆動の運用", "カオスエンジニアリング", "インシデントマネジメント"],
},
],
prerequisites: [
"L2全月の修了",
"実務でのシステム設計経験(1年以上推奨)",
"チームでの技術リード経験",
],
};
自己評価チェックリスト
// L2修了時の自己評価
const SELF_ASSESSMENT = [
{ skill: "RESTful API設計", canDo: "OpenAPI仕様を先に定義してAPI開発ができる" },
{ skill: "DB設計", canDo: "正規化/非正規化のトレードオフを判断できる" },
{ skill: "認証設計", canDo: "OAuth2.0フローを選択し実装できる" },
{ skill: "テスト戦略", canDo: "テストピラミッドに基づく戦略を立てられる" },
{ skill: "CI/CD", canDo: "パイプラインを設計しゼロダウンタイムデプロイできる" },
{ skill: "パフォーマンス", canDo: "ボトルネックを特定しキャッシュ戦略を設計できる" },
{ skill: "分散システム", canDo: "マイクロサービスの分割とSagaパターンを設計できる" },
{ skill: "クラウド", canDo: "クラウドネイティブなアーキテクチャを選択できる" },
{ skill: "セキュリティ", canDo: "脅威モデリングとゼロトラスト設計ができる" },
{ skill: "総合設計", canDo: "ケーススタディに対して体系的にシステム設計ができる" },
];
まとめ
| ポイント | 内容 |
|---|---|
| 10ヶ月の成長 | API設計からグローバルシステム設計までの道のり |
| 4つの能力 | 設計力、分析力、コミュニケーション力、判断力 |
| L3への道 | 分散システム深掘り、組織設計、SRE |
| 自己評価 | 10項目のスキルチェックで現在地を確認 |
チェックリスト
- L2の10ヶ月間で学んだことを振り返った
- 身についた4つの能力を自己評価した
- L3で学ぶ内容の概要を把握した
- 自己評価チェックリストで現在地を確認した
次のステップへ
次は演習です。アーキテクチャレビューを実際に体験しましょう。
推定読了時間: 30分