0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0081(2024/03/26)GraphQLとは

Posted at

GraphQLとは?使い方とREST APIとの違いを徹底解説

GraphQL(グラフキューエル)は、Facebookが開発したAPI向けのクエリ言語およびランタイム環境で、クライアントが効率よく柔軟にデータを取得できる仕組みを提供します。本記事では、GraphQLの基本的な概念や使い方、従来のREST APIとの違いについて解説します。


🔹 GraphQLの特徴

GraphQLは以下のような特徴を持ちます。

  • クライアント側が必要なデータのみを指定して取得可能
  • 単一エンドポイントで効率的なデータ取得を実現
  • データ取得の際のオーバーフェッチやアンダーフェッチを回避

🔹 REST APIとの比較

REST APIには次のような問題点があります。

  • オーバーフェッチング(過剰取得):不要なデータまで送信される
  • アンダーフェッチング(不足取得):必要なデータが複数のエンドポイントに散らばる

GraphQLでは、以下のようにREST APIの問題を解決します。

項目 REST API GraphQL
エンドポイント数 複数エンドポイント 単一エンドポイント
取得データ サーバ側が定義した形式 クライアントが自由に指定
ネットワーク効率 必要以上のデータ取得あり 必要なデータのみ取得

🔹 GraphQLの具体的な使い方

クエリ例

例えば、「ユーザーの名前と投稿した記事タイトルのみ取得する」場合のクエリ例です。

query {
  user(id: "123") {
    name
    posts {
      title
    }
  }
}

サーバーレスポンスの例

{
  "data": {
    "user": {
      "name": "田中太郎",
      "posts": [
        { "title": "GraphQL入門" },
        { "title": "REST APIとの違い" }
      ]
    }
  }
}

🔹 GraphQL API構築方法

Step 1: スキーマ定義

APIのデータ構造をスキーマとして定義します。

type Query {
  user(id: ID!): User
}

type User {
  id: ID!
  name: String!
  posts: [Post!]!
}

type Post {
  id: ID!
  title: String!
  content: String
}

Step 2: リゾルバ作成

クエリ実行時にデータ取得処理を行うのがリゾルバです。

const resolvers = {
  Query: {
    user: (_, { id }) => {
      return getUserById(id);
    },
  },
  User: {
    posts: (user) => {
      return getPostsByUserId(user.id);
    },
  },
};

🔹 メリットとデメリット

メリット

  • 必要なデータだけを取得できる
  • 柔軟なクエリ設計が可能
  • クライアント側の柔軟性とネットワーク効率が向上

デメリット

  • クエリが複雑化する可能性がある
  • キャッシュ戦略やパフォーマンス最適化の工夫が必要
  • 初期のスキーマ設計に手間がかかる

🔹 GraphQLが使われる代表的な環境

  • クライアントサイド:React(Apollo Client、Relay)、Vue.js、Angularなど
  • サーバーサイド:Node.js(Apollo Server、Express GraphQL)、Python(Graphene)、Ruby(graphql-ruby)、Java(graphql-java)など

🔹 まとめ

GraphQLは、REST APIが抱える課題を解決し、クライアント側がより柔軟で効率的にデータを取得できるよう設計された技術です。API設計やフロントエンド開発において、GraphQLを選択肢の一つとして検討してみてください。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?