はじめに
はじめにGraphQLとGato GraphQLの概要

GraphQLとGato GraphQLの概要

Gato GraphQLガイドへようこそ。WordPressサイトへのGato GraphQLプラグインのインストール、設定、使用方法に関する豊富な情報をここでご覧いただけます。

GraphQLとは

GraphQLはAPI仕様であり、クライアント(ブラウザ上のウェブサイトやモバイルアプリなど)が必要なデータを正確に指定でき、APIを実装したサーバーがその内容を正確に返すことができます。

GraphQLのクエリは次のようになります。

query {
  posts {
    id
    title
    content
    author {
      id
      name
    }
  }
}

サーバーからのレスポンスはJSON形式で、クエリと同じ構造のデータが含まれています。次のようになります。

{
  "data": {
    "posts": [
      {
        "id": 1,
        "title": "Hello world",
        "content": "<p>How are you doing?</p>",
        "author": {
          "id": 1,
          "name": "Leo"
        }
      },
      {
        "id": 2,
        "title": "Scheduled post",
        "content": "<p>This post is scheduled to be published in the future.</p>",
        "author": {
          "id": 2,
          "name": "Markus"
        }
      },
      {
        "id": 3,
        "title": "Lorem ipsum",
        "content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
        "author": {
          "id": 3,
          "name": "Socrates"
        }
      }
    ]
  }
}

GraphQLサーバーはデータを「ミューテート」(つまり作成・更新)することもできます。その場合、操作キーワードquerymutationに置き換える必要があります。

mutation {
  createPost(input: {
    title: "New post",
    contentAs: { html: "Lorem ipsum dolor sit amet" }
  }) {
    id
    status
  }
}

GraphQLの公式サイト graphql.org もご参照ください。

Gato GraphQLとは

Gato GraphQLはWordPress向けのプラグインで、サイトをGraphQLサーバーに変換し、GraphQL言語を使ってWordPressサイトのデータの取得や変更を可能にします。

Gato GraphQLが目指すのは以下のとおりです。

使いやすさ

WordPressの理念は、技術的なスキルの有無に関わらず、誰もがソフトウェアを使えるようにするというものです。このプラグインはその理念を実現するために、APIの作成と操作をできる限り簡単にすることを目指しています。

例として、Gato GraphQLではWordPressエディターが提供するユーザーインターフェースを使って、パーシステッドクエリ(定義済みデータを公開するエンドポイントで、RESTエンドポイントに似たもの)を公開できます。投稿を書くのと同様に、誰でもアクセスできます。

高速性

GraphQLクエリの解決には、通常、クエリ対象のすべてのエンティティのデータを含むグラフを反復する必要があります。グラフのノード数が多く、深さが深いほど、このプロセスにかかる時間は(指数関数的に)長くなります。

Gato GraphQLは別のアプローチをとっています。GraphQLクエリの解決にグラフではなくコンポーネントモデル構造を使用し、クエリの深さに対して線形(指数関数的ではなく)に増加するプロセスで処理します。

さらに、GraphQLクエリでリクエストされたスキーマ要素のみがコンパイル・検証・実行され、GraphQLスキーマ全体は対象になりません。そのため、WordPressサイトにインストールされているCustom Post Typeが3つであっても30であっても、クエリの解決時間は同じです。

強力さ

APIはクライアントとサーバーの主要なゲートウェイとして機能します。あらゆる要件を満たすために、APIが何らかの面で制限されていないことが重要です。

このプラグインでは、カスタム機能、外部API、クラウドベースのサービスを通じて、クエリ実行結果を変更できます。クエリされたデータは必要に応じて反復・操作でき、クエリの出力も任意の方法で変更できるため、できないことはほとんどありません。

セキュリティ

GraphQL APIは適切に管理されなければ、悪意のある人物を含むすべての人にWordPressサイトのデータへのアクセスを公開してしまう可能性があります。GraphQLサーバーは適切なセキュリティ対策を提供し、意図したユーザーのみがデータにアクセスできるようにする必要があります。

このプラグインはセキュリティを非常に重視しており、いくつかのセキュリティ対策をネイティブに実装しています。シングルエンドポイントを無効にすること、パーシステッドクエリを通じてデータを公開すること、設定可能なアクセス制御リスト(ユーザーのログイン状態、特定のロールや権限の有無、カスタムルールに基づく)によるデータアクセスの付与、そしてAPIをパブリックまたはプライベートとして定義することが可能です。

将来性

GraphQLは進化し続けるスタンダードであり、コミュニティは将来の仕様に追加される新機能のアイデアを提案し続けています。

このプラグインは待つことを好みません。スキーマのネームスペーシング、マルチクエリ実行など、提案された多くの新機能をオプトイン機能として既に含んでおり、管理者が明示的に有効にする必要があります。