プログラミングとソフトウェア設計において、バインディングとは、プログラミング言語が外部のライブラリまたはオペレーティング システムサービス (その言語にネイティブではないもの) を使用できるように特別に作成された接着コードを提供するアプリケーション プログラミング インターフェイス( API) です。
特徴
バインディングとは、一般的に、あるものを別のものにマッピングすることを指します。ソフトウェアライブラリの文脈では、バインディングは2つのプログラミング言語を橋渡しするラッパーライブラリであり、ある言語用に書かれたライブラリを別の言語で使用できます。 [1] 多くのソフトウェアライブラリは、CやC++などのシステムプログラミング言語で書かれています。Java 、Common Lisp、Scheme、Python、Luaなどの通常は高水準の言語からそのようなライブラリを使用するには、その言語でライブラリへのバインディングを作成する必要があり、必要な変更の量によっては、言語のコードの再コンパイルが必要になる可能性があります。[ 2 ]ただし、ほとんどの言語では、PythonやOCaml、埋め込み可能なCommon Lispやなどの外部関数インターフェースが提供されています。[3] [4] [5]ctypescffiuffi
たとえば、Pythonバインディングは、何らかの目的のために書かれた既存の C ライブラリを Python から使用する場合などに使用されます。別の例としては、Subversionソフトウェア リポジトリlibsvnにアクセスするための API を提供するために C で書かれた があります。Java コード内から Subversion にアクセスするには、を使用できます。これはインストールされている必要があり、Java 言語と の間のブリッジとして機能し、 から関数を呼び出して作業を行うAPI を提供します。 [6] libsvnjavahllibsvnlibsvnlibsvn
ライブラリ バインディングを作成する主な動機としては、ソフトウェアの再利用、複数の言語でのライブラリの再実装の削減、一部の高水準言語で 一部のアルゴリズムを効率的に実装することの難しさなどが挙げられます。
ランタイム環境
オブジェクトモデル
- 共通オブジェクトリクエストブローカーアーキテクチャ(CORBA) -クロスプラットフォーム言語モデル
- コンポーネント オブジェクト モデル(COM) – Microsoft Windows専用のクロス言語モデル
- 分散コンポーネント オブジェクト モデル(DCOM) – COM がネットワーク上で動作できるようにする拡張機能
- クロスプラットフォーム コンポーネント オブジェクト モデル ( XPCOM ) – Mozilla アプリケーションのクロスプラットフォームモデル
- 共通言語インフラストラクチャ- .NET Framework クロスプラットフォーム言語モデル
- Freedesktop.org D-Bus – オープンなクロスプラットフォーム言語モデル
仮想マシン
移植
- ポータブルオブジェクト-クロスプラットフォーム言語オブジェクトモデル定義
参照
- アプリケーション プログラミング インターフェイス(API)
- アプリケーションバイナリインターフェース(ABI)
- 呼び出し規約
- 埋め込みSQL
- 名前のマングリング
- 簡易ラッパーとインターフェースジェネレーター(SWIG) - 多くの言語から多くの言語へのインターフェースバインディングジェネレーター、オープンソース
- ラッパー関数
参考文献
- ^ 「付録 A. cairo の言語バインディングの作成」 Cairographics.org 。 2014 年 4 月 2 日閲覧。
- ^ 「標準、API、インターフェース、バインディング」。Acm.org。2015年1月16日時点のオリジナルよりアーカイブ。2014年4月2日閲覧。
- ^ 「ctypes – Python 用の外部関数ライブラリ」。Python v3.8.3 ドキュメント。Docs.python.org。2020年 6 月 4 日閲覧。
- ^ Hickey, Jason; Madhavapeddy, Anil; Minsky, Yaron (2013). 「Real Worl OCaml、第 19 章 外部関数インターフェイス」. realworldocaml.org . 2015 年 7 月 19 日閲覧。
- ^ 「Introduction – CFFI User Manual」 Common-lisp.net . 2014年4月2日閲覧。
- ^ 「Subversion JavaHL FAQ」。Subclipse.tigris.org。2013-06-18。2014-04-02閲覧。
外部リンク
- JTC1/SC22/WG11 - バインディングテクニック、言語バインディングの ISO 標準
- 言語バインディングとは何ですか?
