つよぽん、久しぶり!
質問があって、「API」って言葉よく聞いて私もなんとなくで使っているんだけど、
APIってなんなの?
久しぶりに質問に来たね!
たしかに開発の現場とかエンジニアとの会話で「その機能はこのAPIを使えば実装できると思います」とか「こういうAPI作ってほしいんだけど…」って言葉をよく使うね^^
確かにプログラミングの勉強をしているときに良くAPIって言葉をサイトとかで見るけど、
APIって具体的にどんなものなのかちゃんと分かってないや。
OK!
じゃあ今日は次の内容でAPIについて解説していくね^^
- APIとは
- APIでサービスを横展開する
APIとは
まず「API」っていう言葉の説明からするね^^
Application Programming Interface(アプリケーション・プログラミング・インターフェイス)の略だよ!
あぷりけーしょん・ぷろぐらみんぐ・いんたーふぇーす?
もっと意味わからんくなった。。
APIって略さないで言うとそんな長い言葉なんだ。。。
そうだね長い言葉だよねw
この言葉自体は覚える必要はないけど、それぞれの単語の意味がわかるとAPIについて理解しやすいと思うからわざわざ正式名称で説明したんだ^^
それぞれの単語を理解するとAPIがわかるの?
うん^^
まずそれぞれの意味は次の通りだよ^^
- Application : TwitterやFacebookのようにWebサービスのバックエンドなど
- Programming : プログラミング
- Interface : 接点、入り口
これらの意味を使って解釈すると、
「プログラミングを使って、Webサービス(バックエンド)と何かのやりとりを行う接点(入り口)」っていうことになるよ。
なんとなくわかるような、わからないような。。
それと、ここでいう「何か」っていうのは具体的に何を指しているの?
ここでいう「何か」とは、基本的にクライアントをあらわすよ。
クライアントとは前回のおさらいだけど、Webブラウザ・アプリを使っているスマートフォン・パソコンなどがそうだよ^^
クライアントとWebサービス(バックエンド)のやりとりを行うって、
ようは普通のWebサービスのことよね?
以前「会話で使われる用語パート2 ~フロントエンド~」で教えてもらった次と同じって認識で合ってる?
うん、イメージとしては間違ってないけど上の図だと、クライアントとバックエンドは「1対1」の関係だよね?
えっ!?
普通WebサービスってTwitterにしろFacebookにしろサービスって1つしか無くない!?
いや、そんなことないかも。
例えばTwitterって、Twitterの会社が出しているTwitter以外に一般の開発者が作っているTwitterクライアントもたくさんあるから、
それを考えると「1対1」の関係ではなく「1対多」(バックエンド対クライアント)の関係もありえるような気がする。
そうそう!
まことの言う通りで、1つのサービスに対してクライアントが複数あることは全然あることだよ^^
特にTwitterクライアントは本当にたくさんあって、開発者はTwitterが提供しているAPIを使ってTwitterからデータを取得しているんだ!
Twitterクライアントがどんなものかは次の記事を見ればだいたいのイメージはつくと思うよ^^
なるほどねー!
イメージとしてはこんな感じかしら?
うん、そのイメージで合ってるよ!
ここでデータのやりとりって書いているけど、普通のWebサービスと違うのは「WebサービスはHTML形式でデータを返す」のに対して、
API経由でデータを取得する場合はHTML形式ではなくて「プログラムで扱いやすい形式でデータを返す」という点だね。
HTML形式で返しちゃうとどのクライアントも同じデザインになっちゃうから、デザインは開発者が作り、好きな部分にデータを埋め込むんだ^^
HTML形式で返すと全てのクライアントで同じデザインになっちゃうのはわかったけど、プログラムで扱いやすい形式ってどんなものがあるの?
プログラミングの基礎を知っている必要があるから具体的な話はまた別の講義でしようと思うけど、
「JSON」や「XML」というデータ形式を使うよ^^
最近はJSONを使うのが一般的な感じがするね(^^)
JSON? XML?
何の呪文ですか?(^^;)
JSONもXMLも決まったルールでデータを書くもので、具体的にどんなものかは次の資料が参考になると思うから一読しておくと良いと思うよ^^
はーい^^
JSONとXMLかー。
まだ勉強した中で使ったこと無かったけど、今やっているチュートリアルが終わったら自分のサービス作ろうと思ってたから、
Twitterクライアント作ってAPIとJSONについて身につけようっと!
APIでサービスを横展開する
さっきはTwitterを例にAPIを使って異なるTwitterクライアントを作れることを説明したけど、
その他にも別々のサービスで共有して使うデータをAPI経由で取得するということも出来るよ^^
別々のサービスで共有して使うってどういうこと?
例えば、「メルカリ」ってサービスは知っているよね?
知ってる知ってる!
毎日寝る前に良い商品無いかなーってついついずっと見ちゃって、よく寝坊しちゃうw
プログラミングの勉強に使うための技術書とか良く買う^^
メルカリはメルカリ以外にも「カウル」っていうサービスとか、もうサービス提供終わっちゃったけど「アッテ」「teacha」っていうサービスを横展開してたんだ^^
このサービスを横展開するというのが、「別々のサービスで共有して使う」ってことだよ^^
横展開するっていうのがまだイマイチ理解できていないんだけどどういうこと?
メルカリとカウルの例で考えると次のようにメルカリとカウルで共有して使っているデータがあるんだ^^
- ユーザー情報
- ユーザーの評価
- 商品情報
- 購入情報(メルカリで買った本がカウルの本棚に登録される)
こんな感じで、メルカリとカウルのようにサービス自体は違うのに、APIを通すことでデータを共有して使うことが出来るんだ^^
へー!APIって可能性が無限大じゃん!
なんか色々アイデア思い浮かびそう!
サービスによってはAPIを公開しているものと公開していないものがあるから、APIを使ってサービスを作りたいなって思った場合は、
まずは自分が使おうと思っているAPIが公開されているかどうか確認すると良いよ^^
了解です!
あー早くサービス作れるよになりたい!
APIを使って色々なサービスのデータを取得出来るなら、
ゼロから自分たちでデータを用意しなくても良いから、いろいろとビジネスアイデア思い浮かびそうね^^
そう!それこそAPIの強みなんだ^^
さっきまことが言ってたようにAPIは可能性が無限大なんだ!
1つのAPIしか使っちゃいいけないなんてルールはないから、複数のAPIを組み合わせて今まで世の中に無かったようなサービスを作ることだって出来るんだよ^^
APIは1つだけじゃなくて複数を使っても良いのね!
そうなるとますます可能性が広がるわ〜^^
さっきTwitterクライアント作ろうと思ってけど、世の中にどんなAPIがあるのか今度いろいろ調べてみようかなー
じゃあ今日はこんな感じでAPI講義を終えたいと思います^^
最後に今日学んだことをまとめておくね!
- APIはクライアントとバックエンドのデータのやりとりを行う接点(入り口)
- APIを通して取得できるデータ形式はHTML形式ではなくプログラムで扱いやすいJSON形式が一般的
- クライアントは好きにデザインが出来て、取得したデータを任意のところに配置できる
- APIを通して別サービスでもデータを共有して使うことが出来る