ForeignFunctionInterfaceとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ForeignFunctionInterfaceの意味・解説 

Foreign function interface

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/09 08:16 UTC 版)

ナビゲーションに移動 検索に移動

Foreign function interface(フォーリン・ファンクション・インターフェイス、FFI)とは、あるプログラミング言語から他のプログラミング言語で定義された関数などを利用するための機構。主に高水準言語からC/C++などの関数やメソッドを呼び出し、OS固有の機能などを利用するために使用されることが多い。

FFIという用語はCommon Lispにおける仕様に由来し[1]、Haskellでも同様にFFIという用語が使われている[2]。Adaなどでは言語間バインディング(または単にバインディング, language binding)と呼ばれている[3]

FFIという用語自体に「関数(Function)」という言葉が含まれているが、多くのFFIでは単に他言語で書かれた関数が呼び出せるだけではなく、オブジェクトのメソッドを呼び出したり、その返り値を取得し、データ型やクラスを言語間で相互変換することができる。

概要

主なFFIの機能は、呼び出し側の言語(ホスト言語)と呼び出し先の言語(ゲスト言語)の呼出規約やセマンティックスを擦り合わせることである。主に以下の方法などで実装される[4]

  • ゲスト言語の呼び出し先関数に対して、ホスト言語から利用可能な特定のプロトコルを実装することを要求する(例:Java Native Interface)。
  • ゲスト言語の関数を「ラップ」するグルーコードを記述したラッパーライブラリを作成する。(例:Haskell 98 FFI[5]
  • ゲスト言語に定義された関数が、ホスト言語の機能やセマンティックスのサブセットであることを要求する(例:C++からC言語の機能の利用)

なお、FFIの利用や実装には次のようなケースに注意が必要である。

  • 他方の言語がガベージコレクションの機能を持っていない場合、オブジェクトの参照や破棄が適切に行われない場合がある。場合によっては手動でオブジェクトの管理を行う必要がある。
  • 言語間でのデータ型やオブジェクトの変換が難しい場合がある。
  • 上記データ型の変換の問題などのために、言語間で同一のインスタンスへの参照が難しい場合がある。
  • 一方または両方の言語が仮想マシン上で動作している場合がある。また、2つの言語が異なる仮想マシンで動作していることもある。
  • 継承、オブジェクトや型の合成などが言語間で異なる場合。

脚注

関連項目

外部リンク




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ForeignFunctionInterface」の関連用語

ForeignFunctionInterfaceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ForeignFunctionInterfaceのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのForeign function interface (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS