Skip to content

機能仕様書: プロジェクト設定管理機能 #80

@akiojin

Description

@akiojin

Spec

機能仕様書: プロジェクト設定管理機能

機能ID: SPEC-7a2c8e6d
作成日: 2025-10-17
ステータス: 完了
入力: Unityプロジェクト設定の取得と更新(Player、Graphics、Quality、Physics、Audio、Time、Build、Editor等)

実行フロー (main)

1. 入力から設定操作要件を解析
   → 操作タイプ(取得/更新)、設定カテゴリの特定
2. 設定カテゴリの選択
   → Player、Graphics、Quality、Physics、Physics2D、Audio、Time、Build、Editor、InputManager、Tags/Layers
3. 設定の取得(取得操作時)
   → includeフラグに基づいて必要なカテゴリのみ取得
4. 設定の更新(更新操作時)
   → 確認フラグ(confirmChanges)の検証
   → カテゴリごとの設定値の検証と適用
5. 設定変更の永続化
   → AssetDatabaseの保存とプロジェクトファイルの更新
6. 結果の返却
   → 更新された設定値または取得した設定情報
7. 戻り値: SUCCESS(設定情報)

⚡ クイックガイドライン

  • ✅ プロジェクト設定の自動化とAIエージェントによる設定管理の必要性に焦点
  • ❌ 内部的なUnityの設定ファイル構造やシリアライゼーションの詳細は避ける
  • 👥 ゲーム開発者・プロジェクトマネージャー・AIエージェント向けに記述

ユーザーシナリオ&テスト

主要ユーザーストーリー

開発者として、プロジェクト設定を一括で確認・変更するために、設定をプログラムで操作したい。AIエージェントとして、ユーザーの指示に従ってプロジェクト設定を最適化したい。

受け入れシナリオ

  1. 前提 プロジェクト設定を確認したい、実行 Player設定のみ取得、結果 会社名、製品名、バージョンが返される
  2. 前提 グラフィックス設定を確認したい、実行 Graphics設定を含めて取得、結果 カラースペース、レンダーパイプラインが返される
  3. 前提 会社名を変更したい、実行 Player設定更新(confirmChanges=true)、結果 会社名が更新される
  4. 前提 重力を変更したい、実行 Physics設定更新、結果 重力ベクトルが更新される
  5. 前提 VSync設定を変更したい、実行 Quality設定更新、結果 VSync countが更新される
  6. 前提 確認なしで更新しようとした、実行 confirmChanges=falseで更新、結果 エラーが返される
  7. 前提 全設定を一括確認したい、実行 全includeフラグをtrueで取得、結果 全カテゴリの設定が返される

エッジケース

  • confirmChangesがfalseで更新した場合、どう処理するか? → エラーメッセージと確認フラグの説明を返す
  • 無効な設定値を指定した場合、どう処理するか? → バリデーションエラーと有効な範囲を返す
  • カラースペースを変更した場合、再起動は必要か? → 再起動が必要であることを警告
  • 設定更新に失敤した場合、ロールバックされるか? → Unity側の制限により部分的に適用される可能性がある
  • 複数のカテゴリを同時に更新した場合、どうなるか? → すべての設定が順次適用される

要件

機能要件

  • FR-001: ユーザーは11種類の設定カテゴリから必要なものを選択して取得できる必要がある
  • FR-002: システムはPlayer設定(会社名、製品名、バージョン、ウィンドウ設定等)の取得/更新をサポートする必要がある
  • FR-003: システムはGraphics設定(カラースペース、レンダーパイプライン等)の取得/更新をサポートする必要がある
  • FR-004: システムはQuality設定(品質レベル、VSync、アンチエイリアス、影等)の取得/更新をサポートする必要がある
  • FR-005: システムはPhysics設定(重力、ソルバー、スリープ閾値等)の取得/更新をサポートする必要がある
  • FR-006: システムはPhysics2D設定(重力、イテレーション等)の取得/更新をサポートする必要がある
  • FR-007: システムはAudio設定(グローバル音量等)の取得/更新をサポートする必要がある
  • FR-008: システムはTime設定(固定タイムステップ、タイムスケール等)の取得/更新をサポートする必要がある
  • FR-009: システムはBuild設定(ビルドシーン、ターゲットプラットフォーム等)の取得をサポートする必要がある
  • FR-010: システムはEditor設定(Unity Remote、シリアライゼーションモード等)の取得をサポートする必要がある
  • FR-011: システムはInputManager設定(レガシー入力システム)の取得をサポートする必要がある
  • FR-012: システムはTags/Layers設定の取得をサポートする必要がある
  • FR-013: 設定更新時にconfirmChangesフラグ(安全性確認)が必須である必要がある
  • FR-014: システムは設定更新後にAssetDatabaseを保存する必要がある
  • FR-015: システムは再起動が必要な設定変更を警告する必要がある

非機能要件

  • NFR-001: 設定取得は2秒以内に完了する必要がある(全カテゴリの場合)
  • NFR-002: 設定更新は3秒以内に完了する必要がある(複数カテゴリの場合)
  • NFR-003: 設定値のバリデーションは即座に実行される必要がある
  • NFR-004: 設定更新の失敗時にエラーメッセージを明確に返す必要がある
  • NFR-005: 設定取得時のメモリ使用量は10MB以下である必要がある

主要エンティティ

  • ProjectSettings: 各カテゴリの設定値を含むプロジェクト設定情報
  • PlayerSettings: 会社名、製品名、バージョン、ウィンドウ設定を含むPlayer設定
  • GraphicsSettings: カラースペース、レンダーパイプラインを含むGraphics設定
  • QualitySettings: 品質レベル、VSync、アンチエイリアス、影距離を含むQuality設定
  • PhysicsSettings: 重力、ソルバーイテレーション、閾値を含むPhysics設定
  • SettingsUpdateRequest: カテゴリごとの更新値、確認フラグを含む更新要求

レビュー&受け入れチェックリスト

コンテンツ品質

  • 実装詳細なし(言語、フレームワーク、API)
  • ユーザー価値とビジネスニーズに焦点
  • 非技術関係者向けに記述
  • すべての必須セクション完成

要件完全性

  • [要明確化]マーカーが残っていない
  • 要件はテスト可能で曖昧さがない
  • 成功基準は測定可能
  • スコープが明確に境界付けられている
  • 依存関係と前提条件が識別されている

実行ステータス

  • ユーザー説明を解析済み
  • 主要概念を抽出済み
  • 曖昧さをマーク済み
  • ユーザーシナリオを定義済み
  • 要件を生成済み
  • エンティティを識別済み
  • レビューチェックリスト合格

参考実装

実装ファイル

  • unity-cli/src/handlers/settings/SettingsGetToolHandler.js
  • unity-cli/src/handlers/settings/SettingsUpdateToolHandler.js
  • UnityCliBridge/Packages/unity-cli-bridge/Editor/Handlers/ProjectSettingsHandler.cs

技術詳細

  • PlayerSettings、QualitySettings、PhysicsSettings等の静的APIを使用
  • EditorBuildSettings、EditorSettings、TagManagerによる設定管理
  • AssetDatabase.SaveAssetsによる永続化
  • 設定変更の検証とエラーハンドリング

Plan

実装計画: プロジェクト設定管理機能

機能ID: SPEC-7a2c8e6d | ステータス: 実装完了

概要

本機能は既に実装済みです。このplan.mdは実装完了後に作成されました。

実装状況

  • ✅ Phase 0: Research完了
  • ✅ Phase 1: Design完了
  • ✅ Phase 2: Task planning完了
  • ✅ Phase 3: Tasks実装完了
  • ✅ Phase 4: 実装完了
  • ✅ Phase 5: テスト完了

参考実装

実装詳細については spec.md の「参考実装」セクションを参照してください。


本ドキュメントは実装完了後に作成されました

Tasks

タスク: プロジェクト設定管理機能

機能ID: SPEC-7a2c8e6d | ステータス: 完了

実装状況

本機能は既に実装済みです。すべてのタスクが完了しています。

完了済みタスク

  • 機能設計
  • コア実装
  • テスト実装
  • ドキュメント作成

参考

実装詳細については spec.md および plan.md を参照してください。


本ドキュメントは実装完了後に作成されました

TDD

TODO

Research

TODO

Data Model

TODO

Quickstart

TODO

Contracts

Artifact files under contracts/ are managed in issue comments with contract:<name> entries.

Checklists

Artifact files under checklists/ are managed in issue comments with checklist:<name> entries.

Acceptance Checklist

  • Add acceptance checklist

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions