クイズの説明
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問以下の場合
もう少し復習しましょう。 特に間違えた問題の関連ステップを復習してください。アーキテクチャ設計は実践を通じて身につくスキルです。焦らず着実に進みましょう。