BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル GraphQLリファレンスガイド: 柔軟でわかりやすいAPIの構築

GraphQLリファレンスガイド: 柔軟でわかりやすいAPIの構築

キーポイント

  • GraphQL is both an open source query language for an API and a server-side runtime for executing queries. It enables the use of a type system that developers define for their data. 
  • GraphQL is rapidly becoming a popular alternative to REST and gRPC, particularly for exposing data at the edge of systems
  • Clients can define the structure of the data required with GraphQL, which can be implemented to provide a common abstraction (schema) between the frontend and backend
  • GraphQL has clearly crossed the diffusion of innovation chasm, with the only debate in the InfoQ 2020 Architecture and Design trend report being how widely it is adopted within organisations that have large existing SOAP and REST API deployments. 
  • There is still innovation occurring within this space, specifically in relation to scaling and federating GraphQL schema, and making it ubiquitous and general-purpose for large enterprises.

原文(投稿日:2021/03/12)へのリンク

はじめに

GraphQLは、APIのオープンソースクエリ言語であると同時に、クエリを実行するためのサーバ側ランタイムでもあります。これにより、開発者がデータ用に定義する型システムを使用できるようになります。

GraphQLは、読み取り、書き込み、データ変更のサブスクライブをサポートし、SDKとサーバは、JavaScript、Python、Ruby、Java、C#、Go、Rust、PHPなどの複数の言語で利用できます。

GraphQLは、特にシステムのエッジでデータを公開するために、RESTやgRPCの人気のある代替手段に急速になりつつあります。GraphQLホームページによると、「GraphQLは、API内のデータの完全で理解しやすい記述を提供し、クライアントが必要なものだけを正確に要求できるようにし、時間の経過とともにAPIを進化させやすくし、強力な開発者ツールを可能にします。」

 
GraphQLのクエリと型システム (画像提供 Goodbye REST APIs. Hello GraphQL!)

GraphQLは、2012年にFacebookによって社内用に開発された後、2015年に一般公開されましたNetflix Falcorなど、当時も同様のプロジェクトが共進化しましたが、特にNetflix以外ではあまり採用されませんでした。

2018年11月7日、GraphQLプロジェクトはFacebookから、非営利のLinux Foundationがホストする新しく設立されたGraphQL Foundationに移動されました。

なぜGraphQLを使うのでしょうか?

GraphQLは、Web APIを開発するためのアプローチを提供し、多くの場合、RESTと比較されますが、gRPC-webやその他のWebサービスアーキテクチャと比較されることもあります。

GraphQLを使用すると、クライアントは必要なデータの構造を定義できます。これを実装して、フロントエンドとバックエンドの間に共通の抽象化 (スキーマ) を提供し、サーバから送信されるペイロードのサイズを削減することもできます。GraphQLのWikipediaのエントリによると、「クエリ言語の柔軟性と豊富さは、単純なAPIには価値がないかもしれない複雑さも追加します。」

すべてのアーキテクチャ上の考慮事項と同様に、GraphQLを使用することには固有の利点とトレードオフがあります。

なぜ今GraphQLに注意を払う必要があるのでしょうか?

GraphQLは、革新のキャズムの普及を明らかに超えており、InfoQ 2020 Architecture and Designのトレンドレポートでの唯一の議論は、既存の大規模なSOAPおよびREST APIのデプロイメントがある組織内でどれだけ広く採用されているかです。

この領域では、未だにイノベーションが発生しており、特にGraphQLスキーマのスケーリングとフェデレーションに関連して、大企業のためにユビキタスで汎用的なものになっています。

InfoQ Architecture and Design Trends Report 2020 グラフのGraphQL

GraphQL入門

GraphQLを調査および探求するアーキテクトおよび開発者には、次のコンテンツをお勧めします:

技術スタックへのGraphQLの導入

GraphQLの技術スタックへの導入と統合を検討しているエンジニアリングチームには、次をお勧めします:

企業のデータモデリング: GraphQLがどのように役立つか

データモデリングは、特に大規模な場合、永続的な変化が困難です。GraphQLは、モジュール性に重点を置いて、RESTまたは従来のSOAアプローチとは異なるオプションと実装を提供します。「スキーマスティッチング」の初期のアプローチは、現在「フェデレーション」に進化しています。

このコンテンツは、GraphQLによるデータモデリングの利点と課題の優れた入門です:

GraphQLのケーススタディ

以下のGraphQLのケーススタディは、アーリーアダプタが発見した「落とし穴」のベストプラクティスと警告を提供します:

高度なユースケース: NetflixのGraphQLフェデレーション

NetflixはGraphQLのアーリーアダプタであり、最近、実装をどのように拡張したかについて公に議論し始めました。次のコンテンツは、彼らのアプローチと学んだ教訓についてのより深いインサイトを提供します:

著者について

Daniel Bryant氏は、組織とテクノロジーの変革をリードしています。彼の現在の技術的専門知識は、「DevOps」ツール、クラウド/コンテナプラットフォーム、およびマイクロサービスの実装に焦点を当てています。Daniel Bryant氏はLondon Java Community (LJC) のリーダであり、いくつかのオープンソースプロジェクトに貢献し、InfoQ、DZone、Voxxedなどの有名な技術Webサイトへの執筆、QCon、JavaOne、Devoxxなどの国際カンファレンスに定期的に参加しています。

この記事に星をつける

おすすめ度
スタイル

BT