プログラミングやソフトウェア設計において、バインディングとは、プログラミング言語が外部ライブラリやオペレーティングシステムサービス(その言語にネイティブではないもの)を使用できるようにするために特別に作成されたグルーコードを提供するアプリケーションプログラミングインターフェース(API)のことです。
バインディングとは一般的に、あるものを別のものにマッピングすることを指します。ソフトウェアライブラリの文脈では、バインディングは2つのプログラミング言語を橋渡しするラッパーライブラリであり、ある言語用に書かれたライブラリを別の言語で使用できるようにします。[ 1 ]多くのソフトウェアライブラリは、CやC++などのシステムプログラミング言語で書かれています。Java 、Common Lisp、Scheme、Python、Luaなどの高レベル言語からそのようなライブラリを使用するには、その言語でライブラリへのバインディングを作成する必要があり、必要な変更の量によっては、その言語のコードを再コンパイルする必要があるかもしれません。[ 2 ]ただし、ほとんどの言語は、PythonやOCamlのctypes、Embeddable Common Lispのcffiやuffiなどの外部関数インターフェースを提供しています。 [ 3 ] [ 4 ] [ 5 ]
例えば、Python バインディングは、何らかの目的で作成された既存の C ライブラリを Python から使用する場合などに使用されます。別の例として、Subversionソフトウェアリポジトリにアクセスするための API を提供する C 言語で書かれた libsvn があります。Java コード内から Subversion にアクセスするには、libsvn がインストールされていることを前提とし、Java 言語と libsvn の間の橋渡し役として機能し、libsvn の関数を呼び出して作業を行う API を提供する libsvnjavahl を使用できます。[ 6 ]
ライブラリバインディングを作成する主な動機としては、ソフトウェアの再利用、複数の言語でライブラリを再実装する手間の削減、および一部のアルゴリズムを一部の高級言語で効率的に実装することの難しさなどが挙げられる。
{{cite web}}:|access-date=必須|url=(ヘルプ) ;|archive-url=形式が正しくありません: フラグ (ヘルプ) ;欠落または空です|url=(ヘルプ){{cite web}}:|access-date=必須|url=(ヘルプ) ;不足または空|url=(ヘルプ){{cite web}}:ヘルプが|archive-date=必要です|archive-url={{cite web}}:|access-date=必須|url=(ヘルプ) ;|archive-date=必須|archive-url=(ヘルプ) ;不足または空|url=(ヘルプ)