Finalist
AGIRI
A喜利 (Agentic Oogiri) は、自分の大喜利スタイルをAIに学習させて、AIエージェント同士をバトルさせるゲームです。 ユーザーはまず「修行モード」でお題に回答し、AIが自分の笑いの傾向やクセを分析・記憶していきます。エージェントが育ったら「対戦モード」へ。相手のAIエージェントとリアルタイムでぶつかり合い、AI審査員が面白さ・意外性・完成度を採点して勝敗を決めます。試合が終わると、最も笑いを取ったボケをGeminiがイラ
Core trick
Per-user agent learns a player's joke style from practice answers, then battles other agents with an AI judge scoring each punchline.
Description
A喜利 (Agentic Oogiri) は、自分の大喜利スタイルをAIに学習させて、AIエージェント同士をバトルさせるゲームです。
ユーザーはまず「修行モード」でお題に回答し、AIが自分の笑いの傾向やクセを分析・記憶していきます。エージェントが育ったら「対戦モード」へ。相手のAIエージェントとリアルタイムでぶつかり合い、AI審査員が面白さ・意外性・完成度を採点して勝敗を決めます。試合が終わると、最も笑いを取ったボケをGeminiがイラスト化してくれます。
自分は育てて見守るだけ——大喜利が得意じゃなくても、AIクローンが代わりに戦ってくれます。
README excerpt
# A喜利 — AI大喜利バトルゲーム > AIエージェントを育成し, 大喜利バトルで対決させるWebアプリ ## 概要 **A喜利**は, ユーザーが自分だけのAI大喜利エージェントを作成・育成し, 他のAIエージェントと大喜利バトルで対決させるゲームです. 修行モードでボケを磨き, バトルモードでAI同士が思考過程を見せながら笑いを競い合います. ## 技術スタック | レイヤー | 技術 | |---------|------| | Frontend | **Next.js 14** (App Router) + **Tailwind CSS** + TypeScript | | Backend | **Cloud Functions v2** (TypeScript, Node.js 20) | | Database | **Cloud Firestore** (リアルタイム同期) | | Auth | **Firebase Anonymous Auth** | | AI (テキスト) | **Gemini 2.5 Flash** (JSON Mode) | | AI (画像) | **Gemini 3 Pro** (画像生成) | | Hosting | **Vercel** (Frontend) | | 型共有 | **npm workspaces** によるモノレポ (`@agiri/shared`) | ## プロジェクト構成 ``` agiri-gemini3-hackathon/ ├── frontend/ # Next.js 14 (App Router) ├── backend/ # Cloud Functions v2 (TypeScript) ├── packages/ │ └── shared/ # FE/BE 共通の型定義 (@agiri/shared) ├── firebase.json # Firebase 設定 ├── firestore.rules # Firestore セキュリティルール └── package.json # npm workspaces ルート ``` ## セットアップ ### 前提条件 - Node.js 20+ - [Bun](https://bun.sh/) (Backend用) - [mise](https://mise.jdx.dev/) (ランタイム管理, 推奨) - Firebase CLI (`npm i -g firebase-tools`) ### 1. 依存関係のインストール ```bash npm install ``` ### 2. 環境変数の設定 **Frontend** (`frontend/.env.local`): ```bash cp frontend/.env.sample frontend/.env.local ``` 以下の値を設定: ``` NEXT_PUBLIC_FIREBASE_API_KEY= NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN= NEXT_PUBLIC_FIREBASE_PROJECT_ID= NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET= NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID= NEXT_PUBLIC_FIREBAS