水曜日にサンフランシスコで開催されたGraphQLサミットで、データ・プラミング企業Apollo GraphQLの共同創業者兼CTOであるマット・デバーガリス氏は、データ取得用クエリ言語であるGraphQLの実装を容易にするために、企業にデータグラフ・チャンピオンを任命するよう促した。
組織がGraphQLの導入を望むことは、まだ当然のことではありません。しかし、事実上の標準オープンソースクライアントと商用Apollo GraphQLプラットフォームを開発するApolloが主催する会合では、GraphQLがあらゆる場所で使われることを想像する確かな動機が生まれています。
少なくとも展示会に参加した472社の間では、すでにその半分が実現しています。出展企業の約52%が既にこの技術を本番環境で活用しています。よく知られている企業としては、Airbnb、Audi、Expedia、The New York Times、Medium、PayPal、Pricelineなどが挙げられます。
GraphQLは2012年にFacebookで開発され、3年後にオープンソースプロジェクトとしてリリースされました。2017年のライセンス変更と昨年のLinux Foundationへの移行を経て、GraphQLはRESTよりも優れた代替手段として定着しつつあります。ここで言う「グラフ」とは、技術的な定義はあるものの、構造化データ、つまりエンティティとその関係性を指します。
GraphQL とは何ですか?
RESTとGraphQLはどちらも、HTTP経由でデータをリクエストする方法を提供しています。REST APIを使用してGETリクエストを行う場合、指定されたエンドポイントを呼び出し、特定のオブジェクト(多くの場合JSONデータ形式)を受け取ります。
GraphQLは、データベースクエリに近いリクエストをより柔軟に処理できます。1つのクエリで複数のエンドポイントからデータを取得できるため、必要なデータをすべて一度に取得できます。このような宣言的なデータ取得は、ネットワークリクエストによってバッテリーや帯域幅のリソースが限られるモバイルデバイスで特に役立ちます。
GraphQLには、イントロスペクションシステムのような便利な機能もあります。GraphQLスキーマ(データ構造)にクエリを実行すると、サポートされているクエリの種類が表示されます。これによりAPIドキュメントの自動生成が可能になり、Appleのドキュメントに対する抗議からもわかるように、開発者はこれを非常に重要視しています。
アポロのエンジニアリング担当副社長、クレア・ハフ氏は、展示会場でThe Registerの取材に対し、おそらくフロントエンド開発者の半数以上がGraphQLについて知っていると語った。ハフ氏によると、GraphQLは成熟しており導入の準備は整っているものの、まだあらゆる分野に組み込まれているわけではないという。それでも、AirBnBやExpediaのようにGraphQLを全面的に採用している企業もあるという。
展示会でのプレゼンテーションで、Airbnbのソフトウェアエンジニアであるブリー・バンジ氏は、Airbnb全体のトラフィックの約5.8%がGraphQLを利用しており、年末までにその数は10%に達すると予想していると述べた。バンジ氏は、GraphQLへの段階的な移行に伴い、JavaScriptからTypeScriptへの移行も進んでいると説明した。TypeScriptはAirbnbのウェブ開発公式言語となっている。同社の300万行に及ぶコードベースの半分以上が既に移行済みだ。
FacebookのオープンソースライセンスのドラマゾーンGraphQLがLinuxの豪邸に豪華な住まいを構える
続きを読む
「このプロジェクトではTypeScriptを使いたいと考えました。TypeScriptは[GraphQL]スキーマへのクエリを直接TypeScript型に変換できるからです」と彼女は語った。「エンドツーエンドの型安全性を活用するには、TypeScriptが絶対に必要だと考えました。」
データ グラフ チャンピオン (インフラストラクチャ、データ グラフの規則とスタイル、測定対象に関する決定などを管理する責任者) を指名するようにという DeBergalis のアドバイスについては、必ずしも必要ではないかもしれません。
オフィススペースプロバイダーのKnotel(WeWorkのような企業だが、ゴミ山積みではない)には、データグラフのチャンピオンはいないと、同社のエンジニアリング責任者であるVictor Quinn氏は語る。The Register紙の取材に対し、彼は「リーダーとして少しだけその役割を担っているが、具体的にその肩書きを持つ人材はいない」と説明した。
クイン氏によると、Knotelの製品スタックは100% GraphQLで実行されており、TypeScriptも一部含まれており、今後さらにGraphQLの活用を拡大していきたいとのことだ。Knotelは商業用不動産事業を営んでおり、同社が保有する物件それぞれについて膨大なデータがあるとクイン氏は述べた。
「フロントエンドアプリケーションの設計を検討していたとき、必要なのはデータのごく一部だけでした」と彼は言います。「例えば、ほとんどのアプリケーションでは住所と緯度経度が必要です。すべての建物について私たちが持っているすべての情報を毎回送り返すのは非常に面倒です。そのため、クライアントが取得したいデータを正確に選択できるGraphQLを使用するのは理にかなった選択でした。」
同社は社内利用向けのアプリを開発しており、従業員が不動産物件の状況を確認できるほか、顧客向けにはオフィスのドアのロック解除や問題報告のためのアプリも提供しています。また、販売プロセスを支援する社内アプリも開発しており、空室状況を確認できるようになっています。
クイン氏は、「多少の学習曲線はあったが、その恩恵は他の多くの複雑さを取り除いたことにある」と述べた。
クイン氏は、GraphQL の主な利点は、クライアントのフロントエンド インターフェースを修正できることと、データ グラフに基づいてアプリケーションをより迅速に開発できることであると述べています。®
GraphQL の詳細については、DevOps の姉妹サイト Devclass をご覧ください。