Skip to content

機能仕様書: パッケージ管理機能 #85

@akiojin

Description

@akiojin

Spec

機能仕様書: パッケージ管理機能

機能ID: SPEC-9f4b1a7c
作成日: 2025-10-17
ステータス: 完了
入力: Unityパッケージの検索、インストール、削除、リスト取得、推奨パッケージ提案、レジストリ設定(OpenUPM/NuGet)

実行フロー (main)

1. 入力からパッケージ操作要件を解析
   → 操作タイプ(検索/インストール/削除/リスト/推奨/レジストリ設定)の特定
2. パッケージマネージャー操作の実行
   → 検索: キーワードでパッケージを検索
   → インストール: パッケージIDとバージョンを指定してインストール
   → 削除: パッケージ名を指定して削除
   → リスト: インストール済みパッケージのリスト取得
   → 推奨: カテゴリごとの推奨パッケージ提案
3. レジストリ設定操作(オプション)
   → OpenUPM/NuGetレジストリの追加/削除
   → スコープの管理
   → 人気パッケージのスコープ自動追加
4. パッケージ依存関係の解決
   → 依存パッケージの自動インストール
5. 結果の返却
   → 操作結果とパッケージ情報
6. 戻り値: SUCCESS(パッケージ情報)

⚡ クイックガイドライン

  • ✅ パッケージ管理の自動化とAIエージェントによるパッケージ推奨の必要性に焦点
  • ❌ 内部的なUPMの実装やパッケージ解決アルゴリズムの詳細は避ける
  • 👥 ゲーム開発者・プロジェクトマネージャー・AIエージェント向けに記述

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

主要ユーザーストーリー

開発者として、プロジェクトに必要なパッケージを簡単に追加・管理するために、パッケージ操作をプログラムで実行したい。AIエージェントとして、ユーザーの要求に応じて適切なパッケージを推奨・インストールしたい。

受け入れシナリオ

  1. 前提 新しいパッケージを探したい、実行 キーワードで検索、結果 マッチするパッケージのリストが返される
  2. 前提 TextMeshProをインストールしたい、実行 パッケージID指定でインストール、結果 パッケージがインストールされる
  3. 前提 特定バージョンをインストールしたい、実行 バージョン指定でインストール、結果 指定バージョンがインストールされる
  4. 前提 不要なパッケージを削除したい、実行 パッケージ名指定で削除、結果 パッケージが削除される
  5. 前提 インストール済みを確認したい、実行 リスト取得、結果 全インストール済みパッケージが返される
  6. 前提 組み込みパッケージも含めたい、実行 includeBuiltIn=trueでリスト取得、結果 組み込みパッケージも含まれる
  7. 前提 レンダリング関連のパッケージを推奨してほしい、実行 カテゴリ「rendering」で推奨取得、結果 推奨パッケージリストが返される
  8. 前提 OpenUPMレジストリを追加したい、実行 レジストリ追加(スコープ付き)、結果 manifest.jsonに追加される

エッジケース

  • パッケージが見つからない場合、どう処理するか? → エラーメッセージと類似パッケージの提案を返す
  • 既にインストール済みのパッケージをインストールしようとした場合、どうなるか? → 既にインストール済みであることを通知
  • 依存関係があるパッケージを削除しようとした場合、どう処理するか? → 警告を表示し、依存パッケージのリストを返す
  • インターネット接続がない場合、検索はどうなるか? → エラーメッセージとキャッシュからの検索提案を返す
  • 無効なバージョンを指定した場合、どう処理するか? → エラーメッセージと利用可能なバージョンリストを返す

要件

機能要件

  • FR-001: ユーザーはキーワードでパッケージを検索できる必要がある
  • FR-002: システムは検索結果の最大数を制限できる必要がある(デフォルト20)
  • FR-003: ユーザーはパッケージIDを指定してインストールできる必要がある
  • FR-004: ユーザーは特定のバージョンを指定してインストールできる必要がある
  • FR-005: システムは依存パッケージを自動的に解決してインストールする必要がある
  • FR-006: ユーザーはパッケージ名を指定して削除できる必要がある
  • FR-007: ユーザーはインストール済みパッケージのリストを取得できる必要がある
  • FR-008: システムは組み込みパッケージを含めるオプションをサポートする必要がある
  • FR-009: ユーザーはパッケージの詳細情報(名前、バージョン、説明、依存関係)を取得できる必要がある
  • FR-010: システムは5つのカテゴリ(essential/rendering/tools/networking/mobile)で推奨パッケージを提案する必要がある
  • FR-011: ユーザーはOpenUPMレジストリを追加できる必要がある
  • FR-012: ユーザーはNuGetレジストリを追加できる必要がある
  • FR-013: ユーザーはレジストリを削除できる必要がある
  • FR-014: ユーザーはレジストリにスコープを追加できる必要がある
  • FR-015: システムは人気パッケージのスコープを自動追加できる必要がある
  • FR-016: ユーザーは現在のレジストリ設定をリスト表示できる必要がある

非機能要件

  • NFR-001: パッケージ検索は5秒以内に完了する必要がある
  • NFR-002: パッケージインストールは30秒以内に完了する必要がある(依存関係による)
  • NFR-003: パッケージ削除は10秒以内に完了する必要がある
  • NFR-004: リスト取得は2秒以内に完了する必要がある
  • NFR-005: レジストリ設定更新は1秒以内に完了する必要がある

主要エンティティ

  • PackageInfo: パッケージID、名前、バージョン、説明、依存関係を含むパッケージ情報
  • SearchResult: パッケージID、名前、最新バージョン、説明、評価を含む検索結果
  • RegistryConfig: レジストリ名、URL、スコープ、認証情報を含むレジストリ設定
  • RecommendedPackage: カテゴリ、パッケージID、推奨理由、優先度を含む推奨情報
  • PackageOperation: 操作タイプ(install/remove)、パッケージID、バージョン、結果を含む操作情報

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

コンテンツ品質

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

要件完全性

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

実行ステータス

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

参考実装

実装ファイル

  • unity-cli/src/handlers/package/PackageManagerToolHandler.js
  • unity-cli/src/handlers/package/RegistryConfigToolHandler.js
  • UnityCliBridge/Packages/unity-cli-bridge/Editor/Handlers/PackageManagerHandler.cs

技術詳細

  • UnityEditor.PackageManager.Clientによるパッケージ操作
  • manifest.jsonの直接編集によるレジストリ設定
  • PackageManager.PackageInfo、PackageManager.Requestsの使用
  • OpenUPM、NuGetレジストリのスコープ管理

Plan

実装計画: パッケージ管理機能

機能ID: SPEC-9f4b1a7c | ステータス: 実装完了

概要

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

実装状況

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

参考実装

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


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

Tasks

タスク: パッケージ管理機能

機能ID: SPEC-9f4b1a7c | ステータス: 完了

実装状況

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

完了済みタスク

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

参考

実装詳細については 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