第1章.WebAPIとは何か
WebAPIの定義
「HTTPプロトコルを利用してネットワーク越しに呼び出すAPI」
API:Application Programming Interface
機能が分かっていればよく、実際の動作や中でどのようなことが行われているかは知らなくても使える機能のかたまり
プロトコルがHTTP
エンドポイントとして指定されているURIにアクセスすることでサーバー側の情報を取得したり書き換えたりできる
HTTPメソッドによって何を行うかがわかれてくる
GET,POST, , , など
WebAPIで得られる情報は(基本)JSON形式
WebAPI / Webページ
JavaScriptを利用して取得したJSON形式データを加工してブラウザに表示・利用するのが一般的
データを加工して利用するので様々な目的で、いろいろなアプリで必要なところだけを使える
XML
WebAPIの重要性
WebAPIを公開すべき
なぜ→
他社の技術者がサービスに付加価値を与えてくれる
周辺サービスが開発される
WebAPI単体でのサービスの普及
XaaSを公開/販売し企業やユーザーごとにそれぞれ必要な機能だけを使う
Xaas:
技術者がサービスを作るときに公開されているWebAPIを組み込むことで素早く自前で作るより安く簡単に作れる
他のサービスとの連携
webページにツイートするボタンやPoketやfacebookなどがあり各サービスと連携している
スマートフォンの普及とWebAPI
スマートフォンの普及によってHTMLを返すwebAPIは下火になった
スマホアプリの場合そのまま使えないから
スマートフォンにもAndroidとiOSで2つの異なる開発プラットフォームがあり、両方からもWebからも利用する為にWebAPIが必要になった
【疑問】スマホアプリのフロント?HTMLでかける?react nativeやcotlinは何をするフレームワーク?
「APIエコノミー」
WebAPIを公開し外部サービスとの連携を簡単にすることで新たな価値が生まれサービスやビジネスが発展していくこと
様々なAPIのパターン
公開しているウェブサービスのデータや機能のAPI公開
使いやすいAPI設計
(ある程度の期間の)後方互換性
SDK(Software Development Kit)の公開
あるシステムに対応したソフトウェアを開発するために必要なプログラムや技術文書などをひとまとめにしたもの
システムの開発元や販売元が、開発者に配布する
他のページに貼り付けるウィジェットの公開
例)FaceBookのいいねボタンを自分のサイトに付け足したい
FaceBookが提供するJavaScriptをページに貼り付けることで実現できる(サードパーティーJavaScript)
サードパーティJavaScript:
自作する際の注意点として、ブラウザからアクセスされるAPIなのでクライアント側のコードは公表される
モダンなアプリケーションの構築
従来:ページ遷移を伴って複数のHTMLに情報を切り替えていた(マルチページアプリケーション)
モダン:ページを読み込むのとは別のタイミングで情報を取得し1つのHTMLでページ遷移せずに機能を提供する(SPA)
AJAX
JavaScriptからwebサーバー にアクセスしてリソースを取得する方法
SPAを可能にする
スマートフォンアプリの開発
スマホアプリはWebページとは異なり各ユーザーがそれぞれの端末にインストールして使われる
一度インストールされたらアップデートされるまで古いコードのまま動くのでAPIのアップデートを戦略的に行う必要がある
【疑問】ストア経由でアップデートしなくてもキャンペーンなどの配信を受け取れる仕組み
【疑問】勝手にviewが変わってる時がある気がする
社内システムの連携
各システムの連携を疎にするのにWebAPIを使うことで実現できる
何をAPIで公開すべきか
APIを公開するリスク
他に盗まれるのではないか?
利益が取られるのではないか?
金を払って購入したデータをAPIで公開しては得はしない
公開すべきは自分たちが集めて管理したデータや自分たちで作った機能
サービスに付加価値を付けてくれる人が現れる可能性がある
注目を集めてサービスの利益が上がる可能性がある
APIを公開することで情報をコントロール下に置きやすくなる
APIを公開することで得られるもの(可能性)
他の企業や個人から付加価値を得られることでサービスの価値や情報の質が上がる
自分では思いつかないようなアイデアを他の誰かがAPIを利用して作ってくれる
WebAPIを美しく設計する重要性
「美しい」API設計とは
よく考えられ、わかりやすく整理されていて無駄がなく完成度が高い
なぜ「美しい」API設計がいいか
使いやすい
利用するのが自分以外の場合が多い
使いやすいAPIであれば多くの人に簡単に使ってもらえる
変更しやすい
サービスもviewもAPIも変化していくもの
いきなりAPIの仕様が変わると利用している第三者のシステムが動かなくなることが起こるのは避けたい
スマホアプリのクライアントアプリケーションをバージョンアップしても利用者がストアからアップデートしないといけない
APIの仕様変更によってアプリが古いままのユーザーのアプリが動かなくなる可能性がある
セキュリテイ
恥ずかしくない
主にプログラマーに使われるものであるからその目線で見られる
デファクタスタンダード
ただ漫然と「他がそうだから」という理由で設計するのではなく、なぜそういう仕様になっているのかを理解することが大事
分かったこと
Webアプリを開発する際に全ての機能を自力で作成する場合に対して、公開されているWebAPIを用いることで開発工数やコストを減らすことができる
使いやすくわかりやすいWebAPIの設計することで安全安心とユーザー数を得られる
ユーザー数が多ければ付加価値がつく可能性も高まる
Web / Android / iOSでそれぞれクライアントが異なる為、どれからでも利用できるAPIが求められる