APIという言葉をご存知でしょうか?元々はプログラミング用語ですが、最近は一般の人も耳にする機会が増えているような気がします。しかし、正確に意味を理解している人は意外に少ないのではないでしょうか。今日はAPIという言葉の意味について少しだけ説明してみたいと思います。
APIとは
APIとは、Application Programing Interfaceの略で、直訳すると「アプリケーションをプログラミングするためのインタフェース」という意味になります。
これでは全く説明になっていないので、まずインタフェースという概念を理解していきましょう。
インタフェースとは
interは「仲介する」という意味の接頭語、faceは「顔」、ここでは「窓口」というような意味です。つまりインタフェースとは、「二つの物事の間を仲介する窓口となるもの」なのです。
例えば、皆さんのパソコンについているUSBの接続端子、これもまさにインタフェースです。USBというインタフェースが、パソコンと外部機器の間を仲介することで、情報のやり取りが出来るようになっています。
この場合、「コネクタの形状や電気信号の形式などを定めた規約」が「インタフェース」ということになります。
APIは、アプリケーションとプラットフォームを繋ぐインタフェース
先ほどのUSBの例のように、物理的な機械同士を繋ぐインタフェースのことを「ハードウェアインタフェース」と言います。
反対に、ソフトウェア同士を繋ぐインタフェースのことを「ソフトウェアインタフェース」と言い、その中でも特に、アプリケーションとプラットフォームを繋ぐインタフェースのことをAPIと呼びます。
アプリケーションとプラットフォーム
さて、また新しい横文字が出てきました。
アプリケーション(=アプリ)という言葉は、ソフトウェアのうちでインフラではないものの総称で、あまり厳密な用語ではありません。
プラットフォームというのは、ソフトウェアが動作するための「土台」という意味の言葉で、一般的にはOSやWebサービスなどの「環境」全体を指します。
アプリケーションとプラットフォームを繋ぐインタフェースとはどういうことでしょうか。
例えば、「画面に“Hello”と表示するWindowsアプリケーション」をプログラムしたいとします。この場合、厳密に考えれば以下の様なプログラムが必要になるはずです。
- 白と黒のドットの組み合わせで“Hello”という文字に見えるデータを作る
- そのデータをディスプレイアダプタのフレームバッファに読み込ませる
- そのフレームバッファから正しくディスプレイに表示するための電気信号が生成されるようにグラフィックカードを制御する
まったくもって意味不明ですね。
ところが、実際にはこのアプリケーションを作る際に必要になるのは以下のプログラムだけです。
- Windowsが備えている「画面に文字を表示する機能」に、“Hello”という文字を渡す
つまり、上に書いたような複雑な仕事はすべてWindowsというOSが基本機能として備えていて、その機能を使うためのインタフェースが用意されているわけです。これがAPIです。
WebサービスのAPI
OSだけでなく、Webサービスも立派なプラットフォームです。例えば、facebookというプラットフォームに対して、facebookアプリというアプリケーションが存在していますよね。
facebookアプリは、facebook社とは無関係な第三者が作ったWebアプリですが、facebookのアカウントでログインしてアプリ経由で自分のウォールに投稿したりすることが出来ます。これは、facebookが公開しているAPIを使ってアプリが作られているからです。
つまり、facebookアプリは
- facebookのログインウィンドウを表示するためのAPI
- ログインしたユーザのユーザIDを取得するAPI
- 指定したIDのユーザのウォールに投稿するためのAPI
などを使ってプログラムされているわけです。
まとめ
インタフェースやAPIという言葉は、よく使われる割に正しく意味を理解していない人が多い用語に思えます。ざっくりでもいいので概念を理解しておくと、何かのときに役立つかもしれません。