SAシステムアーキテクト試験 午前Ⅱ

令和7年度春期 システムアーキテクト 午前Ⅱ 問2

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

オブジェクト指向設計における設計原則の説明のうち,開放・閉鎖原則のものはどれか。

選択肢

  1. ア
    クラスにもたせる役割は一つだけにするべきであり,複数の役割が存在する場合にはクラスを分割する。
  2. イ
    クラスを利用するクライアントごとに異なるメソッドが必要な場合は,インタフェースを分ける。
  3. ウ
    上位のモジュールは,下位のモジュールに依存してはならない。
  4. エ
    モジュールは,機能の追加や変更が可能であって,その影響を他のモジュールに及ぼしてはならない。
解き方のヒントを見る

設計原則は『何を守る目的か』で見分ける

設計原則は名前が似ていても、どのような変更や問題を避けるために定められたかが異なります。用語の印象や言葉の響きで判断せず、各原則が本来防ごうとしている困りごとを自分の言葉で言えるかを確かめながら検討しましょう。

この問題で問われていること

確認する観点は一つに絞ります。示されている内容が、設計上のどんな不都合を避けるための考え方なのかという『目的』です。キーワードの一致だけで結び付けず、目的を先に言語化してから原則の名称と照らし合わせてください。

視点

オブジェクト指向の設計原則は、どれも変更に強く理解しやすいソフトウェアを目指すという大きな目標を共有しています。そのため互いの説明が似て見えやすく、違いは『どの種類の不都合に着目しているか』に表れます。名称から連想される語句に頼るのではなく、その原則を破ったときに何が起きるかを想像すると、目的の違いを整理しやすくなります。

確認ポイント

  • 各原則を守らなかった場合に起こる不都合を、名称を見ずに一文で言えるか
  • 示された内容の目的が、その不都合の回避と本当に対応しているか
  • 名称の字面と似た語句があるというだけで対応付けていないか
正解と解説を見る

正解

エ

解説

開放・閉鎖原則は,モジュールを機能追加や変更に対して拡張しやすくしながら,既存モジュールの修正や影響をできるだけ抑える考え方です。

理由

開放・閉鎖原則は,ソフトウェアのモジュールを拡張に対して開き,変更に対して閉じるという考え方です。機能の追加や変更を行っても,既存の他モジュールへ影響を広げない設計を目指す。

比較

アは単一責任原則,イはインタフェース分離の原則,ウは依存性逆転の原則に関する説明です。したがって,変更の影響を他のモジュールに及ぼさないという説明が開放・閉鎖原則に該当する。

選択肢ア

これは不正解だよ。クラスにもたせる役割を一つに限定し,複数の役割がある場合に分割するという説明は,クラスの責務を分ける単一責任原則を表している。機能追加や変更の影響を他のモジュールへ広げないという開放・閉鎖原則の中心的な説明ではない。

選択肢イ

これは不正解だよ。クラスを利用するクライアントごとに必要なメソッドが異なるとき,インタフェースを分けるという説明は,利用者に不要な依存を強いないインタフェース分離の原則である。モジュールの拡張と変更の影響範囲を扱う原則とは異なる。

選択肢ウ

これは不正解だよ。上位のモジュールが下位のモジュールに依存してはならないという説明は,抽象に依存するよう構成する依存性逆転の原則に関するものである。機能追加や変更時に既存モジュールへの影響を抑える開放・閉鎖原則そのものではない。

選択肢エ(正解)

これは正解だよ。モジュールは機能の追加や変更が可能でありながら,その影響を他のモジュールに及ぼしてはならないという説明は,拡張には開かれ,変更には閉じるという開放・閉鎖原則に一致する。

学習のポイント

SOLID原則の各説明を,責務・インタフェース・依存関係・変更容易性で整理する。

出典:独立行政法人 情報処理推進機構(IPA)令和7年度春期 システムアーキテクト試験 午前Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針