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/」と表示させる仕事を考えると:
- 全部自分でやろうとすると
- 画用紙に「GiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/」という文字を書く。
- それを白と黒の四角いマスで表現したデータを作る。
- CPUがそのデータをディスプレイアダプターのフレームバッファに格納するプログラムを作成する。
- グラフィックカードを設定して、フレームバッファから正しく信号が生成されるようにする。
- オペレーティングシステム(OS)を使うと
- OSから提供される「フォント」というデータ構造をメモリに読み込む。
- OSに空のウィンドウを表示させる。
- OSに「GiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/」という文字列をウィンドウに描画させる。
- OSの機能を使うアプリケーションを使うと
- 「GiBupC <a href="http://gpsnqwvzbsbg.com/">gpsnqwvzbsbg</a>, [url=http://dbtauaohikgv.com/]dbtauaohikgv[/url], [link=http://fasownhcrtod.com/]fasownhcrtod[/link], http://npemhjdofvfv.com/」と書いたHTMLドキュメントを作成し、Mozilla FirefoxやInternet Explorerなどのウェブブラウザに表示させる。
明らかに最初のやり方は手間がかかり、加えて相当な量の情報を渡さなくてはならないため実用的ではない。下に行くほどより簡単になっており、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つの一般的な方針がある。
- 自社のAPIを厳重に秘匿する。
- 自社のAPIを広く普及させる。
使用料などを求められないAPIを「オープン」なAPIと言う。フリーソフトウェアで提供されるAPIはオープンなので、誰でもソフトウェアのソースを見たり、APIの実装を理解することができる。普通は、信頼ある組織からAPIの「リファレンス実装」が提供される(例えばWindowsのWindows API)。それに新たな機能を追加することもできる。例えば、Windows APIのほとんどはWineというソフトウェアとしてUNIXシステムに提供されている。
互換性のためのAPIを作成するためにそのAPIの実装を解析することは一般的に合法である。この手法は相互運用性のためのリバースエンジニアリングと呼ばれる。しかしAPIそのものとは異なり、APIの実装には著作権が存在するため、リバースエンジニアリングする前には著作権侵害の問題が生じないよう、十分注意する必要がある。また、使おうとしているAPIに、特許保持者の許可がなければ使えない特許技術が許可なく含まれていたら、それは特許権侵害になりうる。(ただし、これはリバースエンジニアリングに限られた話ではなく、APIを利用するプログラムにも全般的に言えることである。)
APIの例
- パソコンのBIOSコールインタフェース
- さまざまなアプリケーションソフトウェアのDocument Object Model(例えばHTML)
- The Single UNIX Specification
- POSIX
- iconv
- マイクロソフトのWindows API
- サン・マイクロシステムズのJava Platform, Enterprise Edition(Javaプラットフォーム)
- SCSI用の共通プログラミングインタフェースASPI
- Mac OSのToolbox
- Mac OS XのCarbonとCocoa、Core Image
- SNMP (ネットワーク管理プロトコル)
- Universal Plug and Play (UPnP、ユニバーサルプラグアンドプレイ)
- CORBA
- Video for Windows
関連項目
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:应用程序接口