QUIZ 30分

クイズの説明

Month 1「システム全体のアーキテクチャを設計しよう」の総合理解度を確認します。全10問、80%(8問)以上正解で合格です。


問題

Q1. ソフトウェアアーキテクチャの定義として最も適切なのはどれですか?

  • A) ソースコードのディレクトリ構造
  • B) 変更コストが高い、システムの基本的な構造に関する重要な設計判断
  • C) 使用するプログラミング言語の選択
  • D) データベースのテーブル設計
答えを見る

正解: B

ソフトウェアアーキテクチャとは、システムの基本的な構造と、それを構成する要素間の関係に関する重要な設計判断です。これらの判断は変更コストが高く、システム全体の品質特性に大きな影響を与えます。


Q2. Conway’s Lawの意味として正しいものはどれですか?

  • A) ソフトウェアの品質はテスト量に比例する
  • B) システムの設計は、それを作る組織のコミュニケーション構造を反映する
  • C) 開発速度は人数に比例する
  • D) 技術的負債は時間とともに自然に解消される
答えを見る

正解: B

Conway’s Lawは「組織はそのコミュニケーション構造を反映したシステム設計を生み出す」という法則です。例えば、3つのチームがあれば3つのサービスに分かれやすいということです。逆に、望ましいアーキテクチャに合わせてチーム構造を設計する「逆コンウェイ作戦」もあります。


Q3. 品質属性シナリオの構成要素に含まれないものはどれですか?

  • A) 刺激(Stimulus)
  • B) 環境(Environment)
  • C) 開発者の人数
  • D) 応答測定値(Response Measure)
答えを見る

正解: C

品質属性シナリオは、刺激源(Source)、刺激(Stimulus)、環境(Environment)、成果物(Artifact)、応答(Response)、応答測定値(Response Measure)の6つの要素で構成されます。開発者の人数はシナリオの構成要素ではありません。


Q4. 可用性99.95%と99.99%の年間許容ダウンタイムの差は約何時間ですか?

  • A) 約1時間
  • B) 約3.5時間
  • C) 約8時間
  • D) 約24時間
答えを見る

正解: B

99.95% = 年間約4.38時間のダウンタイム、99.99% = 年間約52.6分のダウンタイム。差は約3.5時間です。この差を埋めるには、マルチAZ構成、自動フェイルオーバー、冗長化など大きな追加投資が必要です。


Q5. CQRSパターンの最大のメリットはどれですか?

  • A) コードが単純になる
  • B) 読み取りと書き込みをそれぞれ独立して最適化・スケールできる
  • C) データベースが1つで済む
  • D) トランザクションが不要になる
答えを見る

正解: B

CQRS(Command Query Responsibility Segregation)の最大のメリットは、コマンド(書き込み)とクエリ(読み取り)を分離することで、それぞれのモデルとインフラを独立して最適化・スケールできる点です。


Q6. ATAMにおける「トレードオフ点」とは?

  • A) システムの中で最もパフォーマンスが良い箇所
  • B) あるアーキテクチャ判断が、ある品質属性にプラスで別の品質属性にマイナスとなる箇所
  • C) ステークホルダーが最も関心を持つ機能
  • D) コストが最も高い箇所
答えを見る

正解: B

トレードオフ点は、1つのアーキテクチャ判断が複数の品質属性に影響し、ある属性にはプラス、別の属性にはマイナスとなる箇所です。例えば、キャッシュ導入はパフォーマンスにプラスですが、データの鮮度(一貫性)にマイナスです。


Q7. ADRを書くべきタイミングとして不適切なのはどれですか?

  • A) データベースの選定
  • B) 変数名の命名規則の変更
  • C) 認証方式の選定
  • D) アーキテクチャパターンの採用
答えを見る

正解: B

ADRはアーキテクチャに影響を与える重要な決定を記録するものです。変数名の命名規則はコーディング規約の範疇であり、アーキテクチャ決定ではありません。データベース選定、認証方式、アーキテクチャパターンはいずれもADRの対象です。


Q8. C4モデルでLevel 3(Component図)を描く対象として最も適切なのはどれですか?

  • A) システム全体
  • B) 外部ユーザーとの関係
  • C) 特定のコンテナ(例:注文サービス)の内部構造
  • D) ソースコードのクラス図
答えを見る

正解: C

Level 3(Component図)は、特定のコンテナ(アプリケーション)の内部を構成する主要なコンポーネント(コントローラー、サービス、リポジトリ等)とその関係を示します。システム全体はLevel 1、外部関係もLevel 1、クラス図はLevel 4です。


Q9. 技術スタック選定で「ロックインリスク」が最も重要な考慮事項となるのはどの場面ですか?

  • A) プロトタイプ開発
  • B) ハッカソン
  • C) 5年以上運用予定の本番システム
  • D) 個人の学習プロジェクト
答えを見る

正解: C

ロックインリスクは、長期間運用するシステムで特に重要です。将来的にクラウドプロバイダーの変更や技術の世代交代が発生する可能性が高いため、抽象化レイヤーやオープン標準の活用が重要になります。


Q10. アーキテクチャ設計書のレビューで、最も本質的な質問はどれですか?

  • A) 「この技術は最新ですか?」
  • B) 「ページ数は十分ですか?」
  • C) 「この設計判断で実現できない品質要件は何ですか?」
  • D) 「図のフォントは統一されていますか?」
答えを見る

正解: C

アーキテクチャ設計で最も本質的なのは「何ができないか」「何を犠牲にしたか」を理解することです。すべてを同時に満たす完璧なアーキテクチャは存在しません。トレードオフを正直に認識し共有することが、良いアーキテクチャレビューの核心です。


結果

8問以上正解の場合

合格です! Month 1のミッション「システム全体のアーキテクチャを設計しよう」を完了しました。アーキテクチャ設計の基本的な思考法と手法を身につけました。次のMonth 2では、マイクロサービスへの移行を深掘りします。

7問以下の場合

もう少し復習しましょう。 特に間違えた問題の関連ステップを復習してください。アーキテクチャ設計は実践を通じて身につくスキルです。焦らず着実に進みましょう。