クイズの説明
Step 5で学んだアーキテクチャの実践と評価の理解度をチェックします。
- 全8問
- 合格ライン: 80%(7問正解)
- 不合格の場合は復習してから再挑戦してください
問題
Q1. アーキテクチャの品質特性において、「変更容易性」と最もトレードオフの関係になりやすい特性はどれですか?
- A) セキュリティ
- B) シンプルさ(初期開発速度)
- C) 可用性
- D) 可観測性
答えを見る
正解: B
変更容易性を高めるためには、抽象化の層(Port/Adapter, DI)やモジュール分離が必要になります。これらは初期開発速度を下げ、コードの複雑さ(学習コスト)を増加させます。シンプルさ(初期開発速度)と変更容易性は最もトレードオフの関係にあります。
Q2. アーキテクチャフィットネス関数の目的として正しいものはどれですか?
- A) ユーザーインターフェースのデザインを検証する
- B) アーキテクチャの品質特性が維持されているかを自動検証する
- C) データベースのバックアップを自動実行する
- D) コードの行数を自動計測する
答えを見る
正解: B
フィットネス関数は、アーキテクチャの品質特性(依存性ルール、循環依存、パフォーマンスなど)が維持されているかを自動的に検証する仕組みです。CIパイプラインに組み込むことで、アーキテクチャの劣化を早期に検出できます。
Q3. モジュラーモノリスの説明として正しいものはどれですか?
- A) 複数のサーバーにデプロイする分散システム
- B) 1つのデプロイ単位だが、内部はBounded Contextごとにモジュールとして分離されている
- C) モジュールがない単一の巨大なアプリケーション
- D) マイクロサービスの別名
答えを見る
正解: B
モジュラーモノリスは、デプロイは1つの単位(モノリス)ですが、内部はBounded Contextごとにモジュールとして明確に分離されています。各モジュールは公開API(index.ts)を通じてのみ通信し、内部実装は隠蔽されます。モノリスの簡便さとマイクロサービスの境界の明確さを両立します。
Q4. ECサイトで最も優先すべき品質特性として適切なのはどれですか?
- A) シンプルさ
- B) 可用性
- C) テスト容易性
- D) デプロイ容易性
答えを見る
正解: B
ECサイトではダウンタイムが直接的な売上損失につながるため、可用性が最も優先されます。システムが利用できない間は顧客が購入できず、競合サイトに流れる可能性があります。テスト容易性やデプロイ容易性も重要ですが、可用性と比較すると優先度は下がります。
Q5. 依存性ルールのフィットネス関数として適切なテストはどれですか?
- A) domain層のファイルがadapters層やframeworks層をimportしていないことを検証する
- B) テストカバレッジが80%以上であることを検証する
- C) APIのレスポンスタイムが200ms以内であることを検証する
- D) データベースの接続数が100以下であることを検証する
答えを見る
正解: A
依存性ルールのフィットネス関数は「依存の方向が正しいか」を検証します。具体的には、domain層のファイルがadapters層やframeworks層(Express, Prisma等)のモジュールをimportしていないことを確認します。B, C, Dもフィットネス関数ですが、それぞれコード品質、パフォーマンス、運用の領域です。
Q6. アーキテクチャのトレードオフについて正しい記述はどれですか?
- A) 正しいアーキテクチャを選べば、トレードオフは発生しない
- B) すべての品質特性を最大化するアーキテクチャが存在する
- C) トレードオフは必ず存在し、コンテキストに応じて意識的に選択すべき
- D) トレードオフは経験豊富なアーキテクトだけが判断できる
答えを見る
正解: C
すべてのアーキテクチャ判断にはトレードオフがあります。「正解」は存在せず、チーム規模、スケジュール、ドメインの複雑さなどのコンテキストに応じて、何を得て何を失うかを意識的に選択し、ADRとして記録することが重要です。
Q7. チーム5人のスタートアップでMVPを3ヶ月で開発する場合、最も適切なアーキテクチャはどれですか?
- A) マイクロサービス + DDD
- B) CQRS + イベントソーシング
- C) レイヤードアーキテクチャ(将来のモジュラーモノリスへの移行を見据えて)
- D) サーバーレスアーキテクチャ
答えを見る
正解: C
5人のスタートアップで3ヶ月のMVP開発では、市場投入速度が最優先です。レイヤードアーキテクチャはシンプルで学習コストが低く、開発速度を確保できます。ただし、将来のモジュラーモノリスへの移行を見据えて、ドメインの境界は意識しておくべきです。A, Bは運用・設計コストが過大、Dは技術スタックの制約があります。
Q8. Evolutionary Architecture(進化的アーキテクチャ)の考え方として正しいものはどれですか?
- A) 最初から完全なマイクロサービスを設計する
- B) アーキテクチャは最初に決めたら変更しない
- C) 段階的にアーキテクチャを進化させ、必要に応じて移行する
- D) フレームワークの推奨構造をそのまま使う
答えを見る
正解: C
進化的アーキテクチャは、モノリス → モジュラーモノリス → マイクロサービスのように、段階的にアーキテクチャを進化させる考え方です。最初から最終形を目指さず、現在のコンテキスト(チーム規模、トラフィック)に合ったアーキテクチャを選び、必要に応じて移行します。フィットネス関数で品質を監視しながら進化させます。
結果
7問以上正解の場合
合格です。おめでとうございます。
Step 5「アーキテクチャの実践と評価」を完了しました。 次は Step 6「最終試験:アーキテクチャ設計チャレンジ」に進みましょう。
6問以下の場合
もう少し復習しましょう。
| 問題 | 復習セクション |
|---|---|
| Q1 | step5_4 アーキテクチャのトレードオフ |
| Q2 | step5_2 アーキテクチャフィットネス関数 |
| Q3 | step5_3 モジュラーモノリスという選択 |
| Q4 | step5_1 アーキテクチャの品質特性 |
| Q5 | step5_2 フィットネス関数 |
| Q6 | step5_4 トレードオフ |
| Q7 | step5_4 コンテキストに応じた判断 |
| Q8 | step5_4 段階的進化 |
Step 5 完了
お疲れさまでした。
学んだこと
- アーキテクチャの品質特性(8つの観点)
- フィットネス関数による自動検証
- モジュラーモノリスの構造と選択基準
- トレードオフの判断と記録
次のステップ
Step 6: 最終試験:アーキテクチャ設計チャレンジ(2時間)
今月学んだすべてを活かして、決済システムのアーキテクチャを設計する総合演習と卒業クイズです。
推定所要時間: 30分