グルーコード
グルーコード(英: glue code)とは、コンピュータプログラミングにおいてプログラムの要求仕様の実現には一切寄与しないが、もともと互換性がない部分同士を結合するためだけに働くコードである。グルー (glue) とはにかわなどの接着剤を意味する。グルーコードは既存のライブラリやプログラムの相互運用のために、例えばJava Native Interfaceなどの外部関数インターフェイスの形態で、あるいはオブジェクト関係マッピングを用いてオブジェクトとデータベースを対応付ける場合や、商用オフザシェルフプログラムを統合するような場合に現れる。
グルーコードの例
編集- C言語やC++で書かれた既存コードを、他の言語(例えばLuaやPythonなどのスクリプト言語)で使用するためのコード(スクリプト言語実行環境へのC関数の登録など)
- C++で書かれた既存コードをC++で利用するが、仕様的に互換性がない部分を解決するためのラッパーとしてのC++コード
相互運用する対象コードの量に比例して、グルーコードも膨大になるが、一定のルールに沿って機械的に記述できる部分が大半であり、フレームワーク[1]やライブラリ[2]によって自動生成したり、省力化したりすることも多い。
COMのタイプライブラリやWindowsランタイムのメタデータ[3]、.NET FrameworkにおけるP/Invokeのように、グルーコードを記述する必要がなかったり、あるいはABI互換性のあるデータ型の定義やメソッドの宣言を記述したりするだけで、他の言語と相互運用できるソリューションもある[4]。
参考文献
編集脚注
編集出典
編集- ^ Entity Framework のツール - Visual Studio (Windows) | Microsoft Learn
- ^ GitHub - ThePhD/sol2: Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
- ^ Windows Metadata (WinMD) files - Windows UWP applications | Microsoft Learn
- ^ ネイティブ相互運用性 - .NET | Microsoft Learn