今年の Google I/O では、AI を活用した開発に役立つ新しい製品とツールを発表しました。また、デベロッパーの皆さんが、Google のツールの力を最大限に活用し、最も高性能な AI モデルをアプリやゲームに統合することで、ユーザーにとって素晴らしく革新的な体験を構築できるよう、Gemini API デベロッパー コンペティションを開始しました。このコンテストでは、カスタマイズした電気自動車バージョンのデロリアン(と多額の賞金)を獲得するチャンスがあります。
I/O クロスワードの遊び方
遊び方は次の通りです。
ステップ 1 : 4 つのマスコットからチームを選びましょう。選んだマスコットの色が、単語を解いたときにマスが変わる色になります。選んだチームの合計得点に各自のスコアが反映されます。
ステップ 2 : 次に、ボード上の好きな場所からスタートしましょう。
ステップ 3 : 単語が解けないときは、「ヒントを見る」ボタンを試してみてください。yes か no で回答できる質問を投げかけることで、解答に導きます。(最大 10 回まで)
ステップ 4 : 連続で単語を解くほど、リーダーボードの順位が (チームでも個人でも) 上がります!スコアを投稿し、Google Developer Program のプロフィール用バッジを獲得しましょう。
ゲーム開発に活用した技術の裏側
Gemini: ブランドにとって安全で、時事性があり、クリエイティブなコンテンツ
I/O クロスワードを作成することが目的だったので、今年の I/O でグーグルが発表した内容を元に、単語やヒントを作成したいと思いました。そこで、Gemini Advanced に YouTube 上にアップロードされている Google I/O の基調講演 3 時間分を読み込んでもらい、I/O の製品発表を楽しく学ぶための、時事的な技術関連の単語とヒントを作成してもらいました。
Gemini アプリは、Google の最先端のAI モデルを誰でもすぐに利用できるよう、会話型インターフェースを通じて提供しています。今回私たちが Gemini Advanced を活用した主な理由は、他の多くの LLM と比較しても、ナレッジ カットオフが直近で、最新の情報をインターネットから取得できるためです。
Gemini API: Gemini モデルの機能を活用して、体験を構築する
しかし、本当にエキサイティングなのは、皆さん自身が同じ Gemini モデルを使ってさまざまなサービスを構築できることです。Gemini API を使用すると、Google の AI モデルを皆さんのアプリケーションに統合できます。今回のクロスワード パズルでは、エンゲージメントを高め、離脱を減らすために、Gemini API と Firebase Genkit を活用し、プレイヤーが行き詰まったときにゲームを続けられるように設計された「ヒント」機能を加えました。これらは、あらゆるアプリのバックエンドに AI 機能を簡単に追加できる新しいフレームワークです。 プレイヤーが「ヒントを聞く」ボタンをクリックして質問すると、Genkit フローが「はい」か「いいえ」で答えられるような質問を受け取り、関連する手がかりや過去の質問を収集、この情報を Gemini 1.5 Flash モデルに送信します。そして、ユーザーへの質問に「はい」か「いいえ」の回答をするように具体的に指示されたモデルは、プレイヤーを正しい単語へと導きます。 この機能の詳細については、Firebase ブログの詳しい記事 (英語) をご覧ください。
Flutter and Dart: インタラクティブなユーザー インターフェースとマルチ プラットフォーム パフォーマンス
ゲームの UI は Flutter で構築されています。Flutter のプラットフォームに対する柔軟性とパフォーマンスの高さは、ダイナミックでインタラクティブなゲームを構築する上で最適な選択でした。クロスワード ボードをレンダリングし、スムーズなナビゲーションを可能にするために、Flutter の InteractiveViewer ウィジェット (英語) を採用しました。このウィジェットは、大きなコンテンツ エリアでのパンやズームといったユーザー インタラクションを処理するように設計されているため、広大なクロスワード グリッドを探索するのに理想的でした。 このゲームは、プレイヤーが同じボード上で同時にプレイするコラボレーション体験を提供しているため、優れたゲーム体験を可能にするにはパフォーマンスがとても重要です。そのため、このゲームは Google I/O (英語) で Flutter ウェブアプリの Stable チャンネルに移行した WebAssembly (WASM) にコンパイルされています。InteractiveViewer ウィジェット内での行列変換の使用や、WASM が高いフレームレートを維持するために、どのように役立ったかといったトピックについての詳細は、ブログ (英語) をご覧ください。
Firebase: ホスティング、ボードのリセット、ゲーム体験の確保
Firebase は、バックエンド機能を提供するため、クロス プラットフォームで動作するさまざまなツールを提供しています。稼働中のアプリケーションは Firebase Hosting でホストされ、アプリケーションからのすべてのデータは Firestore に保存されます。Firestore はリアルタイムで動作し、世界中のユーザーがパズルを完成させるとライブ アップデートが保存され、ユーザーがゲームに参加したり離脱したりすると自動的にスケーリングします。
クロスワードが完成すると、ボード全体がリセットされるため、ゲームは常にオン状態で、新しいユーザーが参加してもすぐにプレイできます。この機能は Cloud Functions for Firebase によって実現されています。 Flutter アプリが Firestore に直接アクセスする場合、App Check と anonymous auth を設定してリーダーボード API を保護し、認証されたユーザーだけがアクセスできるようにします。Firebase Authentication を使用すると、ゲームに参加するすべてのユーザーが匿名で認証され、個々のスコアを追跡し、リーダーボードに表示することができます。
Dart Frog and Cloud Run: フロントエンドとバックエンドのコード共有
Dart で構築されたバックエンドは、API コールの管理、データベースとの連携、Flutter アプリからのリクエスト処理を行います。Cloud Run は自動スケーリング機能を提供し、スムーズなユーザー エクスペリエンスを保証します。
不正行為を防ぐため、Dart Frog (英語) バックエンドを採用しています。アプリは Firestore からデータを読み込むことができますが、変更を加えることができるのは Dart Frog バックエンドのみです。このアーキテクチャと認証メカニズムにより、フェアプレーが保証されます。
遊んでみよう
I/O クロスワードを実際に体験してください。ご興味のある方のために、コードはオープンソース化されています。私たちは、この事例を Gemini API デベロッパー コンテストで、皆さんの作品に活かしていただけることを楽しみにしています。 開発を始めるにあたって、開発プロセスをサポートするためのコンテンツ (英語) をご用意しました。ぜひご覧ください。
Posted by Tamao Imura - Developer Marketing Manager, Google Developer Marketing