BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Guardian紙がサーバーレス、React、GraphQLを使ってニュースルームのコラボレーションツールを作成

Guardian紙がサーバーレス、React、GraphQLを使ってニュースルームのコラボレーションツールを作成

原文リンク(2024-03-01)

Guardian紙は、同社が使用する様々なコンテンツ管理プラットフォームに統合されたディスカッションおよびアセット共有ツールであるPinboardを作成した。このソリューションでは、ビジネスロジックのコーディングにTypescript、コード実行に様々なサーバーレスサービス、APIエンドポイント、GraphQLサーバー、ストレージにAWS RDS(PostgreSQL)など、様々な技術が使われている。

同社はComposer(コンテンツ管理システム)やGrid(画像資産管理システム)など、コンテンツを制作する際に多くの編集ツールを使用している。Guardian紙のシニアソフトウェアエンジニアであるTom Richards氏は、ニュースルーム用のコラボレーションツールを作る必要性をこう説明している。

過去数年間、ニュースルームでのデジタルコミュニケーションの多くは、メールやチャットで行われていた。編集ツール(ツールとは、人々がコミュニケーションしているコンテンツが実際に制作されている場所)の外で行われることが非常に多く、ニュースアジェンダのペースを考えると、混乱やミスの可能性があった。その一方で、制作プロセスの早い段階でアセット(画像や動画)を準備した方が、作品にとって有益だという意見もあった。

編集スタッフのニーズに対応するため、小規模のチームが、既存のウェブベースのツールと密に連携し、メッセージングとアセット共有機能を提供するツールの開発に取り組んできた。目標は、新たにスタンドアロンのツールを作成することなく、既存のツールセットにコラボレーション機能を組み込み、編集者が制作中のコンテンツアイテムのコンテキストでコラボレーションできるようにすることだ。

Pinboardは、クライアント、サーバー、インフラストラクチャのコードにTypeScriptを使用している。クライアントアプリケーションはPreactEmotionで作成され、Webpackを使ってバンドルされた。GraphQLクライアントライブラリとしてApolloを使用している。サーバーサイドでは、すべてのビジネスロジックを実行するためにAWS Lambdaが使用され、ユーザーとアイテムのデータを保存するためにAWS RDS for PostgreSQLが使用されている。AWSのマネージドGraphQLサービスであるAWS AppSyncは、APIを介してPostgresデータベースや他のシステムを含む様々なデータソースを抽象化するために使用される。インフラのプロビジョニングにはAWS CDKカスタムCDKラッパー、ビルドツールにはesbuildが使われている。

Pinboardのアーキテクチャ(出典:The Guardian Engineering Blog

Pinboardのアーキテクチャはサーバーレスコンポーネントに大きく依存しており、Lambda関数が編集ツールに組み込むクライアントアプリケーションの提供、AppSyncリゾルバの提供、メール(SESを使用)とウェブプッシュ通知の配信、データの同期、認証など、さまざまな役割を担っている。

Pinboardは、カスタムのデータ集約レイヤーのコーディングを回避するために、複数のソースからデータを取得し集約するためにGraphQLを使用し、APIのアダプタファサードとして機能する。GraphQLはクエリだけでなく、ミューテーションもサポートしている。ミューテーションはデータを追加/変更するための操作であるため、クエリのように並列ではなく、GraphQLサーバーによって逐次的に実行される。

GraphQLが提供する3つ目の操作タイプは、GraphQLサブスクリプションであり、クライアントがGraphQLサーバーへのアクティブな接続を維持し(もっとも一般的にはWebSocket経由)、バックエンドデータへの変更に関するほぼリアルタイムの通知を提供する、長期的なフェッチ操作を表す。AppSyncは3つのGraphQL操作タイプすべてをサポートし、さらにサブスクリプションサーバーサイドフィルターとサブスクリプション無効化を定義する機能を提供する。また、WebSocket経由の非同期メッセージ配信を支援するPub/Sub APIもサポートしている。

AWS AppSyncの概要(出典:AWS AppSyncウェブサイト

社内のプロモーションにより、PinboardはGuardian紙でより多くの採用を獲得しつつあり、チームは新機能の提供を目指している。例えば、編集記事に関するメモを送信することで、本文にメモが追加され、誤って公開されるリスクを回避する機能や、電子メールや添付ファイルに頼っていたプロセスに代わる、画像の制作・補正に関するワークフローの改善など、新機能の提供を目指している。

作者について

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT