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

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

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

問題

デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。
コンテキストが帳票出力ストラテジを集約し,PDF帳票出力ストラテジとHTML帳票出力ストラテジが帳票出力ストラテジを継承するクラス図。
コンテキストが帳票出力ストラテジを集約し,PDF帳票出力ストラテジとHTML帳票出力ストラテジが帳票出力ストラテジを継承するクラス図。

選択肢

  1. ア
    クライアントは,使用したいフォーマットに対応する,帳票出力ストラテジクラスのサブクラスを意識せずに利用できる。
  2. イ
    新規フォーマット用のアルゴリズムの追加が容易である。
  3. ウ
    帳票出力ストラテジクラスの中で,どのフォーマットで帳票を出力するかの振り分けを行っている。
  4. エ
    帳票出力のアルゴリズムは,コンテキストクラスの中に記述する。
解き方のヒントを見る

クラスごとの責務と依存の向きを整理する

デザインパターンを扱う設計問題では、パターン名を覚えているかよりも、登場する各クラスが何を担当し、どのクラスを知っているかを整理できるかが問われやすいです。与えられた情報から役割分担を自分の言葉で書き出してから判断しましょう。

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

注目する観点は一つ、クラス同士の依存の向きです。どのクラスが相手を生成・保持・呼び出しているのか、逆に相手の存在を知らずに済んでいるのはどれかを確かめると、構造の意図と各要素の役割が読み取りやすくなります。

視点

クラス設計の構造を読むときは、クラス名や見た目の配置から判断せず、関係の種類と向きを一本ずつ確認するのが基本です。ある要素が別の要素に依存しているとき、依存される側は依存する側の都合を知らないことが多く、この非対称性が設計上の狙いを表します。抽象的な型に依存しているのか、具体的な型に依存しているのかを区別すると、どこを差し替えやすくしようとしているのかが見えてきます。

確認ポイント

  • 各クラス(またはインタフェース)の責務を、それぞれ一文で説明できるか確認する
  • クラス間の関係ごとに、どちらがどちらを知っている(参照している)のか向きを確認する
  • 依存している先が抽象的な型か具体的な型かを区別し、その違いが構造の意図とどう結びつくか確認する
正解と解説を見る

正解

イ

解説

ストラテジパターンは、処理を実行する側と、形式ごとに異なるアルゴリズムを分離する設計です。図では帳票出力ストラテジを共通の型とし、PDF用やHTML用のサブクラスが具体的な出力処理を実装しているため、新しい形式の追加が容易になる。

理由

帳票出力ストラテジクラスが帳票出力の共通インタフェースを示し、PDF帳票出力ストラテジやHTML帳票出力ストラテジが具体的なアルゴリズムを担当する。この構造なら、既存の利用側を大きく変更せず、新しい形式のクラスを追加できる。

比較

ストラテジパターンでは、コンテキストは選択されたストラテジを利用し、形式ごとの処理そのものは具体的なストラテジに任せる。したがって、形式の振り分けや出力アルゴリズムをコンテキストや抽象ストラテジに集中させる設計ではありません。

選択肢ア

これは不正解だよ。図ではPDF用やHTML用の具体的なストラテジクラスが存在し、利用するストラテジの選択や設定が必要になる。したがって、クライアントが対応するサブクラスを全く意識せずに利用できるという説明は、この図の構造からは導けない。

選択肢イ(正解)

これは正解だよ。帳票出力ストラテジを共通の型として定義し、PDFやHTMLの出力アルゴリズムをサブクラスに分離している。新しいフォーマットを追加する場合も、新たなストラテジクラスを実装すればよく、既存の処理への影響を抑えられる。

選択肢ウ

これは不正解だよ。図の帳票出力ストラテジクラスは共通の操作を定義する役割であり、PDFやHTMLの具体的な出力処理はそれぞれのサブクラスが担当する。したがって、どの形式で出力するかの振り分けをストラテジクラス内で行うという説明は適切ではない。

選択肢エ

これは不正解だよ。コンテキストはストラテジを保持して利用する側のクラスであり、帳票出力の形式ごとに異なるアルゴリズムを記述する場所ではない。具体的な出力アルゴリズムは、PDFやHTMLに対応する各ストラテジサブクラスに分けて記述する。

学習のポイント

共通処理と可変アルゴリズムの分離、および差し替えや追加のしやすさを確認する。

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

関連する過去問一覧

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