サーバーレス

Gannett、Google のサーバーレス プラットフォームを使用して次世代の読者にリーチ

Google_Blog_Serverless.jpg

※この投稿は米国時間 2020 年 6 月 10 日に、Google Cloud blog に投稿されたものの抄訳です。

編集者注: 今回は、260 以上の出版物を刊行している米国最大の地方ニュース組織である Gannett にお話を伺いました。コミュニティ内で有意義なつながりを作ることをミッションとしている Gannett は最近、Google Cloud のフルスタック サーバーレス フレームワークを基盤にし、高度にパーソナライズされたモバイル ニュース アプリケーションを開発しました。その方法の詳細をお読みください。 

Gannett は以前から、読者にとって興味深く関連性の高いニュースを簡単に追えるように、カスタマイズされたニュース リーダー アプリケーションを作成したいと考えていました。また、Gannett のニュースを新しいオーディエンス、特に若い読者に届けるアプリケーションも必要としていました。そして昨年、Cincy Sports Catchup というモバイルアプリによって、これらをすべて実現しました。このアプリでは、Gannett のローカルソースのスポーツ記事やフルスクリーンの画像が非常にパーソナライズされて表示され、読者はゲーム的要素を取り入れた形式で気軽に楽しむことができます。また、パーソナライズされた関連コンテンツのバンドルを 1 日に 2 回自動的に配信し、読者の連続使用日数、読んだ記事の数、その他のマイルストーンのスコアを記録するゲームで熱心な読者に報酬を与えます。

1 Gannett.jpg
インタラクティブな Cincy Sports Catchup アプリのスクリーンショット

最初の結果は有望でした。Cincy Sports Catchup の読者は、既存のオーディエンスよりも若く、同じ市場の既存のネイティブ アプリ ユーザーよりもエンゲージメントが高くなっていました。毎月の利用頻度が約 10% 高く、1 回のアクセスあたり平均 4~5 本多くの記事を読んでいました。この早い段階での成功により、他の市場やトピックを調査して、より多くのユーザーにリーチし、製品をさらに改良できました。

ニュースをさらにパーソナライズする

何年もの間、Gannett はキュレーションを通じてコンテンツを提供してきました。ニュースルームの編集者が、その日の関連ニュース記事から読者に提供するものや、中でも重点的に取り上げるものを選択するプロセスを行ってきました。このキュレーション プロセスにはメリットがあるため、Gannett は今日もこのプロセスを活用して最も重要なニュース体験を提供しています。一方で、新しいオーディエンスにリーチするために、別の手法を試してみたいとも考えていました。特に、メインとなるモバイル アプリケーションに最近追加して成功した 2 つの機能を基礎としたいと考えました。「My Topics」という機能では、トピックを選択してカスタマイズされた記事リストを作成し、アラートを受信できます。「Caught Up」という機能では、ユーザーが見逃した可能性のある最も重要なニュースを素早くスワイプして確認できます。この 2 つの機能が成功を収めたことは、ユーザー主導のコンテンツで新しいアプリを開発するための良いモデルケースとなりました。 

Cincy Sports Catchup は、コンテンツのパーソナライズ、選択、優先順位付けのためのクラウドベース テクノロジーを評価するエンジニアリング主導の取り組みである Project Flash から最初にリリースされたアプリです。これは Google Cloud への最初の試みではありませんでした。Project Flash の前に、すでに Google Cloud インフラストラクチャを使用して、Google Kubernetes Engine(GKE)と BigQuery のデプロイを行っていました。新しいアプリのクラウド アーキテクチャを開発する際、Amazon Web Services のような類似のオプションを検討しましたが、最終的にはアナリティクス、Remote Config、A/B Testing などの複数の Firebase サービスとのシームレスな連携と、Firebase の手頃で柔軟な費用モデルが決め手となり、引き続き Google Cloud を使用することにしました。

Project Flash アーキテクチャ

私たちのパーソナライゼーション アーキテクチャは、Cloud Firestore、Cloud Functions、Firebase、Google アナリティクス、Cloud Pub/Sub、Firebase Messaging、Firebase Remote Config、さらに Crashlytics と Test Lab を使用して、アプリケーションの全体的な品質を保証しています。

アーキテクチャの概要は次のとおりです。

2 Gannett.jpg

部分ごとにさまざまなメリットがもたらされる仕組みになっています。

  • Firebase Remote Config と A/B Testing の組み合わせにより、構成可能な値を設定し、その値のバリエーションをアプリで試して、それがどのように顧客に受け取られているかをすばやく評価することが非常に簡単になります。
  • Firebase 向け Google アナリティクスにより、Google のユーザー属性データの活用、ユーザー アクティビティに関するリアルタイム データの提供、ユーザー セグメントを介したユーザー エクスペリエンスのパーソナライズが可能になります。
  • Cloud Functions により、バックエンド サービスを迅速にデプロイして、ユーザーの好みに合わせてカスタマイズされたコンテンツ フィードを提供できます。サーバー環境を管理して維持する必要がなくなることで、優れた製品の開発に集中する時間ができます。Cloud Firestore により、大量のユーザー固有のデータをクラウドに保存して、リアルタイムで取得できます。
  • Cloud Pub/Sub と Firebase Messaging により、好みのスケジュールで最新のニュース「バンドル」をユーザーに通知できます。 

ニュース バンドルの作成方法

このアプリのコンセプトはとてもシンプルです。ユーザーが関心のあるトピックを選択すると、カスタマイズされた通知スケジュールで 1 日に 2 回、15 個のニュース項目のバンドルが配信されます。前述のように、Project Flash はキュレーションよりパーソナライズを優先するアプローチを採用しています。ユーザーがトピックを選択できるようにするだけでなく、選択したトピックに対するユーザーの関心を評価し、さまざまな方法でバンドルにわずかな調整を加えます。たとえば、トピックのグループが表示される場所を並べ替えたり、本当に気に入っているトピックのコンテンツをもう少し追加したりします。これを行うために、Firebase ツールと数行の iOS / Android 共有コードを使用します。それでは詳しく見ていきましょう。

Flash ベースのアプリ アーキテクチャは、以下のいくつかのプロパティに基づいてニュース バンドルを作成します。

  • トピック コンポーネント - ユーザーが選択した興味
  • トピック比率 - ユーザーのトピックへの親和性に基づいた、個々のトピックがバンドルにおいて占めることのできる割合。ユーザーの興味をどのように判断するかについては、以下で詳しく説明します。
  • トピックの重要性 - トピックが表示される順序。これは、ユーザーの反応、閲覧習慣、時期などに基づいて変化する可能性があります。

ユーザーのトピックへの親和性を測定するために、ユーザーが記事や動画を高評価または低評価したとき、またはユーザーが「消費」(読む、視聴、またはその他の方法で表示)したときに、常に分析呼び出しを行います。以下の画像は、Google アナリティクスのダッシュボードでこうしたイベントの傾向が表示されるようすを示しています

3 Gannett.jpg

Firebase ユーザーリスト ツールを使用して、分析を通じて収集したデータを活用します。ユーザーリスト ツールを使用すると、ユーザーベースをセグメントに分割するルールを構築できます。あるトピックへの関心が高いユーザーを特定するために、過去 30 日間に少なくとも 8 個の「消費」イベントと「高評価」イベント、および 8 個以下の「低評価」イベントをチェックします。

4 Gannett.jpg

これで Firebase Remote Config の個々の設定に条件付きルールを作成できるようになりました。これにより、構成の異なるバリアントが各オーディエンスに配信されます。トピック比率では、これはフィールド「positiveTopicShare」の更新を意味します。まず、指定したオーディエンスと、オーディエンス フィールドが含まれる特定のアプリをターゲットとする、新しい条件ルールを作成します。

5 Gannett.jpg

次に、条件ルールに基づいてフィールドにバリアントを追加します。

6 Gannett.jpg

アプリでは、この構成により、対象トピックが表示される確率が 25% 増加します。デフォルトでは、ユーザーの関心のあるすべてのトピックが同じ割合で表示されます。

トピックのリストを保持し、アイテムが表示される順序を定義するトピック順序の構成フィールドにも同じ戦略を使用します。バンドルの最初のアイテムの見出しは通知の説明文でもあり、ユーザーをアプリに引き付ける役割があります。そのため、ユーザーがどのトピックに最も興味を持っているかを特定することの重要性はさらに高まります。

7 Gannett.jpg

アプリから Cloud Functions 関数を呼び出します。この関数は社内のコンテンツ API から、アプリで構成されたすべてのトピックのコンテンツのリストを返します。それに対する応答として、共有されている Kotlin マルチプラットフォーム ライブラリがユーザーの構成バージョンとトピック設定を取得し、ユーザー用に個別に作成されたバンドルを吐き出します。

設定のテスト

Project Flash のデザインのもう一つの優れた点は、Firebase A/B Testing と Remote Config の緊密な統合を利用して A/B テストを実行できることです。具体的には以下をテストしました。

  • さまざまな広告モデル(ブロッキング インタースティシャルと非ブロッキング インタースティシャル、インタースティシャル広告の数やリズムの違い)が、読者のエンゲージメントにどのように影響したかを確認
  • 異なるサイズのニュース バンドル
  • パーソナライズ ルール(バンドル内のトピックのさまざまな構成と位置を微調整)

8 Gannett.jpg

ラインナップに人工知能を追加する

Project Flash の最初の試みである Cincy Sports Catchup は大きな成功を収めました。読者のエンゲージメントを向上させて、モバイル中心の若いオーディエンスをコンテンツに引き付けるという目標を達成しました。さらに、Google Cloud には、今後の Flash ベースのアプリで使用できるその他のテクノロジーも多数あります。たとえば、Cincy Sports Catchup は、レコメンデーション エンジンではなくパーソナライズに大きく依存しています。しかし、私たちは今後のアプリでこれを再検討することにオープンな姿勢でいます。また、Firebase MLKit と TensorFlow Lite を使用し、人工知能によってニュースの提案を生成する方法を模索したいと考えています。Google Cloud と連携して、新世代のニュース リーダー向けのツールを作成できることを楽しみにしています。


謝辞

多くの方々にこのプロジェクトの成功とブログ投稿に貢献していただきました。Gannett のモバイル開発担当シニア デベロッパー Andre Jones、モバイル開発担当シニア マネージャー Mike Croghan、製品管理担当ディレクター Peter Ferrara、モバイル開発担当マネージャー Stephan Walters、製品マーケティング担当ディレクター Kelli Papendick、広報担当ディレクター Stephanie Tackach に感謝を申し上げます。また、Google Cloud チームのフィールド営業担当者である Derek Tomlinson 氏、テクニカル アカウント マネージャーである Kuntal Mitra 氏にも感謝を申し上げます。

- By Gannett モバイル開発担当ソフトウェア エンジニア Andre Jones