読み方 : エービーアイ

ABI【Application Binary Interface】

概要

ABIとは、コンパイルされたプログラム同士や、プログラムオペレーティングシステム(OS)、ライブラリなどの間でバイナリレベルの互換性を保つための取り決め。関数呼び出しの方法やデータ配置などを定め、異なるコンポーネントが正しく連携して動作できるようにする技術仕様である。
ABIのイメージ画像

プログラムは通常、ソースコードを書いてコンパイルすることで機械語プログラムへと変換される。この変換後の実行可能な形態は「バイナリコード」と呼ばれる。ABIは、このバイナリコード同士がどのように連携して動作するかを定義する仕組みで、関数の呼び出し方法、引数や戻り値の受け渡し方、レジスタスタックの使い方、データ型のサイズやメモリ上での配置方法などを定める。これに従うことで、別々にコンパイルされたプログラムライブラリでも相互に利用できるようになる。

ABIは特定のCPUアーキテクチャやOSごとに定義されることが多い。例えば、同じプログラムでも、異なるプロセッサや異なるOS環境ではABIが異なる場合がある。ある環境でコンパイルされたバイナリは、ABIが異なる別の環境ではそのまま動作しない。開発者やソフトウェア配布者は、対象とする環境のABIに合わせてプログラムビルドする必要がある。

様々なプログラムから共通して利用されるライブラリでは、バージョン間のABIの互換性が重要になる。ライブラリの内部実装が変更されてもABIが互換であれば、既存のプログラムを再コンパイルせずにそのまま利用できる、ABIが変更されると、既存のプログラムは新しいライブラリと正常に連携できなくなる。多くのプログラムから参照されるソフトウェアの開発では、ABI互換性の維持が重要な設計上の要素となる。

APIとの違い

ABIはしばしば「API」(Application Programming Interface)と比較される。APIはソースコードレベルでのインターフェースを定義するものであり、どのような関数やクラスを利用できるかを開発者に示すものである。一方、ABIはコンパイル後のバイナリレベルでの互換性を扱うものであり、プログラムの内部表現や実行時の呼び出し規則などを規定する。APIが「どの機能を呼び出せるか」を示すのに対し、ABIは「その呼び出しが機械語レベルでどのように実行されるか」を定めている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。