Skip to content

14pt達成に向けた要件棚卸しと優先度確認 #112

Description

@rt6500

概要

14pt達成および最終評価に向けた、残作業と優先度を管理するためのトラッキングIssueです。

初期の要件整理と優先度分析は、Issue内のコメントにアーカイブしています。

最終更新: 2026-07-15


残作業

P0: 評価前の必須対応

P1: 必要なアプリケーション機能

P2: バックエンドおよび品質改善

要件確認が必要


依存関係・実施順序


完了した主要項目

完了済みのIssueやPRは、それぞれの履歴を参照してください。

  • 試合終了時のMatch History保存
  • アバターアップロードと画像検証
  • Prisma設定ファイルの明示
  • nginx Alpineイメージのビルド修正

完了条件

  • P0のIssueがすべて完了している
  • 14ptとして主張する機能が実際に動作する
  • 最新Chromeで重大なConsole Error・Warningがない
  • HTTPS経由でFrontend・Backend・Socket.io・Uploadsが動作する
  • READMEに必要な説明とポイント計算が記載されている

# 初期整理
## 概要

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 の漏れを潰す、という進め方が安全だと思います。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions