[go: nahoru, domu]

コンテンツにスキップ

アプリケーションプログラミングインタフェース

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。JAnDbot (会話 | 投稿記録) による 2006年12月11日 (月) 13:24個人設定で未設定ならUTC)時点の版 (robot Modifying: tr:Yazılım programlama arayüzü)であり、現在の版とは大きく異なる場合があります。

APIアプリケーション・プログラミング・インターフェイスApplication Programming Interface)とは、アプリケーションから利用できる、オペレーティングシステムプログラミング言語で用意されたライブラリなどの機能の入り口となるものである。主に、ファイル制御、ウインドウ制御、画像処理、文字制御などのための関数として提供されることが多い。

APIの利用

APIを使うことでコンピュータソフトウェアが他のソフトウェアと広義の意味で通信しあうことができる。また低レベルな(機械寄りのプログラム言語を使う)ソフトウェアと高レベルな(人間寄りのプログラム言語を使う)ソフトウェアの間の関係をより抽象化するための方法である。APIの目的の一つは、ウィンドウやアイコンを描画するというような共通して使える機能(関数)を提供することである。そのような機能を使えば、プログラマーが一から百まで全部コーディングしなくても済むようになる。API自身は抽象的なものだが、APIを提供しているソフトウェアはそのAPIの実装と呼ばれる。

例えば画面に「Hello World」と表示させる仕事を考えると:

明らかに最初のやり方は手間がかかり、加えて相当な量の情報を渡さなくてはならないため実用的ではない。下に行くほどより簡単になっており、3つ目のやり方になると、「Hello World」とタイプすればいいぐらいの手間になる。

しかし高レベルなAPIには柔軟性がないことがある。例えばウェブブラウザで文字を点滅させながら円を描くように回転させることは難しいが、低レベルなAPIを使えばもっと簡単に実現できる。APIの簡潔さをとるか柔軟性をとるかは十分にトレードオフを考慮する必要がある。

APIの概念

APIは家の電気と同じようにコンピュータにとって非常に重要である。自分の家だろうが、友人の家だろうが、パンを焼きたい時にはトースターコンセントにつなぐ。これはどちらの家でもコンセントという標準化されたAPIを備えているからである。もしコンセントがなければ、人は発電所までトーストを焼きにいかなくてはならなくなる。ヨーロッパのトースターは変圧器がなければ、アメリカでは動かないのと同じように、Windows用に書かれたプログラムは、UNIXとの仲立ちをしてくれるAPIアダプターがなければ、UNIX上では動かない。

APIにはさまざまな設計モデルがある。 実行速度を考慮したインターフェイスは通常、関数プロシージャ変数データ構造から構成される。また例えばECMAScriptの構文を解析するためのインタープリタであることもある。良いAPIはブラックボックスであり、良い抽象化層であると言える。すなわちプログラマーはそのAPIの機能がより低レベルのAPIとどんな関係をもっているのかを知る必要がないのである。それはまた、そのAPIを使用しているコードを壊すことなく、APIの機能を再設計したり、改良したりすることを可能にしている。

APIの公開に関しては2つの一般的な方針がある。

  1. 自社のAPIを厳重に秘匿する。
    例えばソニーライセンスをもった開発者にしかプレイステーションの公開APIを利用できないようにしている。なぜならプレイステーションのゲームを開発できる人の数を制限したほうが、より多くの利益をあげられるからである。これはAPIの実装を売ることで利益を上げるわけではない会社の典型的な例である。(ソニーの場合は、ゲーム開発時のAPIのライセンス料によって利益を上げようとしたがうまくいかず、プレイステーション用コンソールの販売を中止している。)
  2. 自社のAPIを広く普及させる。
    例えばマイクロソフトは計画的にAPIに関する情報を公開しているのでWindowsプラットフォーム用のソフトウェアを作成することができる。これはAPIの実装を販売して利益をあげる会社の例である。OSなどのAPIは、いくつかのコードに分割され、ライブラリとして実装されており、OSと一緒に配布される。OSと一緒に配布されるWindowsのAPIは誰でも使うことができる。また直接アプリケーションの中に統合される必要があるAPIもある。

使用料などを求められないAPIを「オープン」なAPIと言う。フリーソフトウェアで提供されるAPIはオープンなので、誰でもソフトウェアのソースを見たり、APIの実装を理解することができる。普通は、信頼ある組織からAPIの「リファレンス実装」が提供される(例えばWindowsの Win32 API)。それに新たな機能を追加することもできる。例えば、Win32 APIのほとんどはWINEというソフトウェアとしてUNIXシステムに提供されている。

互換性のためのAPIを作成するためにそのAPIの実装を解析することは一般的に合法である。この手法は相互運用性のためのリバースエンジニアリングと呼ばれる。しかし法律的な面ではあいまいな部分があるので、リバースエンジニアリングする前に十分注意して法的な検討もする必要がある。例えば、使おうとしているAPIに、特許保持者の許可がなければ使えない特許技術が許可なく含れていたら、それは違法になってしまう。

APIの例