ども、@kimihomです。
今回から何回かに分けて、APIについて語っていきたいと思う。
API とは。そのメリット
Application Programming Interface の略。サービス同士がAPIを通じて連携するための仕組みだ。通常は、HTTPSを通じて、JSONのフォーマットでやり取りされることが多い。特に最近は、RESTful な APIにであることが求められている。これは、以前の記事を参照していただきたい。
APIにより、サービス同士の"連携"が可能になる。例えば自社サービスにGoogle や Facebookの機能を埋め込みんだり、情報を取ってきたりできるのも、各社が提供するAPIがあるおかげだ。また最近はWebだけでなくスマホやタブレット、その他デバイスの普及により、一つのサービスがWebの中に留まることはなくなっている。他デバイスがAPIと連携することで、あらゆるデバイスがサービスと連携したアプリを作ることができるようになる。
自社サービスをAPIとして公開すると、外の開発者が自由に自社サービスと連携したサービスを開発することが可能になる。これにより、外部の開発者が自社サービスの拡張機能を好きに開発することができ、より柔軟にサービスを利用することができる。この戦略で最も成功しているのはSalesforceだと個人的には思っている。Salesforceは自社のBtoB向けのCRMをあらゆるAPIで公開したことにより、BtoBで必要な他の機能は外部のベンダーに開発をしてもらう。開発者がマネタイズできる仕組みもSalesforceは構築している。SalesforceはあらゆるBtoBサービスで必要な機能を、APIを通じて開発者によって拡張されたSalesforceアプリとして利用できるのだ。
これはどんなサービスでも同じことが言える。一歩上のカスタマイズしたサービスの利用の仕方を、自由に作ることができるようになる。あらゆる顧客の要望に対応するための一つの方法であると言える。
つまり、自分たちが自社のWeb以外のアプリを開発するときや、他の人に連携サービスを作ってもらうのに、APIがあると便利なのである。
世界中のあらゆるAPIをまとめた、Mashapeというサイトでその多さを感じていただければと思う。
シンプルなAPI
さて、ではAPIをどのように開発すれば良いのだろうか。考え方としてはシンプルで、今までURLを叩いたらHTMLを返していたものを、JSONで返すようにすれば良い。これでAPI化は完了とも言える。
JSONはこんな形式の文字列。開発者なら常識だが。
{ "age":100, "name":"mkyong.com", "messages":["msg 1","msg 2","msg 3"] }
ブラウザでAPIのURLを叩いたら、上記のようなJSONが返ってくれば、API化できたことになる。JSONは、HTMLに出す情報のうち必要な情報だけを返すためのデータ形式と考えていただけたらそれで良いかと。
そのURLを専用アプリや外部のサービスからHTTPで呼んでJSONを取得し、解析することで連携が可能となるわけだ。
API 開発における課題
先ほどの例だけで全て解決できたらいいのだけども、実際にはあらゆる課題が存在する。
- ユーザー情報を取得(認証)
- アクセス制御(認可)
- セキュリティの問題
- 不正アクセスの制御
- バージョン管理の課題
- ドキュメント作成の課題
ありとあらゆる課題をクリアしたAPIを作らなければならない。これがなかなか大変だ。ではどのようにこれらの課題を解決していくのか?
次回に続く。