ROUTE06

Technology

GraphQLとApollo、オープンソースソフトウェアとSaaSの広がり

2022-12-28

遠藤 崇史 / Takafumi Endo

シェア

昨今のWebサービスやモバイルアプリ等のプロダクト運営において、大手企業のみならず創業間もないスタートアップ企業においても、多様かつ大量のデータ処理が一般的に行われるようになりました。クラウド化に端を発した技術進化に伴い、従前に比べて特別なシステム構築や専門チームを組成しなくても、動画や音声データなどの大量かつ即応性が求められるWebサービスや複数のIoTデバイスとのデータ連携を前提としたアプリケーションの開発及び運用が可能になりつつあります。

今後5Gなどの通信技術及び規格の整備に伴い取扱データ量が上昇するだけでなく、マイクロデバイスを通じたパーソナルデータやヘルスログなどの新しいデータ種別をWeb上で高速かつ高頻度で処理する機会も加速度的に増えていくことが予想されてます。様々な外部サービスとのAPI連携や企業内部でも部門や関連会社を跨ぐシステム間連携への需要も高まり続け、ソフトウェアアーキテクチャは年々複雑化する一方です。またユーザーからのレスポンスの即応性や安定性に対する要求水準は高く、動的なコンポーネントやパーソナライズなどユーザーインターフェースの表現も高度化しており、フロントエンド/バックエンド問わずデータ処理に関する課題もそれに対応するためのソリューションも増加していくでしょう。

そのような背景のなかで、本記事では近年注目が集まっているWeb APIのオープンソース型クエリ言語であるGraphQLと、それを利用したアプリケーションプラットフォームを開発・運営するApollo Graph社について紹介していきます。データ処理技術といえば、GoogleやAmazon、Microsoftなどの大手テック企業のプロダクトや技術が一般的には注目されやすくありますが、Apollo GraphQLのような様々なオープンソースソフトウェア及び関連サービスがあらゆるWebサービスの裏側で活用されています。

Web API時代の新しいクエリ言語GraphQL

GraphQLとはFacebook(現Meta)が2015年に公開したWeb API(Application Programming Interface)の規格であり、オープンソース化されたクエリ言語として世界中のWebサービスやネイティブアプリ等の開発で利用されています1。クエリ言語とはデータベースに対してデータ取得等の問い合わせをする際に一般的に使用される言語であり、代表的なものとしてSQLがあります。GraphQLは「グラフ」という新しい概念でスキーマを定義し、Webサーバーに対するデータリクエストをSQLのように宣言的に記述可能にすることで、クライアント側から必要なデータフィールドだけを選択・抽出しやすい環境を実現しました。RESTful APIに比べてHTTPリクエスト及びレスポンスの頻度やデータ量をコントロールしやすく、またエンドポイント(URIやURL等)が単一かつシンプルです。複数エンドポイント及びメソッドの設計が重視されるRESTful APIに比べて、クライアントアプリケーションの開発者が学習すべきポイントが明確であることから、より機動的な実装を行うことができるようになります。[^1][^2]

GraphQLを使用するアドバンテージの1つは、関心のあるデータをREST APIで取得しようとする場合に発生するであろうHTTPリクエストの数に関係します。例として、productを取り上げてみましょう。productのIDをもっていて、すべての商品データを取得したいとします。さらに、全商品のimages、variants、metafieldsも取得するとなると、4つのユニークHTTPコールが発生します。わたしたちのRESTでは、すべてが個別のエンドポイントとなるからです。 これで容量の10分の1を使用し、1秒ごとの回復レートが2コールなので、回復までに2秒を要します3

近年のモバイルアプリケーションでは、大量のネスト化されたデータや相互リンク化されたデータを扱うケースが多く、システムのパフォーマンスを高めるには特定機能(例えばニュースフィード、投稿、メッセージなど)のモジュール/ドメインに合わせて必要最低限のデータを参照・照会することが求められます。GraphQLはWebサイトやiOS/Andoridなどのネイティブアプリなどのクライアント/フロントエンドでの機能実装やデータ処理が多様かつ高速化し、またマイクロサービス化や様々なアプリケーション間のAPI連携が必要とされる時代背景から生まれた技術規格であると言えるでしょう。GraphQLは昨今ではFacebook(Meta)だけでなく、GitHub、Twitter、Shopify、Airbnb、楽天、メルカリなどのテック企業からWalmart、Starbucks、New York Timesなど大企業に加え、世界中のスタートアップ企業の開発現場でも利用されています[^1][^4]

一方で、GraphQLはクライアント側で必要データな構造を定義しやすいなどフロントエンドの開発者体験が重視された規格であり、GraphQLサーバー間のデータの信頼性やWebアプリケーションの特性に合わせてRESTとの使い分けがなされているのが現状です。フロントエンドの実装の柔軟性を高める反面、GraphQLサーバーの設計やグラフ間のノード構造などバックエンド側の仕組みが複雑になりやすいなどの課題もあります。そもそもGraphQLはオープンソース化されたクエリ言語の仕様であり、サーバー側ではGraphQLのランタイム環境でクエリが実行される環境の構築は勿論、クエリリクエスト制御などのセキュリティ対策やデータキャッシュの仕組みなどは別途用意する必要があります。そういった課題に対応するアプリケーションプラットフォームとして近年Apollo及びその開発運営会社であるApollo Graphが注目されています5

GraphQL Architecture
StepZen社「A New Architecture for APIs」内の図をもとに当社作成

GraphQLのアプリケーションプラットフォームApolloとは

Apollo Graphは、GraphQLに関するクライアント及びサーバーの実装を支援するための様々なアプリケーションを開発及び運営するソフトウェア企業です。彼らのプロダクトの一つであるApollo Client(フロントエンド向け)では、GrapQLによるUIとサーバーのデータ連携の実装に関わる様々なライブラリを提供しており、React.js、Swift、Kotlinなどのフロントエンドの言語にも対応しています。GraphQLはREST APIと比べてCDNによるキャッシュが比較的難しい等の課題があるなかで、Apollo Clientにはキャッシュデータの統合や状態管理を円滑にするための機能が用意されています6。またフロントエンド向けに限らず、JavaScriptサーバー上でGraphQLを実行するためのライブラリ及びアプリケーションであるApollo Serverなど、Apollo GraphはGraphQLに関する様々なアプリケーションの開発を行なっています。フロントエンドの開発者はApolloのプロダクトを活用することでGraphQL環境での各言語及びフレームワークによる実装が容易になるとともに、サーバーサイドの開発者は複雑になりがちなGraphQLサーバーやインフラその他開発環境をセキュアかつスケーラブルな状態で構築及び管理することできます。

Apollo GraphQL
Apollo Graph社「The Apollo GraphQL platform」内の図をもとに当社作成

Apollo GraphはOSS(Open Source Software)開発コミュニティでありながら、Andreessen Horowitz等の世界的なベンチャーキャピタルから高い評価を受けるユニコーン企業でもあります7。彼らのプロダクトはOSSとして一般利用可能なものから、有料のSaaSとして提供されるものがあり、近年では同様のビジネスモデルを採用するソフトウェア企業も少なくありません。2021年8月時のシリーズDラウンドにおいて、Apolloは15億ドル以上の時価総額で130百万ドルの資金調達を実施したことが公表されています。Apolloのオープンソースライブラリのダウンロードは2021年8月時点において毎月1,700万以上、クエリの実行件数は毎日60億件以上にまで成長しています6

彼らは今後さらにオープンソースソフトウェアの開発及びコミュニティ支援を積極的に行うと共に、2022年7月には高水準のセキュリティ認証であるSOC 2 Type IIを取得するなどエンタープライズ版のプロダクト開発を強化していく方針を掲げました。Apollo Graphによれば、すでにウォルマートやスターバックスなどのFortune500の約30%の企業においてApolloのソフトウェアが活用されています。2020年にはNetflixが複数のGraphQLサーバー及びドメイン開発を統合管理するためのアーキテクチャであるApollo Federationを採用したことが話題になり8、足元ではExpediaやPayPalなど大規模かつマルチチャネルでデジタルサービスを手がける企業へのApollo製品の導入が進んでいます。

“Apollo Federation will allow us to implement our existing schema linking in a safer, declarative manner, while opening up a whole new level of broader federation opportunities across the wider enterprise”. Dan Boerner, Distinguished Product Manager at Expedia Group 9

Expedia Appolo GraphQL
「Expedia Group Transforms Product Development with Apollo」内の図をもとに当社作成

Walmartは従前からBFF(Backend For Frontend)アーキテクチャを採用しており、すでにマイクロサービスかつフロントエンドフレンドリーな開発環境であったにも関わらず、Eコマースのプラットフォームを企画調査から約14ヶ月をかけてApolloを活用したGraphQLアーキテクチャに移行しています。彼らの公表資料によれば、結果としてこれまで複数存在していたカートや検索機能などが統一され、開発者体験だけでなくユーザーの利便性向上にも繋がったことが強調されています10

OSSとエンタープライズ向けSaaSの可能性

Apollo Graphは2022年10月には複数のGraphQL API及びサーバー群を束ねる大規模なシステムのインフラ構築を支援するGraphOSを公表するなど、企業内ネットワークから外部APIサービスまで多様なマイクロサービスに繋がるデータアクセスのマーケットプレイスとなることを目指しています。今後エンタープライズ向けの機能を強化していくとともに、ネットワーク効果の期待できるプラットフォーム化戦略を推進していくことが予想されます。ApolloのSaaSとしての機能拡充に連動し、OSSの開発コミュニティへの知見のフィードバックなども期待できることから、これからもGraphQL関連の技術進化及び活用が加速していくでしょう。

ソフトウェア開発の歴史を遡ると、Apollo Graphに限らずMongoDBやGitLabなどOSSコミュニティの支援とその商用アプリケーションの開発運用を行うテクノロジー企業が数多く生まれてきました。OSSとしてはLinux、CentOS、Apache、FireFox、Androidなど無料利用可能と広く認知されるものが少なくない一方、gitに対するGitHubのようにOSSの技術起点となりながら、別の機能を有するSaaSとして開発されて普及したプロダクトも数多く存在しています。特にエンタープライズ領域においてはセキュリティ及び開発工数などの観点から商用化されたSaaSが好まれる傾向にあり、今後もGraphQLのような専門的な技術領域におけるOSSのエンタープライズ向けSaaS化が増加していくことが予想されます。本記事がGraphQL及びApollo Graphの事例研究もしくはOSSとそのSaaSに関する事業検討をされている皆様の調査の一助になりましたら幸いです。

Apollo GraphQL
GraphQLSaaSAPIマイクロサービスサーバーレスアーキテクチャクラウドコンピューティングオープンソースデータ統合エンタープライズDevOps

著者について

遠藤 崇史(えんどう たかふみ)。東北大学大学院情報科学研究科を卒業後、株式会社日本政策投資銀行、株式会社ドリームインキュベータを経て、株式会社スマービーを創業、代表取締役CEOに就任。アパレル大手企業への同社のM&Aを経て、株式会社ストライプデパートメント取締役CPO兼CMOに就任。株式会社デライトベンチャーズにEIRとして参画後、ROUTE06を創業し、代表取締役に就任。


新着記事

Transformation

プロダクト開発におけるこれからの要件定義

要件定義は、プロダクト開発の成功を左右する重要なプロセスです。効率性や柔軟性を追求し、DX時代の価値創造を支える新しい視点を探ります。

詳細