Share
Bookmark

FFIによるC言語の呼び出しとPHPでの使い方

今回は、プログラミングに関する用語
FFI」についてです!
FFIによるC言語の呼び出しとPHPでの使い方」などを中心に解説していきますね!

FFIとは

FFIの読み方は?何の略?

FFIはカタカナで表すと、「エフエフアイ」と読みます。


FFIは「Foreign Function Interface」-フォーリン ファンクション インターフェイス-の略称です。


別名外部関数インターフェースと言います。


FFIって何?

FFIとは、あるプログラミング言語から他のプログラミング言語で定義された関数などを利用するための機能のことです。

主に高水準言語からC言語などの関数やメソッドを呼び出してOS固有の機能などを利用するために使用されることが多いです。

そんなことが出来るんだぁ。どんな時に使うの?


例えば、以下のような場合です。


  • 高速化として低レベル言語のコードを使いたい場合
  • 他の言語でしか提供されていないライブラリを使いたい場合
  • OSやハードウェアに近い処理が必要な場合

なるほど…たしかに使わないと実装できない場面もありそう…


PHPでのFFI

C言語の呼び出し方

例えば、PHPならこのようにします。


FFI::cdef(
"C言語の関数や構造体の宣言(ヘッダー部分)",
"ライブラリファイル名(例: libc.so.6, msvcrt.dll など)"
);

FFIクラス?


そう、FFIクラス。これはPHP.7.4から組み込みクラスとして導入されています。


グローバルクラス関数なんだね。じゃあ何も設定無しに使えちゃうの?


特別な名前空間には属してないので、直接使えます。

が…


php.ini でFFIを有効にする必要があります。

FFIの設定

デフォルトではセキュリティの理由で無効になっていることが多いので、以下の設定を php.ini に追加します。

ffi.enable = true

これでWebサーバーを再起動したらOKです。


簡単だぁ!


C言語以外のケース

C言語以外の他の言語は?


FFIは、基本的にはC言語へのアクセスになります。

PythonRubyなども、FFIでC言語を呼び出し出来るようになっています。

なるほどぉ、そしたら逆にPHPからPythonへの呼び出しはやっぱりexec()関数などを使わないといけないのかなぁ…


そういうことです。

…ってゆあちゃん、珍しくよく知ってるね^ ^


私だって知ってるところはあるよぉぉぉ〜(>_<)。゚。笑

今回は

  • FFIとは
  • PHPでのFFI
  • C言語以外のケース
についてまとめてみました。

「Webプログラミング.net」では、Webプログラミングの情報を中心に、Network関連やInternet関連など、IT系全般について発信・解説しています。

最後までお読み頂き、ありがとうございました。