推しアイデア
背景画像が毎回変わる!? 待機時間が楽しくなる!
背景画像が毎回変わる!? 待機時間が楽しくなる!
ゲームにAWSリソースをいろいろな意味で組み込みたかったから!!!
AWSをつかってサーバーレスのみの構成です! ECSとかは甘え!!!
# Topaz - AI背景生成オンラインババ抜き
リアルタイムでオンライン対戦可能なババ抜きにおいて、ルームごとにテーマを決定し、テーマに基づいた画像をAIが生成してプレイ画面の背景とするプロダクト
https://github.com/periotto3/rakko
リアルタイムでオンライン対戦可能なババ抜きにおいて、ルームごとに別のテーマを決定し、テーマに基づいた画像をAIが生成し、プレイ画面の背景とするプロダクトを作成した。

テーマ決め時に FigJam を利用してチームメンバー全員でブレインストーミングや案出しを行い、簡単な設計を進めた。

アイデアを決めるのには苦労したが、メンバーの多様な知見を活かして独自性のあるコンセプトに辿り着いた。
もともとカードと背景どちらもAIに別々に生成させる要件だった。生成完了をどう検知してユーザーに通知するかについて、チーム内で意見が分かれた。
| 案 | 提案者 | 概要 |
|---|---|---|
| DynamoDB でステータス管理 | メンバーA | S3の状況を追跡する DynamoDB を導入し、ステータスで管理する |
| S3 ディレクトリのポーリング監視 | メンバーB | S3のディレクトリ構造をポーリングして生成完了を検知する |
客観的に見れば「ステータス管理が必要かどうか」が論点だったが、双方の提案の具体性が不十分で共通認識を持てず、論点を明確にした議論ができなかった。
振り返り: 次回は図や表にすべて書き起こし、議論に必要な情報を明示してから進めたい。

| カテゴリ | 技術 | バージョン |
|---|---|---|
| フレームワーク | Next.js | 16.1.6 |
| UIライブラリ | React | 19.2.3 |
| 言語 | TypeScript | ^5 |
| スタイリング | Tailwind CSS | ^4 |
| リンター | ESLint | ^9 |
src/ ├── app/ │ └── babanuki/ │ └── page.tsx ← 画面遷移の管理(親コンポーネント) └── features/ └── babanuki/ ├── components/ ← UI(画面・部品) ├── services/ ← バックエンドとの通信・ゲームロジック └── lib/ ← 純粋なゲームエンジン・型定義
| カテゴリ | 技術 |
|---|---|
| 言語 | TypeScript |
| API | API Gateway (WebSocket) |
| コンピュート | AWS Lambda |
| データベース | Amazon DynamoDB |
| IaC | AWS CDK |

backend/websocket/ ├── bin/ │ └── websocket.ts # CDKエントリーポイント ├── lib/ │ └── websocket-stack.ts # CDKスタック定義 ├── lambda/ # Lambda関数(クリーンアーキテクチャ) │ ├── index.ts # Lambdaハンドラーエントリーポイント │ │ │ ├── presentation/ # 🔵 プレゼンテーション層 │ │ ├── handler/ │ │ │ ├── connectHandler.ts # WebSocket接続ハンドラー │ │ │ ├── disconnectHandler.ts # WebSocket切断ハンドラー │ │ │ └── messageHandler.ts # メッセージルーティング │ │ └── dto/ │ │ ├── clientMessage.ts # クライアント→サーバーのDTO │ │ └── serverMessage.ts # サーバー→クライアントのDTO │ │ │ ├── application/ # 🟢 アプリケーション層(ユースケース) │ │ ├── useCase/ │ │ │ ├── connectUseCase.ts # 接続ユースケース │ │ │ ├── disconnectUseCase.ts # 切断ユースケース │ │ │ ├── joinGameUseCase.ts # ゲーム参加ユースケース │ │ │ ├── drawCardUseCase.ts # カードを引くユースケース │ │ │ └── getStateUseCase.ts # 状態取得ユースケース │ │ └── error/ │ │ └── applicationError.ts # アプリケーション例外 │ │ │ ├── domain/ # 🟡 ドメイン層(ビジネスロジック) │ │ ├── model/ │ │ │ ├── card/ │ │ │ │ ├── card.ts # カードエンティティ │ │ │ │ └── deck.ts # デッキ(カードの集合) │ │ │ ├── player/ │ │ │ │ ├── player.ts # プレイヤーエンティティ │ │ │ │ └── publicPlayer.ts # 公開プレイヤー情報 │ │ │ ├── game/ │ │ │ │ ├── game.ts # ゲーム集約ルート │ │ │ │ ├── gamePhase.ts # ゲームフェーズ(値オブジェクト) │ │ │ │ ├── gameRepository.ts # ゲームリポジトリIF │ │ │ │ └── ranking.ts # ランキング │ │ │ ├── connection/ │ │ │ │ ├── connection.ts # 接続エンティティ │ │ │ │ └── connectionRepository.ts # 接続リポジトリIF │ │ │ ├── matchmaking/ │ │ │ │ ├── matchmaking.ts # マッチメイキングエンティティ │ │ │ │ ├── matchmakingRepository.ts # マッチメイキングリポジトリIF │ │ │ │ ├── rouletteSlot.ts # ルーレットスロット │ │ │ │ ├── promptBuilder.ts # プロンプト生成 │ │ │ │ └── themeData.ts # テーマデータ │ │ │ ├── notification/ │ │ │ │ └── notificationService.ts # 通知サービスIF │ │ │ └── imageGeneration/ │ │ │ └── imageGenerationService.ts # 画像生成サービスIF │ │ └── error/ │ │ └── domainError.ts # ドメイン例外 │ │ │ └── infrastructure/ # 🔴 インフラストラクチャ層(実装詳細) │ ├── dynamodb/ │ │ ├── dynamoDBClient.ts # DynamoDBクライアント │ │ ├── connectionDynamoDBRepository.ts # 接続リポジトリ実装 │ │ ├── gameDynamoDBRepository.ts # ゲームリポジトリ実装 │ │ └── matchmakingDynamoDBRepository.ts # マッチメイキングリポジトリ実装 │ ├── websocket/ │ │ └── apiGatewayNotificationService.ts # 通知サービス実装(API Gateway) │ └── http/ │ └── httpImageGenerationService.ts # 画像生成サービス実装(HTTP) │ ├── test/ # テスト │ ├── actions.test.ts │ ├── game-logic.test.ts │ └── websocket.test.ts ├── docs/ # ドキュメント ├── package.json ├── tsconfig.json ├── cdk.json └── jest.config.js
| カテゴリ | 技術 |
|---|---|
| コンピュート | AWS Lambda |
| AI モデル | Amazon Bedrock (stability.sd3-5-large-v1:0) |
| ストレージ | Amazon S3 |

| カテゴリ | 技術 |
|---|---|
| AI | Amazon Bedrock, Amazon SageMaker |
| コンテナ | Amazon ECR |
| ストレージ | Amazon S3 |
https://code.claude.com/docs/en/amazon-bedrock
次のAWSハッカソンで使いたいと思ったので、備忘録として残しておきます。
curl -fsSL https://claude.ai/install.sh | bash
aws configure
# ClaudeでBedrockを使用するための設定 export CLAUDE_CODE_USE_BEDROCK=1 export AWS_REGION=us-east-1 # 使用するモデルの設定 # 例: 各モデルのデフォルトを特定のBedrock推論プロファイルIDに固定 export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-5-20250929-v1:0'
常にBedrockを使いたい場合は~/.bashrcで設定しましょう。
これでclaudeで起動すると、Bedrock経由でClaudeを使用できます!
