インタフェース記述言語

インタフェース記述言語（, IDL）はソフトウェアコンポーネント間のインタフェース記述を目的とするドメイン固有言語の総称である。インタフェース定義言語（）とも呼ばれる。

 概要 
インタフェースは任意の言語で記述しうる。しかし汎用言語を用いた場合、その言語仕様によってインターフェースの自由度が下がる場合がある。例えばC言語の関数定義を用いてインタフェースを定義した場合、シグネチャの型がC言語のデータ型に制約されてしまう。これを避けるためには既存言語から中立なインタフェース記述に特化した言語を用いればよい。これがインタフェース記述言語である。

言語中立な言語で書かれたインタフェース定義は、異なるプログラミング言語で書かれたソフトウェアコンポーネント間の通信を可能にする。例えば、C++とJavaで書かれたコンポーネント間などに利用できる。また遠隔手続き呼出しでも同様であり、リンクの両端にある異なるOSのシステム間での通信を可能にする。

インタフェースは関数構造とオブジェクト型をしばしば定める。ゆえに IDL はオブジェクト記述に重きを置いたスキーマ記述言語 (SDL) とオーバーラップする部分が多い。例えば Protocol Buffers は rpc キーワードを用いてRPC関数のインターフェースを定めるため IDL と言える一方"you can define an RPC service interface" Protocol Buffers. Language Guide (proto3). 2023-01-01閲覧.、message キーワードを用いてオブジェクト型を定めるため SDL とも言える。

例
 IDL specification language: クイーンズ大学で開発された独自のインタフェース記述言語
 Microsoft Interface Definition Language (MIDL): マイクロソフトによる（DCEに基づいている）
 Open Service Interface Definitions (OSIDs): Open Knowledge Initiativeによる（サービス指向アーキテクチャ向け）
 Protocol Buffers: Google による
 WSDL: SOAPの記述言語
 Thrift IDL: Apache Thrift フレームワーク内で使用
 OpenAPI Specification: REST API を記述
 GraphQL: WebAPI を記述

インタフェース記述言語を使用するシステムの例
 ONC RPC: （サン・マイクロシステムズ）
 DCE:  (The Open Group)
 System Object Model:  (IBM)
 CORBA:  (OMG)
 SOAP:  (W3C)
 Protocol Buffers: (Google)
 : OpenAPI で REST API を記述するソフトウェア実装

 脚注 

関連項目
 ソフトウェアコンポーネント
 コンピュータ言語
 データ記述言語
 仕様記述言語
 インタフェース記述言語
 スキーマ記述言語

外部リンク
 OMG Tutorial on OMG IDL
 OMG Specification of OMG IDL
 IDL : IT用語辞典 e-Words

Category:仕様記述言語
Category:遠隔手続き呼出し