リフレクションとは?
りふれくしょん
リフレクションとは、プログラムの実行中にクラスやメソッドの構造を動的に調べたり操作したりできるプログラミング技術です。
リフレクション(Reflection)とは、プログラムが実行時(ランタイム)に自分自身の構造を調べたり、動的にクラスのインスタンス化・メソッド呼び出し・フィールドへのアクセスを行ったりできる機能のことです。IT・ソフトウェア開発の分野で広く使われる概念です。
通常のプログラムはコンパイル時に型や構造が決まっていますが、リフレクションを使うと実行中にそれらの情報を取得・変更できます。たとえばJavaやC#、Pythonなどの言語では、クラス名・メソッド名・引数の型といったメタ情報を実行中に取り出すことができます。
リフレクションが活用される主な場面は以下のとおりです。
- フレームワーク(依存性注入・ORM など)がクラスを動的に生成・操作する場合
- テストツールがプライベートメソッドにアクセスして検証する場合
- シリアライズ・デシリアライズ(JSONとオブジェクトの相互変換)の自動化
- プラグインシステムで実行時にモジュールを読み込む場合
一方でリフレクションはコードの可読性を下げたり、コンパイル時の型チェックが効かなくなったりするデメリットもあります。また実行速度が通常の呼び出しより遅くなる場合があるため、パフォーマンスが重要な箇所では慎重に使う必要があります。フレームワーク内部やツール開発では非常に有用な機能です。
使い方・例文
JavaのSpringフレームワークでは、リフレクションを使って@Autowiredアノテーションが付いたフィールドに自動的に依存オブジェクトを注入しています。Pythonでもgetattr()関数によってオブジェクトの属性名を文字列で動的に取得・呼び出せます。
この用語をシェア
最終更新: