GraphQLはFacebookが開発しているクライアントとサーバー間のデータのやり取りを容易に記述するためのクエリ言語です。Reactでの開発にRelayを使いたいなと思っていますが、GraphQL周りの知識が乏しすぎるので、勉強がてらGraphQLのドキュメントのGetting Startedの部分を和訳してみました。せっかくなのでブログにもアップしておきます。誤訳などもあるかと思いますが、Google翻訳よりはマシだと参考にしていただければと思います。
当記事は以下のページを日本語に翻訳したものとなります。
Getting Started
Let’s build a basic GraphQL server from scratch using graphql-js.
graphql−jsを使って一から初歩的なGraphQLサーバーを構築しましょう。
Our server’s schema will be simple: it will have one type, a User, with two fields, id and name. (For an example of a more complex server, check out the Walkthrough.)
サーバーのスキーマはシンプルです。Userという1つのtypeと、idとnameの2つのフィールドを持ちます。(より複雑なサーバーの例は、Walkthroughをチェックしてください。)
Setup
Start by making a folder for your demo server:
デモサーバー用のフォルダを作成してスタートしましょう。
The example server requires Node.js and three additional packages for our server:
1. graphql, the reference implementation of GraphQL in JavaScript.
2. express, a basic web framework.
3. express-graphql, an express middleware that exposes a GraphQL server.
この事例のサーバーはNode.jsと3つの追加パッケージが必要となります。
- graphql: JavaScriptにおけるGraphQLのリファレンス実装
- express: 基本的なWebフレームワーク
- express-graphql: GraphQLサーバーを利用するためのexpressのミドルウェア
Install these three packages using npm:
npmを使って3つのパッケージをインストールします。
Data
Our server will consist of two files, data.json and index.js. To create these files, run
このサーバーはdata.jsonとindex.jsの2つのファイルからなります。以下のコマンドを実行して、これらのファイルを作成しましょう。
Now define the user data in data.json:
まず、data.jsonの中にユーザーデータを定義しましょう。
Server
Next you’ll create a very basic GraphQL schema to describe the data; you can then allow this schema to be queried over HTTP.
次に、データを記述するためにとても初歩的なGraphQLスキーマを作成しましょう。そうすることで、HTTPを通してこのスキーマにクエリを投げることができるようになります。
Insert the following into index.js (and be sure to read the comments!):
以下をindex.jsに記述します。(必ずコメントを読んでください。)
That’s it – your basic GraphQL server is done! Start it by running
以上で、初歩的なGraphQLサーバーは完成です。起動してみましょう。
The server should announce that it is running at localhost:3000/graphql. If you navigate to this address you will receive this notice:
サーバーはlocalhost:3000/graphqlで起動していると通知するようになっています。あなたがこのアドレスを入力したら、まず以下の警告が出るでしょう。
We know our server is running – now we just need to send it a query!
サーバーが起動しているということがわかりまた。さっそくクエリを送ってみましょう。
Queries
Below is a very simple query you can make against your schema. To the right is the result your server should deliver. Take a moment to read the query and the result. Note that the result and query have the same basic “shape”: whereas the result is JSON key-value pairs, the query is the just the keys.
以下は、スキーマに対して作ったとてもシンプルなクエリです。下側はサーバーが返す結果となります。クエリと結果をじっくり眺めてみましょう。結果とクエリはどちらも同じ基本的な「形」となっていることに注目してください。結果の方はkeyとvalueを持ったJSONですが、クエリの方はkeyだけとなっています。
You can edit the above query; the result will automatically update when you do. If you make a syntax mistake it will be underlined in red. Try replacing id: “1” with id: “2”; replace name with id or with name id.
上のクエリを変更可能です。変更すると結果は自動的にアップデートされます。構文にミスがあった場合は、赤いアンダーラインがつきます。実際にid: “1”をid: “2”に置き換えてみましょう。nameをidまたはname idに置き換えましょう。
Now that you know what a GraphQL query looks like you can query your own server. Let’s start with the simple query
GraphQLのクエリが自分のサーバーでクエリを投げるのと同じようなものだとわかったことでしょう。さっそくシンプルなクエリを投げてみましょう。
Remove all the whitespace in the query: {user(id:”1″){name}} (whitespace is optional in GraphQL). You can send this to your server via a GET request with a URL query string: http://localhost:3000/graphql?query={user(id:”1″){name}} – the server should respond with
{user(id:”1″){name}}のようにクエリのすべてのホワイトスペースを取り除きます(ホワイトスペースはGraphQLでは任意となります)。http://localhost:3000/graphql?query={user(id:”1″){name}}のようにURLにクエリ文字列をつけてGETリクエストを通してサーバーに送ります。サーバーは以下のようにレスポンスを返します。
To be standards compliant, the query itself should be URL-encoded. If you received a GraphQL Syntax Error from the above query, try replacing it with the URL-encoded version: %7Buser(id:%221%22)%7Bname%7D%7D. (You can URL-encode any string in JavaScript with the global encodeURI function.)
標準に準拠するために、クエリ自身はエンコードされたURLであるべきです。上記のクエリからGraphQLの構文エラーが返ってきた際は、エンコードされたURL: %7Buser(id:%221%22)%7Bname%7D%7Dに置き換えてみてください。(JavaScriptの文字列はグローバルのencodeURI関数でURLエンコードが可能です。)
Congratulations! You’ve built your first GraphQL server. Try different queries, or changing the data, or even adding new fields to the schema.
おめでとうございます!初めてのGraphQLサーバーを構築できました。他のクエリにしたり、データを変えたり、スキーマに新しいフィールドを追加したりしてお試しください。
まとめ
以上、GraphQLのGetting Startedの日本語訳となります。
馴染みのないクエリ、GraphQLサーバーの構築など、GraphQLを扱うのは難しそうなイメージがありましたが、実際にこの「Getting Started」の内容通りにやってみると、基本的な部分はそれなりに理解できるかなと思います。
自分としては、Relayを使ったReactとの連携や、データベースとの連携など、その辺りがまだ詳しくわかっていなかったりします。他のドキュメントなどにも目を通して、もうちょっと勉強してから、またこちらのブログで紹介できたらと思っています。
コメント