GraphQLの入門書を翻訳しました
ソフトウェアエンジニアの尾崎です、最近は新規事業を立ち上げるべく色々やっています。この度、弊社2名(私とあんどう)が翻訳したGraphQLの入門書『初めてのGraphQL』がO’Reilly Japanから出版されます。(2019年11月13日(水)発売予定です。)今回はこの書籍について紹介します。
表紙の鳥はタカ目タカ科のボネリークマタカです
GraphQLとは
GraphQLは公式ドキュメントに “A query language for your API” とある通りAPIのためのクエリ言語です。GraphQLは2015年にFacebookによってOSSとして公開されました。2017年にGitHubの公開APIがGraphQLに移行されたことを契機に採用事例が増えてきています。
GraphQLのAPIはこれまでのAPIとはパラダイムが大きく異なります。現在主流のWeb APIはRoy Fieldingが示したRESTの考えをもとに発展してきたものです。RESTベースのAPIは個々のリソースに独立した一意のアドレス(URI)を持たせ、単体のリソースを操作するインターフェイスを提供します。対照的に、GraphQLはリソースに対して関連性のあるリソースも含めて操作するインターフェイスを提供します。GraphQLはサーバーとクライアントの開発者の間の距離が大きい場合には特に高い生産性を与えてくれます。既存のAPIに慣れ親しんだ開発者からするととっつきにくいかもしれませんが、GraphQL がどのような問題意識から生まれ何を解決したのかを知ることは、既存の API のさらなる理解や改善にもつながるはずです。
API例
GraphQLのAPIの例を見てみましょう。GitHubはプレイグラウンドを公開しているのでいつでもGraphQLのAPIを試すことができます。以下のクエリでは、現在GitHub上で公開されているGraphQLの仕様のリポジトリの作成日時とリリース名一覧を最新10件(事実上全件)、リリースが作成された日時の降順に要求しています。
{
repository(owner: "graphql", name: "graphql-spec") {
createdAt
releases(last: 10, orderBy: {field: CREATED_AT, direction: DESC}) {
nodes {
name
}
}
}
}
実際のレスポンスは下記のとおりです。
{
"data": {
"repository": {
"createdAt": "2015-07-01T01:26:56Z",
"releases": {
"nodes": [
{ "name": "June 2018" },
{ "name": "July 2015" },
{ "name": "October 2016" },
{ "name": "April 2016" },
{ "name": "October 2015" }
]
}
}
}
}
レスポンスからGraphQLの仕様自体はそう頻繁には変更されていないことがわかりますね。GraphQLのクエリの肌感が分かってもらえたでしょうか。このように、GraphQLを用いるとニッチな要件も簡潔に表現し、データをやり取りすることができます。
書籍について
今回翻訳した『初めてのGraphQL』は2018年に米O’Reilly Mediaから出版された“Learning GraphQL”の日本語訳です。書籍はGraphQL概要を紹介したのち、写真共有サービスの実装を追っていく構成になっています。最後まで進めていくとNode.js GraphQL APIサーバーとReactのクライアントを実装できます。Webプログラミングの経験があれば問題なく進められるでしょう。
本書籍について、個人的には最初の2章でWebとAPIの歴史、GraphQLが生まれてきた経緯、グラフ理論に絡めたGraphQLの概念について丁寧に解説している点を評価しています。仕様や実装の解説は3章以降になるので、気の早い方は3章から読み進めたくなるかもしれません。ただ、GraphQLが生まれてきた経緯、設計の理念、概観など基本的な内容を理解した上で実装に進む方がGraphQLの利点や面倒な点に対して理解が深めやすいはずです。
また、認証やキャッシュ、ファイルアップロードといった実践で困りそうなトピックについて言及がある点も良いところです。書籍で実装するサンプルにも組み込まれているので参考にしてください。
さらに、vvakameさんにRelayの解説を巻末付録として寄稿していただきました。RelayはFacebookが公開したReact向けのGraphQLクライアントライブラリです。内容はvvakameさんが技術書典で頒布されていた書籍の再掲になりますが、同人書籍と商業書籍の文体の違いをお楽しみいただけるようになっています。
GraphQLは公式ドキュメントも日本語化されていませんし、国内のGraphQLの商業書籍もこれが初めてになるので、ニーズに合った書籍を出版できたと感じています。当書籍の出版をきっかけに国内エンジニアにとって少しでもGraphQLが馴染みあるものになればと考えています。
11月13日(水)に発売予定です。是非お手にとってみてください。
その他の記事
Other Articles
関連職種
Recruit