目次
- APIとRESTとは
- REST APIの例
- Graph APIとは
- Facebook API
- RailsでGraph APIを作ってみました
API
API(Application Programming Interface)とは、プログラムから特定の機能を利用できるように公開しているインターフェイスのことで、ソフトウェアの機能や情報を共有するための仕組みです。
例えば
- GitlabAPIはGitlabが公開した情報を修得するインターフェイスです
- UV Beluga3 APIはBeluga3のフロントエンドでサーバーのデータを使うため、修得するインターフェイスです
REST
RESTful API(REST API)とは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、RESTと呼ばれる設計原則に従って(したがって)策定(さくてい)されたもの。RESTそのものは適用範囲の広い抽象的(抽象的)なモデルだが、一般的にはRESTの考え方をWeb APIに適用したものをRESTful APIと呼んでいる。
REST API設計
RESTのメリット
- サーバー側のシステムは複雑にならない
- リソース指向のURIなので開発者は直感的に扱える
- 統一インターフェースなので互換性がある
- 外部向けとしたAPIの場合に扱ってもらいやすい
例えば Gitlab API
The main GitLab API is a REST API. Therefore, documentation in this section assumes knowledge of REST concepts.
Gitlab APIはREST APIです。
→ REST APIの知識があれば、Gitlabのドキュメントを読みやいと思います。
→ API覚えなくても、Endpointや目的などが判断出来ます。
例えば Twitter API
Twitter APIの一部はREST APIが使われています。
https://developer.twitter.com/ja/docs/basics/things-every-developer-should-know
→ REST使わない部分がありますので、ドキュメントはちょっと分かりづらい
- 検索しづらい
- API覚えないといけません
- Endpointと目的など判断しずづらい
最近にAPI気になってる
- SPAが増えています → APIが必要になる
- フロントエンドが強くなります → バックエンドのコストを下げたい
- フロントエンドアップデートしても、バックエンドアップデートしたくない
- REST APIを使うといいなと思いました。
RESTを使う時に、気になること
→ 別々のリソースを取りたい場合、別々のAPIを叩かないといけません
- 例えば
- GET campaigns/1
- GET campaigns/1/responses
- GET campaigns/1/tweets
- GET campaigns/1 に返すデーターはresponsesとtweetsがあれば、一つAPIだけ必要です
- でも、パフォーマンスがちょっと良くない → ある場合はcampaignのデーターだけを取りたい
- responsesとtweetsを取るかとらないか指定出来るようにしたいです
→ Graph APIになります。
Graph API(Facebook API)
グラフAPIは、Facebookプラットフォームにデータを取り込んだり、Facebookプラットフォームからデータを取り出したりするための主要な手段です。プログラムを使用したデータのクエリ、新しい記事の投稿、広告の管理、写真のアップロードなど、アプリのさまざまなタスクに利用できるHTTPベースのAPIです
Graph API
グラフAPIは、Facebookでの情報を表す「ソーシャルグラフ」の概念にちなんで名付けられました。グラフAPIの構成は次のとおりです。
- ノード - 基本的には、ユーザー、写真、Facebookページ、コメントなどといった個々のオブジェクトを指します。
- エッジ - 1つのページ上の複数の写真または1つの写真上の複数のコメントといった、単一のオブジェクトとオブジェクトのコレクションとの間の接続を指します。
- フィールド - ユーザーの誕生日やページの名前といった、オブジェクトに関するデータを指します。
通常、ノードは特定のオブジェクトに関するデータを取得するため、エッジは単一のオブジェクト上にあるオブジェクトのコレクションを取得するため、フィールドは単一のオブジェクトまたはコレクション内の各オブジェクトに関するデータを取得するために使用されます。
Graph API Explore

Graph APIのメリット
- RESTのメリット同じですので、メリットと同じ
- 柔軟性が高い → 一つAPIだけ叩くとたくさん情報が取れます
RailsでGraph APIと同じ作ってみました
- Rails デフォルトのrouterを使う
- Rails Active Recordを使う
- Cancancanライブラリーを使う
最後に
- WEB APIを開発する時にGraph API 設計と同じにして、開発簡単だし、フロントエンドの方もう楽と思います。
- あと、BatchAPIを使えば、もっと楽になると思います。