アスペクト指向プログラミング(aspect-oriented programming)

分類
テクノロジ系 システム開発技術
出る試験
応用情報
重要度
★★☆☆☆

ログ出力のように、あちこちに同じように現れる処理を1か所にまとめて書く考え方。ルールに合う場所へまとめて適用する。

もう少し詳しい説明

何が困っていたのか

ログ出力は、ほとんどのメソッドに同じように書くことになります。

困ること中身
同じ処理があちこちに散るメソッドの数だけ書く
書き忘れる1か所抜けると、そこだけ記録が残らない
直すときに全部を直す書き方を変えると、すべての場所を直すことになる
本来の処理が読みにくい業務の処理とログの処理が混ざる

クラスで分けても、この種の処理は分けきれません。 どのクラスにも現れるためです。こうした処理を横断的関心事と呼びます。

例中身
ログ出力誰が何をしたかを残す
処理時間の計測どこに時間がかかっているかを測る
権限の確認呼んでよい人かを確かめる
トランザクションの開始と確定まとまりとして確定させる

どう書くのか

決めること中身
適用する処理実行させたい内容(例:クラス名、メソッド名、引数をログに出す)
適用する場所のルールどのクラス・メソッドに当てはめるかの条件
除外する条件当てはめたくない場所の指定

ルールの条件には、クラス名やメソッド名に含まれる文字列のパターンが使えます。

命名規則が前提になる

名前で場所を選ぶので、名前の付け方に決まりが要ります。

すること中身
対象のクラスのメソッド名に、決めた文字列を含めるルールに当たるようにする
対象外のクラスのメソッド名には、その文字列を含めない誤って当たらないようにする

実装する側の制約が少なくなるように、ルールを決めます。 1つ1つのメソッドに印を付けて回る形にすると、書き忘れという元の問題に戻ります。

出してはいけないものを外す

一律に適用すると、出してはいけない情報まで記録されます。

外す対象理由
認証に関する情報パスワードがログに残る
個人情報を扱う箇所ログを見る人の範囲が広い

除外の指定が必要になるのは、このためです。 まとめて適用できることと、適用してよいかは別の話になります。

良い点と難しい点

良い点難しい点
同じ処理を1か所に書けるコードを読んでも、どこで何が適用されるか見えにくい
書き忘れが起きないルールの条件を誤ると、当たらない場所が出る
本来の処理が読みやすくなる名前の付け方に決まりが要る

処理の呼出しがコードに書かれていないので、追いかけにくくなります。 ルールの定義を見ないと分かりません。

試験ではこう出る

科目A(旧・午前)では、用語の意味が問われます。あちこちに現れる処理を1か所にまとめる、という部分が答えの軸です。

午後や応用情報(情報システム開発)では、ルールの定義のしかたが問われます。どのクラスを親に持つクラスの、何に文字列のパターンを含めるか、という空欄です。

出力しない箇所の理由を書かせる設問も出ます。個人情報や認証の情報が記録に残るため、という答え方になります。

関連する用語

オブジェクト指向
クラスで分ける考え方。それだけでは分けきれない処理を扱う
例外処理
異常を知らせる仕組み。ログ出力と組み合わせて使う
リファクタリング
動きを変えずに構造を整えること。重複をまとめる点で近い
構造化プログラミング
処理の分け方の基本

ミニクイズ

アスペクト指向プログラミングを導入する狙いとして、最も適切なものはどれか。

正解は 2番:ログ出力のように多くの場所に同じように現れる処理を、1か所にまとめて書けるようにする

ログ出力や処理時間の計測のように、あちこちのメソッドに同じように書くことになる処理があります。アスペクト指向プログラミングは、そうした処理を1か所に書き、ルールに合う場所へまとめて適用する考え方です。実行速度の最適化、継承関係の判定、SQLの自動生成は、いずれも別の仕組みが担うものです。

間違えた用語の復習リストを見る →

この分野をまとめて解く → システム開発とユーザーインタフェースのミニテスト(全40問)

最終更新:2026-11-09