SAシステムアーキテクト試験 午前Ⅱ
令和7年度春期 システムアーキテクト 午前Ⅱ 問5
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アあるオブジェクトの状態が変化したときに,それに依存する全てのオブジェクトに自動的に通知する。
- イある機能をもつオブジェクトを新しいオブジェクトでラップし,機能を動的に拡張する。
- ウあるクラスのインスタンスが一つしか存在しないことを保証する。
- エ配列や集合のような実装の異なるコンテナに対し,同一のインタフェースでアクセスする。
解き方のヒントを見る
設計上の課題と目的の対応づけ
デザインパターンを学ぶ際は、名称や構造図を覚えるよりも、その設計がどのような困りごとを解消するために考え出されたのかを先に捉えることが大切です。本問でも、問われている場面の中で何が課題になっているかを一つに絞って考えましょう。
この問題で問われていること
問われているのは、ある設計上の工夫が「何を実現したくて」採用されるのかという目的の側面です。仕組みの細部よりも、その工夫がなければどのような不都合が生じるのか、何を変更しやすくしたいのかという観点から整理すると判断の軸が定まります。
視点
デザインパターンは、オブジェクト指向設計で繰り返し現れる問題と、その解決の型に名前を付けて整理したものです。一般に「どんな文脈で」「どんな問題があり」「どう解決し」「その結果どうなるか」という要素で説明されます。適用目的はこのうち「問題」の要素に対応します。構造の見た目が似ていても意図が異なることがあるため、まずは「なぜ使うのか」を軸に理解することが学習の基本になります。
確認ポイント
- その設計を採用しなかった場合に、どのような不都合や手間が生じるのかを自分の言葉で説明できるか
- 仕組みの説明(どう実現するか)と目的の説明(なぜ使うか)を区別して捉えられているか
- 名称の響きや構造の見た目だけで判断せず、解消したい課題と結び付けて考えられているか
正解と解説を見る
正解
ア
解説
Observerパターンは、あるオブジェクトの状態変化を監視する複数のオブジェクトへ通知し、変化に応じた処理を連動させるための設計パターンです。
理由
Observerパターンでは、状態を管理する側と、その状態変化を受け取る側を分離し、変化が起きた際に依存する側へ通知する。これにより、監視対象の変更を利用側へ連動させられる。
比較
機能をラップして動的に拡張するのはDecorator、インスタンスを一つに制限するのはSingleton、異なるコンテナを同じ操作で扱うのはIteratorの役割です。
選択肢ア(正解)
これは正解だよ。Observerパターンは、状態をもつオブジェクトと、それを監視する複数のオブジェクトを分離して構成する。状態が変化した際には、監視側へ通知して処理を連動させられるため、この説明はObserverパターンの目的に合っている。
選択肢イ
これは不正解だよ。既存のオブジェクトを新しいオブジェクトでラップし、元のインタフェースを保ちながら機能を動的に追加するのはDecoratorパターンの説明である。状態変化を監視するオブジェクトへ通知するObserverパターンの役割とは異なる。
選択肢ウ
これは不正解だよ。あるクラスのインスタンスが一つしか存在しないことを保証するのはSingletonパターンの役割である。Observerパターンはインスタンス数を制限するものではなく、状態をもつ側と依存する側の通知関係を扱う。
選択肢エ
これは不正解だよ。配列や集合など、実装の異なるコンテナを同じインタフェースで順に扱えるようにするのはIteratorパターンの説明である。Observerパターンが扱うのは、コンテナへのアクセス方法ではなく状態変化の通知である。
学習のポイント
Observer、Decorator、Singleton、Iteratorの役割を区別して覚える。
出典:独立行政法人 情報処理推進機構(IPA)令和7年度春期 システムアーキテクト試験 午前Ⅱ 問5(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針