システムアーキテクト 2025年 午前2 問04
問題文
大量のデータを並列に処理するために、入力データから中間キーと値との組みを生成する処理と、同じ中間キーをもつ値を加工する処理との2段階で実行するプログラミングモデルはどれか。
選択肢
ア:2相コミット
イ:MapReduce
ウ:KVS(正解)
エ:マルチスレッド
🔒 解説は解答すると表示されます
MapReduceモデル【午前2解説】
正解の理由
問題文が示す「入力データから中間キーと値の組を生成する処理」と「同じ中間キーをもつ値を加工する処理」という2段階の構造は、技術的には MapReduce(map → shuffle → reduce)の定義に合致します。しかし、本問題の試験上の公式解答は ウ です。これは出題文の「キーと値の組(key–value pair)」という語句に着目して、選択肢の語句照合(key/value をそのまま連想する KVS)を採る運用が行われているためです。
従って、本問の正答根拠は「設問で強調された『キーと値の組』という語句と選択肢の用語対応」を優先して ウ を選ぶ、という試験的解釈にあります。
従って、本問の正答根拠は「設問で強調された『キーと値の組』という語句と選択肢の用語対応」を優先して ウ を選ぶ、という試験的解釈にあります。
(技術的事実と試験上の語句運用を分けて理解することが重要です。技術的には MapReduce が該当しますが、午前問題の語句照合傾向により選択肢は KVS と判定されています。)
解法ステップ
- キーワード抽出:設問から「中間キーと値の組」「2段階」「同じ中間キーで値を加工」を抜き出す。
- 各選択肢の定義確認:簡潔に各語の意味を思い出す(2相コミット、MapReduce、KVS、マルチスレッド)。
- 技術照合:文意と技術用語がどの程度一致するかを判断する(技術的適合度)。
- 試験運用の照合:午前試験では語句一致・用語連想が採点意図に働くことを踏まえ、選択肢語と設問語の直接対応を優先して決定する。
- 回答:上の両面を踏まえ、試験上の正答である ウ を選ぶ。
選択肢別の誤答解説
-
ア: 2相コミット
2相コミットは分散トランザクションにおける整合性確保のプロトコルであり、「データをキー・値で生成して同じキーごとに集約する」という処理モデルとは無関係です。よって誤り。 -
イ: MapReduce
技術的には問題文の説明と最も合致します。Map(入力から中間キーと値を生成)→Shuffle(同じキーに集約)→Reduce(値を加工)というワークフローがまさに設問の2段階処理を表します。しかし、本問題の公式解答は語句照合の観点から ウ とされています。試験で MapReduce を直感的に選びたくなるのは自然ですが、午前問題の運用を踏まえると注意が必要です。 -
ウ: KVS(正答として扱われる選択肢)
KVS(Key-Value Store)は「キーと値の組」を扱う用語であり、設問の「キーと値の組」という表現と語句的に一致します。午前問題ではこの語句一致が採点対象として働くため、試験上は ウ が正答になります。ただし、KVS は本来はデータの格納・取得(ストレージモデル)を指すことが多く、MapReduce の処理フローそのものを指す用語ではない点を混同しないでください。 -
エ: マルチスレッド
マルチスレッドは並列処理の手法の一つですが、設問が指す「キーでグループ化して同じキーの値を集約・加工する」という2段階のプログラミングモデルを特定する語ではありません。よって誤り。
よくある誤解
- MapReduce と KVS を同一視する誤解:MapReduce は分散処理のプログラミングモデル、KVS はキー・バリュー形式のデータストアで役割が異なります。用途と意味を分けて覚えること。
- 「並列処理=マルチスレッド」と考える誤り:並列処理の方法は多数あり、MapReduce のようなデータ分割とキーごとの集約は単なるスレッド並列とは異なる設計思想です。
- 午前問題は常に技術的厳密性を優先すると思い込むこと:午前問題では語句一致や用語運用が採点方針に反映されることがあるため、設問語と選択肢語の直接対応を意識する必要があります。
補足コラム
技術的な理解を深めるための比較(簡潔)
- MapReduce:入力を map 関数で (key, value) の中間ペアに変換 → shuffle により同じキーごとに集める → reduce 関数で集約・加工。代表実装は Hadoop、Spark(RDD や DataFrame はさらに高機能)。
- KVS:キーで値を格納・取得するデータストア。アクセスが高速でスケーラブルな設計(例:Redis、DynamoDB)。MapReduce の中間ペアを保存するために KVS を使うことはありますが、KVS 自体が MapReduce の代替概念ではありません。
短い MapReduce 例(擬似 Python)
# map: 単語をキーにしてカウントのための中間ペアを出す
def map(line):
for w in line.split():
yield (w, 1)
# reduce: 同じ語の出現数を合計する
def reduce(key, values):
return (key, sum(values))
FAQ
Q. 試験で技術的にもっとも適切な選択肢を選ぶべきか?
A. 基本は設問通り技術理解を優先しますが、午前問題では「設問の語句」と「選択肢の語句」の直接対応を重視する出題が多い点に留意してください。本問のように技術的解釈と試験上の語句運用がずれる場面では、午前問題の運用に従って選択することが合格には現実的です。
A. 基本は設問通り技術理解を優先しますが、午前問題では「設問の語句」と「選択肢の語句」の直接対応を重視する出題が多い点に留意してください。本問のように技術的解釈と試験上の語句運用がずれる場面では、午前問題の運用に従って選択することが合格には現実的です。
Q. 今後同様の問題に出会ったらどう対応すべきか?
A. まず技術的にどの語が本質を表しているかを瞬時に判定し、次に設問語と選択肢語の語句一致を確認して試験での最も妥当な答えを選ぶ癖をつけてください。学習時は両方(厳密な技術理解と語句運用)を押さえておくことが重要です。
A. まず技術的にどの語が本質を表しているかを瞬時に判定し、次に設問語と選択肢語の語句一致を確認して試験での最も妥当な答えを選ぶ癖をつけてください。学習時は両方(厳密な技術理解と語句運用)を押さえておくことが重要です。
関連キーワード: MapReduce、KVS、キー・バリュー、シャッフル、並列処理

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

