API 【Application Programming Interface】 アプリケーションプログラミングインターフェース
概要
API(Application Programming Interface)とは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。個々のソフトウェアの開発者が毎回すべての機能をゼロから開発するのは困難で無駄なため、多くのソフトウェアが共通して利用する機能は、OSやミドルウェアなどの形でまとめて提供されている。
そのような汎用的な機能を呼び出して利用するための手続きを定めたものがAPIで、個々の開発者はAPIに従って機能を呼び出す短いコードを記述するだけで、自分で一から処理内容を記述しなくてもその機能を利用したソフトウェアを作成することができる。
広義には、プログラミング言語の提供する機能や言語処理系に付属する標準ライブラリの持つ機能を呼び出すための規約などを含む場合もある(Java APIなど)。
また、APIを経由して機能を呼び出す形でプログラムを構成することにより、同じAPIが実装されていれば別のソフトウェア上でそのまま動作させることができるのも大きな利点である。実際、多くのOS製品などでは同じ製品の旧版で提供していたAPIを引き継いで新しいAPIを追加するという形で機能を拡張しており、旧バージョン向けに開発されたソフトウェアをそのまま動作させることができる。
APIの形式
APIは人間が記述・理解しやすい形式のプログラムであるソースコード上でどのような記述をすべきかを定めており、原則としてプログラミング言語ごとに定義される。
関数やプロシージャなどの引数や返り値のデータ型やとり得る値の意味や定義、関連する変数や定数、複合的なデータ構造の仕様、オブジェクト指向言語の場合はクラスやプロパティ、メソッドの仕様などを含む。
通信回線を通じて遠隔から呼び出すような構造のものでは、送受信するパケットやメッセージの形式、通信プロトコル(通信規約)などの形で定義される仕様をAPIと呼ぶこともある。
Web API
近年ではネットワークを通じて外部から呼び出すことができるAPIを定めたソフトウェアも増えており、遠隔地にあるコンピュータの提供する機能やデータを取り込んで利用するソフトウェアを開発することができる。
従来は通信を介して呼び出しを行うAPIはRPC(リモートプロシージャコール)の仕様を元に製品や環境ごとに個別に定義されることが多かったが、インターネット上でのAPI呼び出しの場合は通信にHTTPを、データ形式にXMLやJSONを利用するWeb APIが主流となってきている。
2000年代前半まではWeb APIの標準として仕様が巨大で機能が豊富なSOAPの普及が試みられたが、2000年代中頃以降は軽量でシンプルなRESTful APIが一般的となり、狭義のWebアプリケーションだけでなく様々な種類のソフトウェアやネットサービス間の連携・接続に幅広く用いられるようになっている。
APIと実装
API自体は外部からの呼び出し方を規定した決まりごとに過ぎず、呼び出される機能を実装したライブラリやモジュールなどが存在して初めてAPIに挙げられた機能を利用することができる。
あるソフトウェアのAPIが公開されていれば、同じAPIで呼び出すことができる互換ソフトウェアを開発することもできる。ただし、APIを利用する側のプログラムが(スクリプトなどではなく)バイナリコード(ネイティブコード)の場合にはこれをそのまま動作させることはできないのが一般的で、同じソースコードを元に互換環境向けにコンパイルやビルドをやり直す必要がある(ソースレベル互換)。
また、API自体は標準実装における動作の詳細までは定義していないため、APIが同一の互換ソフトウェアだからといって動作や振る舞いがまったく同じであるとは限らない。商用ソフトウェアの場合はAPIが非公開だったり、すべては公開されていなかったりすることが多く、公開情報だけではAPI互換の製品を作ることも難しい。
APIと知的財産権
従来は特許で保護されている場合を除いて、APIそのものには著作権その他の知的財産権は存在しないとする見方が一般的で、実際、元のソフトウェアのコードを複製せずすべて独自に実装するという方法でAPI互換ソフトウェアが数多く開発されてきた。
ところが、米オラクル(Oracle)社が権利を有するJava言語やその処理系に関して、米グーグル(Google)社が同社の許諾を得ずにAndroidスマートフォン向けにJava APIを実装した実行環境(Dalvik VM)を開発・提供しているのは著作権侵害であるとの裁判が起こされ、米裁判所は訴えを認める判決を出した。今後はAPIの権利について従来の状況が変化していく可能性がある。
関連用語
他の辞典による解説 (外部サイト)
この記事を参照している文書など (外部サイト)
- 日本総研 経済・政策レポート「ビューポイント」No.2023-020「インドにおけるデジタル公共インフラ ― India Stack と日本の自治体 DX への示唆 ―」(PDFファイル)にて引用 (2024年1月)
- 日本総合研究所「RIM 環太平洋ビジネス情報」22巻87号「インドにおけるデータ共有を活用した新たな融資スキームの登場」(PDFファイル)にて引用 (2022年11月)
- 学術コミュニケーション技術セミナー発表資料 京都大学附属図書館「デジタル・アーカイブ周辺技術解説(1)」(PDFファイル)にて引用 (2020年11月)
- 日本総合研究所「RIM 環太平洋ビジネス情報」19巻75号「India Stack:インドのデジタル化促進策にみる日本のマイナンバー制度への示唆」(PDFファイル)にて引用 (2019年11月)
- 日本総合研究所「RIM 環太平洋ビジネス情報」19巻73号「日本企業とインドのスタートアップの連携」(PDFファイル)にて引用 (2019年5月)
- バイオメディカル・ファジィ・システム学会誌 19巻1号「専門職における脳卒中後遺症のある高齢者の思いの捉え方の検討」(PDFファイル)にて引用 (2017年3月)
- システム農学会「システム農学」(PDFファイル)掲載論文「ウェブ型テキストマイニングツール iTMの開発」(PDFファイル)にて引用 (2016年1月)
- 国土交通省「ICTを活用した歩行者の移動支援に関する勉強会(第12回)について」(PDFファイル)にて引用 (2014年3月)
- 科学技術振興機構/情報科学技術協会 第10回情報プロフェッショナルシンポジウム「アクセラレータを利用したシームレス情報提供の検討」(PDFファイル)にて引用 (2013年10月)
- 総務省「知のデジタルアーカイブ ─社会の知識インフラ拡充に向けて─」(PDFファイル)にて引用 (2012年3月)
- 独立行政法人情報通信研究機構(NICT) 新世代ネットワーク推進フォーラム IPネットワークWG レジデンシャルICT SWG 戦略ビジョンタスクフォース「家庭生活に役立つホームネットワークの在るICT社会像の実現に向けた調査報告書」(PDFファイル)にて引用 (2011年11月)
- 日本女子大学国語国文学会「国文目白」50号「公立図書館サービスと情報通信技術の適用」(PDFファイル)にて引用 (2011年2月)
- 早稲田商学 第415号「ビジネスシステムの新しい視点 ──価値創造と配分に関するルールの束と自生秩序的な仕組み──」(PDFファイル)にて引用 (2008年3月)
- ITヘルスケア学会「ITヘルスケア」第2巻1号「スマートフォンの訪問医療への応用」(PDFファイル)にて引用 (2007年5月)