グルーコード()とは、コンピュータプログラミングにおいてプログラムの要求仕様の実現には一切寄与しないが、もともと互換性がない部分同士を結合するためだけに働くコードである。グルー () とはにかわなどの接着剤を意味する。グルーコードは既存のライブラリやプログラムの相互運用のために、例えばJava Native Interfaceなどの外部関数インターフェイスの形態で、あるいはオブジェクト関係マッピングを用いてオブジェクトとデータベースを対応付ける場合や、商用オフザシェルフプログラムを統合するような場合に現れる。
グルーコードの例 C言語やC++で書かれた既存コードを、他の言語(例えばLuaやPythonなどのスクリプト言語)で使用するためのコード(スクリプト言語実行環境へのC関数の登録など) C++で書かれた既存コードをC++で利用するが、仕様的に互換性がない部分を解決するためのラッパーとしてのC++コード
相互運用する対象コードの量に比例して、グルーコードも膨大になるが、一定のルールに沿って機械的に記述できる部分が大半であり、フレームワーク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:によって自動生成したり、省力化したりすることも多い。
COMのタイプライブラリやWindowsランタイムのメタデータWindows Metadata (WinMD) files - Windows UWP applications | Microsoft Learn、.NET FrameworkにおけるP/Invokeのように、グルーコードを記述する必要がなかったり、あるいはABI互換性のあるデータ型の定義やメソッドの宣言を記述したりするだけで、他の言語と相互運用できるソリューションもあるネイティブ相互運用性 - .NET | Microsoft Learn。
参考文献
University of Ottawa: Object Oriented Software Engineering, Glue Code Def. http://projects.camlcity.org/projects/dl/findlib-1.2.1/doc/guide-html/x341.html
脚注 出典
関連項目 グルー言語 スクリプト言語 シェルスクリプト SWIG Lua Squirrel グルー・ロジック 相互運用性#ソフトウェア 束縛 (コンピュータ)#言語束縛