本文へスキップ

メタプログラミングとは?

めたぷろぐらみんぐ

メタプログラミングとは、プログラムが自分自身や他のプログラムを動的に生成・変換・操作する技法のことで、コードによってコードを書くことを可能にするプログラミングのパラダイムです。

メタプログラミング(Metaprogramming)とは、プログラム実行時または翻訳時に、別のプログラムコードを生成・解析・変換・操作するプログラミング技法の総称です。「メタ(meta)」は「〜について」を意味し、プログラム自身を対象とするプログラムという概念を表します。

メタプログラミングには大きく次のようなアプローチがあります。

  • リフレクション:プログラムが実行時に自分自身の構造(クラス・メソッド・属性など)を調べ、動的に変更する仕組み(JavaやPythonで広く使われる)
  • マクロ:コンパイル前にソースコードを変換・展開する仕組み(LispやRustのマクロが代表例)
  • コード生成:テンプレートや設定ファイルから自動的にソースコードを生成する手法(ORMやプロトコルバッファなど)
  • DSL(ドメイン固有言語)の構築:特定の問題領域に特化した小さな言語をプログラム内で定義する

実用例として、RailsフレームワークのActiveRecordはリフレクションとメタプログラミングを多用し、データベースのカラム定義からゲッター・セッターや検索メソッドを実行時に自動生成します。Pythonのデコレータ、Rubyのmethod_missingによる動的メソッド定義なども広く知られた例です。

メタプログラミングを使うとボイラープレートコードを削減し柔軟性を高められる反面、コードの可読性が下がりデバッグが難しくなる側面もあるため、適切な場面での活用が重要です。

使い方・例文

RubyのRailsフレームワークでは、モデルにカラム名に対応したメソッドが自動的に追加される仕組みにメタプログラミングが活用されており、フレームワーク設計や動的なAPI生成の解説でよく登場します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語