ボクココ

個人開発に関するテックブログ

API に関する基礎的な話

ども、@kimihomです。

今回から何回かに分けて、APIについて語っていきたいと思う。

API とは。そのメリット

Application Programming Interface の略。サービス同士がAPIを通じて連携するための仕組みだ。通常は、HTTPSを通じて、JSONのフォーマットでやり取りされることが多い。特に最近は、RESTful な APIにであることが求められている。これは、以前の記事を参照していただきたい。

REST な 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を作らなければならない。これがなかなか大変だ。ではどのようにこれらの課題を解決していくのか?

次回に続く。