0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GraphAPIについて

Last updated at Posted at 2020-06-03
1 / 16

目次

  • 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設計

image.png


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

スクリーンショット 2020-06-03 12.31.09.png

Graph APIのメリット

  • RESTのメリット同じですので、メリットと同じ
  • 柔軟性が高い → 一つAPIだけ叩くとたくさん情報が取れます

RailsでGraph APIと同じ作ってみました

  • Rails デフォルトのrouterを使う
  • Rails Active Recordを使う
  • Cancancanライブラリーを使う


最後に

  • WEB APIを開発する時にGraph API 設計と同じにして、開発簡単だし、フロントエンドの方もう楽と思います。
  • あと、BatchAPIを使えば、もっと楽になると思います。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?