VOOZH about

URL: https://www.infoq.com/jp/news/2024/03/guardian-pinboard-serverless/

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


BT

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

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

2024年3月18日 読了時間 4 分

作者:

翻訳者

原文リンク(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が使われている。

👁 Image

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もサポートしている。

👁 Image

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

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

作者について

Rafał Gancarz

もっと見るより少なく
  • 関連記事

    • 関連スポンサーコンテンツ

特集コンテンツ一覧

InfoQ ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

BT