現在のプログラム A, B に、在庫テーブルを更新した後に更新ログを出力する機能を追加する。この機能は共通モジュールで実装し、どのプログラムからも利用できるようにする。図は、プログラムの実装案である。案1も案2も、在庫テーブルを更新した後に更新ログが出力される。更新ログを出力する共通モジュールを呼び出す処理を、案1のように各プログラム中に直接記述するのではなく、案2のように呼び出し方の宣言を共通プログラムなどに記述することによって、開発の効率を高めたり、保守性を高めたりするプログラミング技法はどれか。

横断的関心事を宣言で織り込むのがアスペクト指向

システムアーキテクト試験2024年度 春期 午前II7/ソフトウェア方式設計 / プログラミングパラダイム

3列の実装案の比較図。〔現在〕列:プログラムA(在庫テーブルを更新する)とプログラムB(在庫テーブルを更新する)が独立して存在。〔案1〕列:プログラムA・プログラムBのそれぞれの中で「在庫テーブルを更新する/モジュールCを呼び出す」と直接記述し、共通のモジュールC(更新ログを出力する)を呼び出す。〔案2〕列:プログラムX(宣言:在庫テーブルを更新した後にモジュールCを呼び出す、という宣言のみを保持)があり、プログラムA・プログラムBは単に「在庫テーブルを更新する」と書くだけで、その後の呼び出しはプログラムXの宣言に従いモジュールC(更新ログを出力する)が呼ばれる。
3列の実装案の比較図。〔現在〕列:プログラムA(在庫テーブルを更新する)とプログラムB(在庫テーブルを更新する)が独立して存在。〔案1〕列:プログラムA・プログラムBのそれぞれの中で「在庫テーブルを更新する/モジュールCを呼び出す」と直接記述し、共通のモジュールC(更新ログを出力する)を呼び出す。〔案2〕列:プログラムX(宣言:在庫テーブルを更新した後にモジュールCを呼び出す、という宣言のみを保持)があり、プログラムA・プログラムBは単に「在庫テーブルを更新する」と書くだけで、その後の呼び出しはプログラムXの宣言に従いモジュールC(更新ログを出力する)が呼ばれる。

選択肢

正解と解説

正解: アスペクト指向プログラミング

アスペクト指向プログラミングは、ログ出力や認可のように複数のモジュールに横断して現れる関心事(横断的関心事)を切り出し、「どの処理の前後で何を実行するか」という宣言によって本来の処理へ織り込む技法である。各プログラムに呼出しを書き並べる必要がなくなるため、追加や変更が一箇所で済み、開発効率と保守性が高まる。

選択肢ごとの解説

出典:令和6年度 春期 システムアーキテクト試験 午前II 問7(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。