プログラミング 新技術

初心者のためのGo言語で書くGraphQLとおすすめライブラリ

初心者のためのGo言語で書くGraphQLとおすすめライブラリ

概要

GraphQLとはクエリ言語でAPIを作成する方法について紹介です。GraphQLはクエリ型のAPIです。

APIを通信する方法は主に3種類ありますがマイナーな方法です。今回はGo言語で構築するGraphQLのライブラリの紹介と使い方を記事にします。

GraphQLとは

Facebookが開発したAPIを作成する手段です。クエリ言語で、データの入出力や参照したいデータに命令文を書くことで取得することができます。

GraphQLについての参考本

GraphQLのメリット・デメリット

GraphQLのメリット

URLは一つでいいです。REST APIではエンドポイントを目的ごとに変えますが、一つのURLにアクセスしそこでクエリを投げることで欲しい情報を取得することができます。
まだまだ、利用者が少ないので今のうちにGraphQLをマスターしておくと先行者利益的な物を手に入れることが可能です。

GraphQLのデメリット

クエリでデータ取得するんだったらSQLでいいじゃないかという意見もあります。わざわざサーバーサイドでSQLを使ってデータを取得してさらにフロントでもクエリを発行するという2重に複雑です。
さらにいうとWebAPIがRestやgRPCもあるので学習コストが高くなります。

Go言語のGraphQLおすすめライブラリ gqlgen

gqlgenとは

gqlgenはGraphQLのメジャーなライブラリの一つです。リクエストレスポンスなどのスキーマ定義をgqlgenの形式で記載すれば自動でコードをジェネレートしてくれます。

公式ページ

Githubリポジトリ

gqlgenのサンプルと操作方法

GraphQLを利用するにあたってGo言語のおすすめのライブラリはgqlgenはです。定義をgqlgenのファイルに定義するとGo言語で使えるように自動的にコードをジェネレートしてくれます。ジェネレートされたコードを参照してGo言語で作成すると作成がスムーズにできます。

gqlgenのサンプルコードを作成しましたので以下のgithub URLに配置しています。

https://github.com/yoshis2/gql-example

インストールから起動までの説明をします。

コードダウンロード

$ git clone [email protected]:yoshis2/gql-example.git
$ cd gql-example

コンパイル

$ make build

起動

$ make serve

起動すると以下のURLにアクセス
http://localhost:8083

ResolverとgraphQLがすべて

graphQLのコマンド3種類

  • mutation
  • query
  • fragment

mutation

create,update,deleteのコマンドの時はmutationの宣言をします。

query

selectといったデータの出力系はqueryの宣言をします。

fragment

共通のクエリーがあった場合同じことを何度も書くのではなく一つにまとめることができます。

チュートリアルコード

以下のコマンドをクエリ画面に入力すると実行することができます。

インサートのクエリ

mutation createTodo {
  createTodo(input:{text:"add user test", userId:"1"}) {
    user {
      id
      name
    }
    text
    done
  }
}

参照のクエリ

query listTodo {
  todos{
    id
    text
    done
    user{
      id
      name
    }
  }
}

コードを変更するのはresolverとgraphQLの2種類のコードのみで後は自動で作成してくれます。

まとめ

BFF(Backend for Frontend)の操作で使うことが今後増えてくるでしょう。REST APIならAPIゲートウェイでマイクロサービスで作成したAPIを統合することができます。

マイクロサービス での開発が増えてきており、gPRCでAPIを作成している人はGraphQLをBFFで開発していくことになるでしょう。

-プログラミング, 新技術