Application Programming Interface

出典: Wikipedio


GiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/アプリケーション・プログラミング・インタフェースGiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/)とは、アプリケーションから利用できる、オペレーティングシステムプログラミング言語で用意されたライブラリなどの機能の入り口となるものである。主に、ファイル制御、ウインドウ制御、画像処理、文字制御などのための関数として提供されることが多い。

つまり、簡単にいえば、アプリケーションをプログラムするにあたって、プログラムの手間を省くため、もっと簡潔にプログラムできるように設定されたインターフェースの事である。

目次

APIの利用

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

例えば画面に「GiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/」と表示させる仕事を考えると:

明らかに最初のやり方は手間がかかり、加えて相当な量の情報を渡さなくてはならないため実用的ではない。下に行くほどより簡単になっており、3つ目のやり方になると、「GiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/」とタイプすればいいぐらいの手間になる。

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

APIの概念

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

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の「リファレンス実装」が提供される(例えばWindowsWindows API)。それに新たな機能を追加することもできる。例えば、Windows APIのほとんどはWineというソフトウェアとしてUNIXシステムに提供されている。

互換性のためのAPIを作成するためにそのAPIの実装を解析することは一般的に合法である。この手法は相互運用性のためのリバースエンジニアリングと呼ばれる。しかしAPIそのものとは異なり、APIの実装には著作権が存在するため、リバースエンジニアリングする前には著作権侵害の問題が生じないよう、十分注意する必要がある。また、使おうとしているAPIに、特許保持者の許可がなければ使えない特許技術が許可なく含まれていたら、それは特許権侵害になりうる。(ただし、これはリバースエンジニアリングに限られた話ではなく、APIを利用するプログラムにも全般的に言えることである。)

APIの例

関連項目

bg:Приложно-програмен интерфейс bn:অ্যাপলিকেশন প্রোগ্রামিং ইন্টারফেস bs:Application Programming Interface ca:API cs:API da:API de:Programmierschnittstelle el:Διεπαφή προγραμματισμού εφαρμογών en:Application programming interface es:Interfaz de programación de aplicaciones et:Rakendusliides eu:Application Programming Interface fa:رابط برنامه‌نویسی نرم‌افزار fi:Ohjelmointirajapinta fr:Interface de programmation gl:API he:ממשק תכנות יישומים hu:Alkalmazásprogramozási felület id:Antarmuka pemrograman aplikasi it:Application programming interface ko:API lt:Aplikacijų programavimo sąsaja nl:Application programming interface no:API (programmering) pl:API (informatyka) pt:API ro:API ru:Интерфейс программирования приложений sh:API simple:Application programming interface sk:Application programming interface sq:Interfejsi për programimin e aplikacioneve sr:Апликациони програмски интерфејс sv:Application Programming Interface ta:பயன்பாட்டு நிரலாக்க இடைமுகம் th:เอพีไอ tr:Uygulama programlama arayüzü uk:Прикладний програмний інтерфейс vi:Giao diện lập trình ứng dụng zh:应用程序接口

個人用ツール