APIって何?非エンジニア向け用語説明
APIってなんですか?
先日「APIって何ですか」みたいなことを聞かれまして、「あれ?APIってもともとなんだっけ」となったためちょっとわかりやすくまとめました。
非エンジニア向けの説明ですので細かいところまで突っ込まず、マネージャーやデザイナー、またはクライアントに説明することを想定して書いてあります。
「簡単なことを簡単に理解する!」それがこの記事のゴールです。
APIとは…
APIは一言で言うと「必要な時に使える道具やデータの引き出し」という意味で使われます。
APIをググってみる
まず「APIとは」でグーグル先生にお伺いをしてみましょう。たくさんの記事が出てきます。APIとはそれほどマニアックな言葉ではなく、アプリケーションを作るときにはごく普通に出てくる言葉です。
アプリケーションプログラミングインタフェース (API、英: Application Programming Interface) とは、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。
wikipedia引用
はい、何のことか分かりません。
インターフェイス?コンポーネント?大体このあたりで諦めます。
これは「APIとはなんぞや」について説明してあります。よくわからないですし、そもそもよく知る必要もありません。
コンピュータ同士の会話
なんのこっちゃ分かりませんので、ここでたとえ話です。
コンピュータも人間と同じように会話しています。ですので人間の会話で例えることが出来ます。
友達に会ったときに挨拶を例に説明していきます。
A君 「こんにちは、B君」
B君 「こんにちは、A君」
この何気ないやり取りの中にも取り決めや機能があります。会話をもう少し分解してみましょう。
- A君は口から発声します。
- 発声した言語は日本語です。
- B君は耳で聞きます。
A君は口から日本語を発声しB君に伝えます。反対にB君は耳で日本語を聞き取り理解します。
ここには日本語という「言語」、そして発声、聞き取りという「機能」があります。この言語と機能がそろってB君は挨拶を返すことができます。
この言語が「インターフェイス」、機能が「コンポーネント」にあたります。
※コンポーネントは意味が広いため簡単にこんな感じとしておいてください。
ではA君がスワヒリ語で挨拶をしたらどうでしょう。A君はスワヒリ語が堪能なため挨拶位は簡単です。
つまりA君は口からスワヒリ語を発声することが出来ます。しかし、B君はスワヒリ語ができないため挨拶を理解することはできません。
これと同じことがコンピュータ同士の間でも起こります。
お互いが理解出来る言語と機能を持っていれば会話することができますが、どれか一つでも欠けてしまうと会話できなくなるのです。
コンピュータに決められた言語を一方は発声することが出来て、一方は聞くことが出来る機能を用意しておいておく必要がありますし、その機能をコンピュータに用意しておくにはあらかじめ言語を決めておく必要があります。
つまりAPIとは「コンピュータ同士の会話のルールを先に決めておくことで相互に連携するための仕組み」です。
コンピュータ同士はこのように取り決めておくと会話しやすいため、頭のいい先人たちが考えた仕組みなのです。
ちなみにユーザーインターフェイスという言葉を聞いたことがあると思います。
これはユーザーがスワヒリ語を話していて、間のアプリケーションが翻訳していると簡単に想像できます。
オレンジ色のアプリケーションはスワヒリ語を理解する耳を持っていて理解します。そして青いアプリケーションが理解できる言語に翻訳して発声し青いアプリケーションは理解することが出来るのです。
UI(ユーザーインターフェイス)はユーザーがコンピュータと会話する取り決めで、ボタンや、入力テキストなどのことを指します。
APIは使い方が重要!
なんとなくAPIが分かってきたかと思います。(分からなくても大丈夫です)
APIという仕組みはいわば当たり前となっているため、「APIはどんな感じにする?」なんてことはエンジニア以外は必要ありません。エンジニアであっても深く理解していなくても使用することは可能です。
つまり非エンジニアにとってAPI自体の仕組みを理解する必要はなく、そのAPIを通じてどのようなメリットが得られるか、どんなことができるかが大切になってきます。
APIの種類
通信の種類とか、色々な種類に分けられますが、APIはざっくりと内部でやり取りするのか、外部とやり取りするのかに分けられます。
内部API
内部と通信する場合を内部APIとは…言いません。
だいたいAPIと言ったら、内部で通信することを指しますので、ただのAPIと会話が出て来たら、内部つまりサービス内で通信するやり取りと思ってください。
サーバーとスマホアプリで通信したり、ajaxと言って、画面を変えずにデータを取得したりするときにapiでやり取りします。
先ほど出したこちらの図のように
アプリケーション同士ですから、APIで通信した方が都合がいいのです。
外部API
内部APIと違い、他のサービスと連携して使われるのが外部APIです。
このような外部アプリケーションと連携したAPIを外部APIと言います。
最近はあまり聞かなくなりましたが。
外部APIの色々
APIを通じて他のアプリケーションと連携することで、色々な機能を簡単に作ることができるのです。
どんなサービスとでも連携できるわけではありません。
ではいくつか例を挙げてみましょう。
ぐるなびAPI
レストランなどの情報サイトであるぐるなびはレストラン情報をAPIとして公開しています。
つまり、制限はあるもののぐるなびに掲載されているレストラン情報を使ってアプリケーションつまりサービスを作ることができます。
ぐるなびは掲載されているレストランの宣伝になり、使う側は多くのレストランというコンテンツをタダで掲載することができます。
うまく連携していますね。実際に使ってみましょう。
なんだか文字ばかりでてきましたが、うまく動いています。これを整理してアプリケーションに使用します。
フェイスブックAPI
フェイスブックもAPIが公開されています。
「フェイスブックでログイン」 を使ったことがありますか?
フェイスブックで簡単にログインするために、フェイスブックのアプリケーションとAPIで連携しています。
しかし、フェイスブックログインはぐるなびAPIのようにすぐに情報を引き出せるわけではありません。
フェイスブックにはユーザーIDとパスワードがありますよね。その情報がAPIを通じてフェイスブック外に漏れるとまずいわけです。
そこで、フェイスブックは口と耳である「コンポーネント」を一緒に提供してパスワードが他のサービスに漏れないようにしてあります。
同様にユーザーが許可しない情報もアクセスできません。
外部のアプリケーションと連携する場合はこのようにコントロールできない部分もあるということを覚えておくといいかと思います。
おわりに
最初に書いた「必要な時に使える道具やデータの引き出し」を思い出してください。
すでにあるAPIと連携することによっても様々なアプリケーションを簡単に作ることができます。
このようなAPIをうまく活用することで、質の高いアプリケーションを目指ざすことが出来るのですね。
ちなみに下のイイネボタンなどもAPIの一つです。この記事が役に立ったならポチッと押してもらえると嬉しいです。