BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース BustleでのGraphQL導入事例

BustleでのGraphQL導入事例

原文(投稿日:2017/10/06)へのリンク

FacebookはGraphQLを、“APIのためのクエリ言語と、既存データでクエリを実行するためのランタイム”だと表現している。クライアントがRESTエンドポイントに何かを依頼するRESTコールとは異なり、GraphQLクエリでは、クライアントが探しているものを指定することができる。

GraphQLはFacebookでは多用されているが、コミュニティの仕様としてはいまだ初期段階にある。InfoQは今回、BusteのエンジニアリングディレクタであるSteve Faulkner氏とGraphQLについて話す機会を得て、Bustleでの利用状況や、GraphQLに注目する開発チームが考慮すべき点について論じることができた。

InfoQ: BustleではGraphQLをどのように使用していますか?

Steve Faulkner: 現在は全プロダクトで利用しています。API、バックエンドCMS、さらにはフロントエンドのWebサイトも、すべてGraphQLに対応しています。Bustileには現在、2つのスタックが別々にあります。バックエンドにある独自開発のCMSと、その一部としてサーバ側でレンダリングされるPreactアプリがフロントエンドにあって、GraphSQLで通信をしています。

InfoQ: 切り換え前は何を使っていたのですか?

Faulkner: あらゆる種類のRESTを社内向けに使用していましたが、最も多かったのはRailsスタイルのREST規約です。私は当初、GraphQLを気に入っていなかったので、BustleにGraphSQLを持ち込もうという動きに対して、かなり強硬に反対していました。“RESTで十分”だ、すべてうまく行っている、と思っていたのです。GraphSQLは非常に複雑で、ここにフィットするかどうかも分からない、これ以上スタックを複雑にして欲しくない、そう思っていました。

私の考え方を完全に変えたものが2つあります。ひとつめは型です。GraphSQLを使い始めて、型を使うようになり、それが開発者間のコミュニケーションに関する多くの問題を解決する上で役に立ちました。技術的な部分というよりも、より速く開発する能力が向上したのです。ふたつめは、フロントエンド担当者たちの理解が早かったことです。実際に運用試験を開始すると、いきなり多くのスタッフが使用するようになりました。誰かに依頼する必要がなくなったことが大きな理由です。‘違う形式のクエリが必要になっても、自分自身で対処できる’ようになったのです。

InfoQ: 切り換えの決定はどのように行なったのでしょう?

Faulkner: Bustleでは、エンジニアリングチームに多くの自由が認められています。開発者たちが主体性を持って、自らが必要とするものを開発することを信頼しているからです。開発者のひとりが’GraphQLこそが進むべき道だ’と言い、私もそのとおりだと思いました。そこでGraphSQLの試用を始めたのです。当社には、クールなものを見つけて、それを試してみたいと思ったならば、運用に投入してどういうものかを見極めるポリシがあります。そういったことを行なうために、サイトが細かく分化されているのです。

InfoQ: 切り換えたことで、どのような問題が解決しましたか?

Faulkner: 最も大きいのは人の問題です。APIの変更をどうやって伝達するか、ドキュメントを使うのか?GraphQLならば、最初からその手段が提供されています。GraphQLはRESTよりはるかに厳格な、APIを開発するための言語です。優れたパターンを強制しますが、それと同時に、ドキュメントの自動生成も可能にします。最初から付属しているAPIエクスプローラ(GraphiQL)が、すべて自動的に実行してくれるのです。解消される問題はそれほど重要なものではありませんが、人々が時間を要している作業です。それを取り除くことで、より速い開発が可能になるのです。

InfoQ: GraphQLへの切り換えを検討中のチームは、どのようなことを自問するべきなのでしょう?

Faulkner: [GraphQLには]いくつか欠点もあると思います。特にセキュリティ関連や実運用時のGraphQLオペレーション、クエリの複雑さ、権限や認証の管理などです。いくつかの問題については社内的には解決しましたが、コミュニティ全体という意味ではまだ未解決です。これらの点については注意しなければなりません。あなた方が銀行業務を運用していて、GraphQLエンドポイントを実行したいのであれば、“真の実用レベルにするために、他にどのようなステップが必要なのか”、という点を真剣に考える必要があります。

Faulkner氏はQCon London 2017で、Bustleがサーバレスでバックエンドを運用している方法についてプレゼンテーションを行なっている

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT