戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2016年 春期 午後08


通信販売用 Webサイトにおける決済処理の設計に関する次の記述を読んで、設問 1~4 に答えよ。

 T社ではインターネットを用いた通信販売を行っている。通信販売用 Webサイト(以下、Webサイトという)で利用できる決済方法は、クレジットカードを利用して決済するクレジット決済だけであったが、顧客の利便性向上を目的に、新たに U 社が運営するコンビニエンスストア(以下、コンビニという)での支払(以下、コンビニ決済という)の導入を検討することになった。  顧客は、購入する商品を選択し、顧客IDを入力して商品配送先を指定した後、決済方法選択画面から希望する決済方法を選択することが可能となる。  Webサイトでのクレジット決済処理の処理内容を表1に、コンビニ決済処理の処理内容を表 2、表3に示す。
応用情報技術者試験(平成28年度 午後 問08 表01)
応用情報技術者試験(平成28年度 午後 問08 表02)
応用情報技術者試験(平成28年度 午後 問08 表03)
〔アクティビティ図〕  現在のアクティビティ図を基に、コンビニ決済処理(リアルタイム処理)を加えたアクティビティ図を図1に、入金データチェック処理のアクティビティ図を図2に、入金期限チェック処理のアクティビティ図を図3に示す。
応用情報技術者試験(平成28年度 午後 問08 図01)
応用情報技術者試験(平成28年度 午後 問08 図02)
応用情報技術者試験(平成28年度 午後 問08 図03)
〔クラス図〕  現在のクラス図を基に、コンビニ決済処理を加えた決済処理に関連するクラス図を図4に示す。
応用情報技術者試験(平成28年度 午後 問08 図04)
〔入金期限チェック処理の処理タイミング〕  図2の入金データチェック処理と図3の入金期限チェック処理の処理タイミングについて考察する。  日付が変わった後、入金期限チェック処理の前には必ず入金データチェック処理を実施する必要がある。これは、①入金期限チェック処理が入金データチェック処理よりも先に実施された場合に発生する不具合を防止するためである

設問1

図1、2中のabに入れる適切な処理内容を20字以内で答えよ。また、図3中のcdに入れる適切な条件を15字以内で答えよ(aとbは順不同)。

模範解答

a:配送センタへ商品の発送を指示する b:顧客に商品の発送を通知する c:入金期限日を過ぎている d:入金期限日を過ぎていない

解説

解答の論理構成

  • 表3「コンビニ決済処理の処理内容(バッチ処理)」の“商品発送”には
    「Webサイトは、配送センタに商品の発送を指示し、同時にメールで顧客に商品の発送を通知する。」
    とあります。
    この一文が2つの並行処理(フォーク)に相当し、図2の ab に分割されます。
    – 「配送センタに商品の発送を指示」→ a
    – 「顧客に商品の発送を通知」→ b
    よって a と b は提示のとおりとなります(順不同可)。
  • 表3“購入取消”の記述は
    「Webサイトは、入金期限日が過ぎても入金されていない購入情報を取り消して、メールで顧客に通知する。」
    です。図3の c はこの“取消ルート”に入る条件なので
    「入金期限日を過ぎている」となります。
  • “入金期限確認”後に“取消”しない場合は、まだ期限内であることを示します。
    したがって dc の否定形で
    「入金期限日を過ぎていない」となります。

誤りやすいポイント

  • 表現を短縮し過ぎて「発送指示」「発送通知」など主語・対象を落としてしまう。
  • c を「入金なし」だけにしてしまい、“期限を過ぎた”条件を欠落させる。
  • d を「入金あり」と誤記し、期限内でも未入金というケースを取り逃す。

FAQ

Q: a と b の順序は答案に影響しますか?
A: 問題文には「a と b は順不同」とあるため、どちらを a/b にしても減点されません。
Q: 「入金なし」だけでは c の条件として不十分ですか?
A: 不十分です。「入金期限日が過ぎても入金されていない」という二つの要素が揃って初めて取消処理に入るため、期限の超過を必ず含める必要があります。
Q: d に「期限内」と書いても正しいですか?
A: 意味は通じますが、設問は“条件”を求めています。表現をそろえて「入金期限日を過ぎていない」とする方が適切です。

関連キーワード: フォークジョイン, バッチ処理, 入金確認, 取消処理, アクティビティ図

設問2

図4中のefに入れる適切な操作名を解答群の中から選び、記号で答えよ。
解答群  ア:カード情報送信  イ:カード情報入力  ウ:決済情報通知  エ:購入取消  オ:コンビニ支払  カ:再決済依頼

模範解答

e:力 f:エ

解説

解答の論理構成

  1. クラス図の位置付け確認
    • 図4で [ e ] は “クレジット購入情報” に属する操作、[ f ] は “コンビニ購入情報” に属する操作である。
    • いずれも “購入情報” 派生クラスに実装されるので、購入後に Webサイトが顧客へ行うフォローアップ処理が該当すると考える。
  2. “[ f ]” の決定 ― コンビニ購入情報特有の処理
    • 表3「入金期限チェック」には、入金期限を過ぎている場合に “購入取消” を実施し、顧客へメール通知すると記載されている。
    • しかも “入金期限確認()” という操作が既に同クラスに定義済みであるため、その後段として “購入取消” を実装するのが自然である。
    • よって [ f ]= 「エ:購入取消」。
  3. “[ e ]” の決定 ― クレジット購入情報特有の処理
    • 表1「クレジット決済処理の処理内容」では、カード利用不可時に “再決済依頼” を行うと明示されている。
    • カード情報の入力や送信は “クレジット決済” クラス側(決済手続)で実装するのが責務分担として妥当で、フォローアップである “再決済依頼” は “クレジット購入情報” クラスが保持する方が適合する。
    • 選択肢を照合すると、再決済を促す動作は「カ:再決済依頼」が一致する。
    • よって [ e ]= 「カ:再決済依頼」。
  4. 結論
    • e:カ
    • f:エ

誤りやすいポイント

  • “カード情報送信” や “カード情報入力” を [ e ] に選んでしまう
    → これらはクレジット決済手続きそのものなので “クレジット決済” クラス側の責務である。
  • “[ f ]” を “決済情報通知” と誤認する
    → “決済情報通知” は表2でリアルタイムに行われる処理であり、入金期限後のバッチ処理とは無関係。
  • クラス図の黒ひし形(コンポジション)に着目せず、購入情報クラスにどの業務イベントがひも付くかを見落とす。

FAQ

Q: “再決済依頼” はなぜ購入情報クラスに入るのですか?
A: 購入情報は顧客と注文の状態を保持します。カード利用不可という状態変化に対して「再決済を促す」というフォローアップが必要になるため、購入情報側に持たせると状態遷移を一元管理できます。
Q: “購入取消” を決済クラスに入れない理由は?
A: “購入取消” は商品・数量など購入データ自体の無効化であり、決済手段に依存しない購入情報のライフサイクル管理に属します。決済クラスはあくまで支払処理のインターフェースを提供する責務です。
Q: もし他の決済方法が増えた場合、この設計の拡張性は?
A: “購入情報” を継承した新しい購入情報クラスと、“決済” を継承した新しい決済クラスを追加するだけで済むため、既存クラスを修正せずに機能拡張できます(オープン・クローズド原則)。

関連キーワード: クラス図, コンポジション, 責務分担, 状態遷移, バッチ処理

設問3

図4中の決済クラスの操作“決済手続”は抽象操作(抽象メソッド)であり、処理の実体を含まない。そのサブクラスであるコンビニ決済クラスの“決済手続”に含まれる処理名称を表1〜3の中から選び、全て答えよ。

模範解答

決済番号取得、決済情報通知

解説

解答の論理構成

  1. クラス図の前提
    決済クラスの操作“決済手続”は抽象操作で、サブクラスが具体的処理を実装します。問題文には「図4中の決済クラスの操作“決済手続”は抽象操作(抽象メソッド)であり、処理の実体を含まない。」と明記されています。
  2. コンビニ決済クラスが担当する処理範囲
    システム側が実行する処理だけが“決済手続”の実装対象になります。顧客が店舗で行う行為や、ユーザ操作そのものはクラス内のロジックではありません。
  3. 表2の処理名称を整理
    表2には次の 4 つの処理名称が列挙されています。
    ・「決済方法選択」
    ・「決済番号取得」
    ・「決済情報通知」
    ・「コンビニ支払」
  4. 含める/含めないの判定
    • 「決済方法選択」:購入フロー共通の入口であり、スーパークラスまたは画面制御が担当。サブクラス固有ではないので除外。
    • 「決済番号取得」:U社へ購入情報を送信し決済番号を取得する処理であり、システム内ロジック。→ 含める。
    • 「決済情報通知」:取得した決済番号をメールで顧客へ通知する処理であり、システム内ロジック。→ 含める。
    • 「コンビニ支払」:顧客が店舗で行う行為であり、クラスのロジック外。→ 除外。
  5. 結論
    以上から、コンビニ決済クラスの“決済手続”に含まれる処理名称は
    「決済番号取得」「決済情報通知」
    となります。

誤りやすいポイント

  • 「決済方法選択」もサブクラスが処理すると誤解しやすい。実際には決済種別を選択する UI ロジックであり、共通部品または親クラス側で扱います。
  • 「コンビニ支払」をシステム処理と見做してしまう。店頭支払は顧客アクションであり、プログラム内で実装できる処理ではありません。
  • 表1~表3の区分を見落とし、クレジット決済の処理名称を混在させるケース。

FAQ

Q: 「決済方法選択」を入れてはいけない明確な理由は?
A: 「決済方法選択」は顧客が画面で選ぶ操作であり、決済種別に依存しない共通フローだからです。抽象操作“決済手続”は各サブクラスが固有に実装する部分のみを対象にします。
Q: メール送信も“決済手続”に含めて良いのですか?
A: はい。「決済情報通知」は表2に「Webサイトは、U社から回答された決済番号と金額、入金期限日の情報…をメールで顧客に通知する。」と提示されており、システムが実行する処理として実装する必要があります。
Q: 「コンビニ支払」を除外すると、入金後の処理はどこで扱いますか?
A: 入金後に行うのは表3のバッチ処理「入金データチェック」です。こちらは“決済手続”とは別のバッチジョブで実装されます。

関連キーワード: アクティビティ図, クラス図, 抽象メソッド, 責務分割, リアルタイム処理

設問4

本文中の下線①の不具合について、その内容を30字以内で述べよ。

模範解答

入金されている購入情報が取り消されてしまう。

解説

解答の論理構成

  1. 原因となる処理順の記述
    問題文には「“入金期限チェック処理”の前には必ず“入金データチェック処理”を実施する必要がある」とあり、その理由として「“入金期限チェック処理”が“入金データチェック処理”よりも先に実施された場合に発生する不具合を防止するため」と明示されています。
  2. “入金データチェック処理”の役割
    表3には「Webサイトは、U社から1時間に1回送信される入金データファイルを1件ずつ読み込み、入金データの決済番号がWebサイトで保持している決済番号と一致するかどうかを確認する。」とあり、この処理で支払済み情報をシステムに反映させます。
  3. “入金期限チェック処理”の動作
    同じく表3に「Webサイトは、入金期限日が過ぎても入金されていない購入情報を取り消して、メールで顧客に通知する。」とあります。ここでは“入金されていない”かどうかを判定します。
  4. 不具合の発生タイミング
    支払済みなのにまだファイル読込前の場合、システム上は未入金と認識されるため “購入情報” が誤って取消対象になります。
  5. 結論
    したがって不具合の内容は「入金されている購入情報が取り消されてしまう。」となります。

誤りやすいポイント

  • “入金データチェック処理”をリアルタイム処理と思い込み、バッチ順序の重要性を見落とす。
  • 「取消」=キャンセルメール送信まで完了するため、その後の復旧コストを軽視しやすい。
  • エラーファイル作成と購入取消を混同し、誤って「エラー扱いになる」と答えてしまう。

FAQ

Q: なぜファイル読込は1時間に1回なのですか?
A: 問題文には頻度だけが示され、設計上の理由は示されていませんが、実務では店舗側集計や回線負荷を考慮して一定間隔のバッチ取得が選ばれることが多いです。
Q: “入金データチェック処理”と“入金期限チェック処理”を並列実行してもロック制御で防げませんか?
A: ロックで同時更新は防げても「未入金と判断して取消」というロジック自体が先行してしまうため整合性は保証できません。処理順序を固定する方が確実です。
Q: エラーファイルに書き込まれたデータはどう扱いますか?
A: 本問では記載がありませんが、通常はオペレータが内容を確認し、決済番号誤りや重複などを個別に調査・修正します。

関連キーワード: バッチ処理, データ整合性, 同期制御, アクティビティ図, トランザクション
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について