概要
14pt達成および最終評価に向けた、残作業と優先度を管理するためのトラッキングIssueです。
初期の要件整理と優先度分析は、Issue内のコメントにアーカイブしています。
最終更新: 2026-07-15
残作業
P0: 評価前の必須対応
P1: 必要なアプリケーション機能
P2: バックエンドおよび品質改善
要件確認が必要
依存関係・実施順序
完了した主要項目
完了済みのIssueやPRは、それぞれの履歴を参照してください。
- 試合終了時のMatch History保存
- アバターアップロードと画像検証
- Prisma設定ファイルの明示
- nginx Alpineイメージのビルド修正
完了条件
# 初期整理
## 概要
develop と GitHub Project の内容を、課題PDFおよび `docs/requirements.md` の要件に照らして整理しました。
目的は、現在の作業優先度が 14pt 達成に対して妥当か、また Issue から漏れている必須要件がないかを確認することです。
結論として、現在 `#111 WebSocket通信ゲームの安定化` を最優先にしている判断は妥当だと思います。
理由は、`#111` が以下の大きな評価項目に直結するためです。
- WebSocket / real-time features: 2pt
- Web based game: 2pt
- Remote players: 2pt
一方で、評価前に明示しておいた方がよさそうな漏れもあります。
- Privacy Policy / Terms of Service
- Docker one command + HTTPS + Chrome console 最終検証
- README 最終要件
- 試合終了時の match history DB保存
- online / in_game / offline 状態
- 統計・ランキング・実績のスコープ確認
---
## 要件別の現状
| 要件 | 状態 | コメント |
|---|---:|---|
| React + NestJS framework | ほぼ完了 | 2pt 主張しやすい |
| Docker / DB / Prisma / HTTPS基盤 | かなり進行 | `Q-011` で最終検証が必要 |
| 認証 | かなり完了 | bcrypt + JWT + Prisma 接続済み |
| ユーザー管理 | 部分〜かなり完了 | profile / avatar / friends はある。online / in_game 状態は弱い |
| WebSocket real-time | 部分完了 | lobby / game socket はあるが、`#111` 完了前は不安定 |
| ユーザーインタラクション | 部分完了 | profile / friend は強い。room chat `#110` が未完了 |
| Web based game | MVP進行中 | server-authoritative 化の途中。`#111` が鍵 |
| Remote players | 未確定 | 別端末 / 再接続 / 同期安定化が未完了 |
| 通知 | 未完了 | `#109` で最小通知一覧を予定 |
| 統計・履歴 | 部分完了 | match history API はあるが、試合終了保存・ランキング・実績が不足 |
| README / Privacy / ToS | 未完了寄り | 評価 reject 回避として必須 |
---
## Project優先度との整合
現在の Project では `#111 WebSocket通信ゲームの安定化` が P0 になっています。
これは課題要件と合っています。
`#111` の子Issueは、課題要件上の `Remote players`、`WebSocket real-time`、`Web based game` を評価可能にするための作業です。
| Issue | 優先判断 |
|---|---|
| `#101 phase遷移をserver-authoritativeにする` | 最優先 |
| `#105 game:join / socket周り修正` | 最優先 |
| `#87 再joinで試合状態が初期化される問題` | 最優先 |
| `#102 reconnect / 再参加フロー` | 最優先 |
| `#85 開始タイミングをクライアント時計依存から外す` | 最優先 |
| `#84 スポーン位置を空きスロットから選ぶ` | 重要・局所修正 |
| `#86 rankingをサーバー側でソート` | 重要・結果表示の整合性 |
| `#107 切断/再接続要件定義` | 仕様整理済み。実装判断基準 |
---
## 現在割り振られている作業について
現在、主に以下が割り振られている認識です。
- WebSocket通信ゲームの安定化
- `Q-008` ルーム内チャット
- `Q-009` 通知
- CPU
- ユーザーアップロード
- `Q-007` マッチ履歴UIと簡易ランキング
このうち、14pt達成に対する優先度は以下のように見ています。
### WebSocket通信ゲームの安定化
最優先でよさそうです。
理由:
- WebSocket 2pt
- Web based game 2pt
- Remote players 2pt
に直結するためです。
### Q-008 ルーム内チャット
優先度は高いです。
User interaction 2pt の補強になります。
スコープは最小でよさそうです。
- 同じRoom内の2ユーザーがメッセージ送受信できる
- DM / グローバルチャット / 既読 / 検索などはやらない
### Q-009 通知
重要ですが、`#111` よりは後でよさそうです。
Minor 1pt 相当の不足分を埋める位置づけです。
最小スコープは以下で十分そうです。
- フレンド申請
- ゲーム招待
- アプリ内通知一覧表示
push通知、メール通知、複雑な通知設定、通知検索などはスコープ外でよさそうです。
### CPU
CPU は、14pt達成だけを見ると優先度は高くなさそうです。
`local_cpu` room の土台はありますが、requirements.md の14pt計画には AI Opponent / CPU は含まれていません。
そのため CPU は以下の位置づけがよさそうです。
- 1人デモ用
- ゲーム体験の補助
- Remote players が不安定な場合の保険
- 余裕があれば強化
`#111` や `Q-007/Q-008/Q-009` より優先する理由は薄いと思います。
### ユーザーアップロード
User Management 2pt を固める意味で重要です。
バックエンドの `/uploads`、5MB制限、Docker volume、画像保存はあります。
ただし、プロフィール編集から実際にアップロードし、ユーザーの `avatarUrl` に反映されるところまで最終確認が必要です。
優先度は `Q-008/Q-007/Q-009` と同列か、少し下くらいだと思います。
### Q-007 マッチ履歴UIと簡易ランキング
重要です。
backend に match history API があり、frontend に HistoryTab / MatchHistoryCard / useMatchHistory もあります。
ただし、`ゲーム統計・マッチ履歴` の 1pt を主張するなら、試合終了時に `Match` / `MatchParticipant` をDB保存するところまで必要そうです。
Q-007 に含めるか、別Issueとして切るかを決めたいです。
---
## Issue化した方がよさそうな漏れ
### Privacy Policy / Terms of Service ページ追加
課題PDF上、欠けると reject 対象です。
- フッターなどからアクセス可能にする
- placeholder ではなく、プロジェクトに合った内容にする
- README からも参照できるようにする
### Docker one command + HTTPS + Chrome console 最終検証
評価 reject 回避として重要です。
- `make` 等でワンコマンド起動できる
- `https://localhost:8443` でアクセスできる
- frontend / backend / Socket.io / uploads が HTTPS 経由で動く
- 最新 Chrome で console error / warning がない
`Q-011` に含めるなら、それでよさそうです。
### README 最終要件
`Q-012` に含めるか、独立Issue化してもよさそうです。
README に必要そうな内容:
- 英語で記述
- チームメンバーのロール・貢献
- 選択モジュール一覧とポイント計算
- DB schema
- 技術スタック選定理由
- AI 使用箇所
- Privacy Policy / Terms of Service への参照
### Match history の試合終了時保存
`Q-007` に含めるか、別Issueにした方がよさそうです。
- game end 時に `Match` / `MatchParticipant` を作成する
- 勝敗、相手、日時、kills などを保存する
- profile の履歴UIに反映する
### 統計・ランキング・実績のスコープ確認
`docs/requirements.md` では以下が #8 に含まれています。
- 個人の勝敗履歴
- グローバルランキング
- ゲーム別統計
- 実績・バッジシステム
現状は履歴APIと簡易ランキング中心に見えるため、実績・バッジをやるか、スコープを調整するか決める必要があります。
### オンライン / ゲーム中 / オフライン状態
`docs/requirements.md` の User Management 要件に含まれています。
現状 friends service は `offline` 固定に見えるため、要件として主張するなら対応Issue化した方が安全です。
---
## 優先順位案
14pt達成を優先するなら、以下の順がよさそうです。
```text
P0:
1. WebSocket通信ゲームの安定化 (#111)
2. Docker one command + HTTPS + Chrome console 確認 (Q-011)
3. Privacy Policy / Terms of Service の最低限ページ
P1:
4. Q-007 マッチ履歴UI + 簡易ランキング + 試合終了時DB保存
5. Q-008 ルーム内チャット
6. ユーザーアップロードの実API接続とプロフィール反映
P2:
7. Q-009 通知一覧
8. CPU
P3:
9. README最終整備
ただし、README は P3 としていても、評価直前にまとめてやると危ないため、早めに骨子だけ作っておくのが安全だと思います。
提案
今の Project の方向性は基本的に合っていると思います。
ただし、CPU の優先度が高すぎる場合は少し調整した方がよさそうです。
14pt達成を優先するなら、CPU より以下の方が優先度は高いと思います。
#111
Q-007
Q-008
Q-009
Q-011
Privacy Policy / Terms of Service
README 最終要件
結論として、まずは #111 を最優先で閉じる。
その後、Q-007/Q-008/Q-009 と mandatory の漏れを潰す、という進め方が安全だと思います。
概要
14pt達成および最終評価に向けた、残作業と優先度を管理するためのトラッキングIssueです。
初期の要件整理と優先度分析は、Issue内のコメントにアーカイブしています。
最終更新: 2026-07-15
残作業
P0: 評価前の必須対応
P1: 必要なアプリケーション機能
P2: バックエンドおよび品質改善
要件確認が必要
依存関係・実施順序
完了した主要項目
完了済みのIssueやPRは、それぞれの履歴を参照してください。
完了条件