Foreign function interface
Foreign function interface(フォーリン・ファンクション・インターフェイス、FFI)とは、あるプログラミング言語から他のプログラミング言語で定義された関数などを利用するための機構。主に高水準言語からC/C++などの関数やメソッドを呼び出し、OS固有の機能などを利用するために使用されることが多い。
FFIという用語はCommon Lispにおける仕様に由来し、Haskellでも同様にFFIという用語が使われている。Adaなどでは言語間バインディング(または単にバインディング, language binding)と呼ばれている。
FFIという用語自体に「関数(Function)」という言葉が含まれているが、多くのFFIでは単に他言語で書かれた関数が呼び出せるだけではなく、オブジェクトのメソッドを呼び出したり、その返り値を取得し、データ型やクラスを言語間で相互変換することができる。