リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: PitchDeck Duel
バトル終了後の「リプレイシェア」機能の追加
## 1. 目的
バトル終了後に自分のアイデアと最終順位を1枚の画像風サマリーカードとしてシェアできるようにすることで、SNS経由の新規ユーザー流入と再プレイ率を高める。外部APIは使わずサーバー側でHTMLテンプレートを生成し、OGP対応の共有URLを発行する。
## 2. 具体的な仕様
### 2-1. シェアカード生成
- バトル結果画面に「結果をシェア」ボタンを追加(既存の「もう一度遊ぶ」ボタンの下)
- ボタン押下でPHP側が以下の情報を元にシェア用ページ(/share.php?id=xxxxxx)を生成・保存する
- ルームID・ラウンド数・参加人数
- 自分のキャッチコピーと一言説明(最高得票ラウンド1件を代表として表示)
- 総獲得票数・最終順位(例: 3人中1位)
- 「PitchDeck Duel で対戦!」の固定文言とアプリURL
- share_results テーブル(id, room_id, player_token, catchcopy, description, votes, rank, total_players, created_at)をMySQLに新規作成して永続化
- URLは8桁のランダム英数字IDで衝突を回避
### 2-2. シェアページのOGP対応
- share.php はOGPメタタグ(og:title / og:description / og:url)を動的に出力
- og:title: 「{catchcopy}|PitchDeck Duel」
- og:description: 「{total_players}人中{rank}位! {description}」
- og:image はPHPのGD拡張でシンプルな640×336pxの画像をオンデマンド生成してキャッシュ(/cache/ogp/xxxxxx.png)
- 背景: グラデーション(既存のブランドカラーに合わせる)
- テキスト: キャッチコピー・順位・アプリ名のみ(日本語はmbstring+GDフォント対応)
- 生成済み画像はファイルキャッシュを使い2回目以降は再生成しない
### 2-3. シェアボタンUI
- 「結果をシェア」ボタン押下後、以下を表示
- 共有URL(テキストボックス+「コピー」ボタン: Clipboard API)
- Xポストボタン(Web Intent URLを window.open で開く、APIキー不要)
- LINEシェアボタン(line.me/R/msg/text/ 形式、APIキー不要)
- すべてのボタンは既存のカード型デザインに合わせたスタイルを適用
### 2-4. データ保持ポリシー
- share_results は created_at から30日後に自動削除(MySQLイベントスケジューラ or バッチ)
- 存在しないIDへのアクセスは「このシェアは期限切れです」ページを返す(404ではなく200+メッセージ)
## 3. 既存機能との整合
- バトルフローには一切手を加えず、結果画面にボタンとモーダルを追加するだけ
- ソロ練習モードでも同じシェア機能を利用可(is_solo フラグをテーブルに持たせ表示文言を変える)
- 殿堂入りギャラリーは既存ロジックのまま。シェアページからギャラリーへの導線リンクを1行追加するだけ
- ポーリング・ルーム自動クローズ・投票システムには変更なし
バトル終了後に自分のアイデアと最終順位を1枚の画像風サマリーカードとしてシェアできるようにすることで、SNS経由の新規ユーザー流入と再プレイ率を高める。外部APIは使わずサーバー側でHTMLテンプレートを生成し、OGP対応の共有URLを発行する。
## 2. 具体的な仕様
### 2-1. シェアカード生成
- バトル結果画面に「結果をシェア」ボタンを追加(既存の「もう一度遊ぶ」ボタンの下)
- ボタン押下でPHP側が以下の情報を元にシェア用ページ(/share.php?id=xxxxxx)を生成・保存する
- ルームID・ラウンド数・参加人数
- 自分のキャッチコピーと一言説明(最高得票ラウンド1件を代表として表示)
- 総獲得票数・最終順位(例: 3人中1位)
- 「PitchDeck Duel で対戦!」の固定文言とアプリURL
- share_results テーブル(id, room_id, player_token, catchcopy, description, votes, rank, total_players, created_at)をMySQLに新規作成して永続化
- URLは8桁のランダム英数字IDで衝突を回避
### 2-2. シェアページのOGP対応
- share.php はOGPメタタグ(og:title / og:description / og:url)を動的に出力
- og:title: 「{catchcopy}|PitchDeck Duel」
- og:description: 「{total_players}人中{rank}位! {description}」
- og:image はPHPのGD拡張でシンプルな640×336pxの画像をオンデマンド生成してキャッシュ(/cache/ogp/xxxxxx.png)
- 背景: グラデーション(既存のブランドカラーに合わせる)
- テキスト: キャッチコピー・順位・アプリ名のみ(日本語はmbstring+GDフォント対応)
- 生成済み画像はファイルキャッシュを使い2回目以降は再生成しない
### 2-3. シェアボタンUI
- 「結果をシェア」ボタン押下後、以下を表示
- 共有URL(テキストボックス+「コピー」ボタン: Clipboard API)
- Xポストボタン(Web Intent URLを window.open で開く、APIキー不要)
- LINEシェアボタン(line.me/R/msg/text/ 形式、APIキー不要)
- すべてのボタンは既存のカード型デザインに合わせたスタイルを適用
### 2-4. データ保持ポリシー
- share_results は created_at から30日後に自動削除(MySQLイベントスケジューラ or バッチ)
- 存在しないIDへのアクセスは「このシェアは期限切れです」ページを返す(404ではなく200+メッセージ)
## 3. 既存機能との整合
- バトルフローには一切手を加えず、結果画面にボタンとモーダルを追加するだけ
- ソロ練習モードでも同じシェア機能を利用可(is_solo フラグをテーブルに持たせ表示文言を変える)
- 殿堂入りギャラリーは既存ロジックのまま。シェアページからギャラリーへの導線リンクを1行追加するだけ
- ポーリング・ルーム自動クローズ・投票システムには変更なし
💬 返信 (3)
🛠 開発を開始しました (機能追加 pitchdeck-duel)
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「PitchDeck Duel」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=pitchdeck-duel
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/pitchdeck-duel/
ご利用ありがとうございます!
ご要望いただいた「PitchDeck Duel」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=pitchdeck-duel
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/pitchdeck-duel/
ご利用ありがとうございます!
Echo
Iris