アプリケーションプログラミングインタフェース
[Wikipedia|▼Menu]
□記事を途中から表示しています
[最初から表示]

特定のAPIレベルで追加された機能(クラス、メソッド、フィールド)を利用するには、アプリケーションのビルド時に AndroidManifest.xml[25]あるいは build.gradle[26]にてtargetSdkVersionの値をそのAPIレベル番号以降に設定し、また指定されたバージョン以降のAndroid SDKを使ってビルドする必要がある。また、minSdkVersionの値によって、アプリケーションのインストールおよび実行に必要な最小システムバージョンを指定することができる。minSdkVersion以下の機能は(廃止されたものでない限り)無条件で使用できるが、minSdkVersionを超えるバージョンで追加された機能を使用する場合は、android.os.Build.VERSION クラスのSDK_INTフィールドの値に基づいて動的分岐する処理を実装する必要がある。
公開の方針

APIの公開に関しては2つの一般的な方針がある。
自社のAPIを厳重に秘匿する。例えば
ソニーライセンスをもった開発者にしかPlayStationの公開APIを利用できないようにしている。なぜならPlayStationのゲームを開発できる人の数を制限したほうが、より多くの利益をあげられるからである。これはAPIの実装を売ることで利益を上げるわけではない会社の典型的な例である。(ソニーの場合は、ゲーム開発時のAPIのライセンス料によって利益を上げようとしたがうまくいかず、PlayStation用コンソールの販売を中止している。)

自社のAPIを広く普及させる。例えばマイクロソフトは計画的にAPIに関する情報を公開しているので、誰でも簡単にWindowsプラットフォーム用のソフトウェアを作成することができる。これはAPIの実装を販売して利益をあげる会社の例である。OSなどのAPIは、いくつかのコードに分割され、ライブラリとして実装されており、OSと一緒に配布される。OSと一緒に配布されるWindowsのAPIは誰でも使うことができる。また直接アプリケーションの中に統合される必要があるAPIもある。

この2つの方針の中間もある。
リバースエンジニアリングと著作権

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

2010年、米オラクルGoogleJavaの新たな実装をAndroidの一部として配布したとして、Googleを訴えた[27]。Java APIを複製する許可(ライセンス)はOpenJDKプロジェクトやIBM J9などの実装には与えられていたが、一方AndroidのDalvik仮想マシンの実装はOpenJDKなどに基づいてはおらず、またGoogleはJava APIを複製する許可をとっていなかった。これに対して、地方裁判所はAPIは著作権法の対象外であるとする判断を下したものの、控訴裁では保護対象であるとされ、最終的に2015年、最高裁によりアメリカ合衆国内ではAPIにも著作権があるとの判断が確定した[28][29][30]。ただしその後の審理を経て、2021年には著作権があってもフェアユースの下に利用可能であるとの判断が下されている[31]

日本においては、著作権法第10条第3項において、プログラムのインタフェースやプロトコルが著作物とみなされないことが明確に示されている[32]
類似する概念

DDI (Device Driver Interface) -
デバイスドライバを開発するためのソフトウェアインタフェース。WindowsおよびLinuxの用語。

ファームウェアインタフェース - ファームウェアを開発するためのソフトウェアインタフェース。UEFI[33]など。

ASPI - SCSI 装置を制御するためのソフトウェアインタフェース

特にDDIやファームウェアインタフェースを使う場合は、ソフトウェアがアプリケーションと異なる環境で動作しAPIに依存するライブラリを使用できない場合があるため、開発者は自分が何を使っているか意識する必要がある。
APIの例

CarbonCocoa - macOS

CORBA

Document Object Model (DOM) - HTML文書やXML文書をアプリケーションから利用するためのAPI

DirectX - Microsoft Windows用のマルチメディアAPI

EHLLAPI

iconv - 文字コード間の相互変換用API(POSIXの一部)

I/O Kit(英語版) - Darwin

Java API(英語版)

ODBC - Microsoft Windows


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:72 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef