Skip to content

機能仕様書: OpenUPM配布のUPMパッケージ署名対応(Unity 6.3+) #79

@akiojin

Description

@akiojin

Spec

機能仕様書: OpenUPM配布のUPMパッケージ署名対応(Unity 6.3+)

要件ID: SPEC-636fc0af
作成日: 2025-12-17
ステータス: 下書き
入力: ユーザー説明: "署名対応をしてもらいたいので、それが出来る仕組みを考えてください。仕様やTDD対応もしてください。"

ユーザーシナリオ&テスト (必須)

ユーザーストーリー1 - Unity 6.3+で署名警告を出さずに利用したい (優先度: P1)

Unity 6.3 以降で com.akiojin.unity-cli-bridge を OpenUPM から導入したとき、Package Manager の署名ステータスが「署名なし(警告)」にならず、出所と改ざん検知の観点で安心して利用したい。

この優先度の理由: ユーザー体験(警告表示/不安)に直結し、パッケージの信頼性に関する一次情報として最重要のため。

独立テスト: Unity 6.3 (6000.3) 以降の Editor で OpenUPM から該当バージョンを導入し、Package Manager の署名インジケータが警告(署名なし/無効)ではないことを確認する。

受け入れシナリオ:

  1. 前提 Unity 6.3+ の新規プロジェクト、実行 OpenUPM から com.akiojin.unity-cli-bridge@X.Y.Z をインストール、結果 署名ステータスが警告(署名なし/無効)にならない
  2. 前提 同上、実行 パッケージを再インポート/再解決、結果 署名ステータスが安定して同一の結果になる

ユーザーストーリー2 - タグリリースで署名付きパッケージを自動公開したい (優先度: P2)

メンテナとして、vX.Y.Z タグ作成後に CI が署名付き UPM tarball(.tgz)を生成し、OpenUPM レジストリへ公開してほしい。手動での署名生成や公開を避け、リリースの一貫性を保ちたい。

この優先度の理由: P1 を継続的に満たすためのリリース基盤であり、ヒューマンエラー(署名忘れ/公開漏れ)を防ぐため。

独立テスト: CI 上で「署名 tarball 生成」工程が .attestation.p7m の存在を検証し、OpenUPM publish が成功することを確認する。

受け入れシナリオ:

  1. 前提 mainvX.Y.Z タグが作成済み、実行 Publish ワークフローが起動、結果 署名付き .tgz が生成され OpenUPM に公開される
  2. 前提 署名に必要な Secrets が未設定、実行 Publish ワークフローが起動、結果 OpenUPM publish は失敗し、原因(不足している設定)がログで明確にわかる

ユーザーストーリー3 - ローカルでも署名生成を再現したい (優先度: P3)

メンテナ/開発者として、CI 以外でも署名付き UPM tarball の生成を再現し、問題発生時に切り分け(署名生成/パッケージ内容/公開)を行いたい。

この優先度の理由: CI 依存のブラックボックス化を避け、障害時の復旧速度を上げるため。

独立テスト: 署名生成用スクリプトを --dry-run で実行し、引数検証と実行コマンド生成が正しいことをユニットテストで確認する。

受け入れシナリオ:

  1. 前提 Unity 6000.3 以降の Editor が利用可能、実行 署名生成スクリプトを実行、結果 署名付き .tgz が生成される
  2. 前提 --dry-run 指定、実行 スクリプトを実行、結果 実行予定コマンド/出力先が表示され、ファイルは生成しない

エッジケース

  • package.json の version とタグ vX.Y.Z が不一致の場合、署名/公開を中止して原因を明示する
  • 出力 tarball に .attestation.p7m が含まれない場合、署名失敗として扱い公開しない
  • OpenUPM 側に同一 version が既に存在する場合、公開失敗を検知し二重公開を防止する
  • Secrets(OpenUPM token / Unity Cloud Org ID / Unity 認証情報)が欠落している場合、失敗理由をログに残す

要件 (必須)

機能要件

  • FR-001: リリースタグ vX.Y.Z をトリガーに、Unity UPM パッケージ(com.akiojin.unity-cli-bridge)の署名付き tarball(.tgz)を生成できる必要がある
  • FR-002: 生成した tarball は .attestation.p7m を含み、Package Manager が検証可能な署名情報を持つ必要がある
  • FR-003: 署名付き tarball を OpenUPM レジストリへ公開できる必要がある
  • FR-004: 署名生成/公開に必要な Secrets や前提条件が欠ける場合、失敗理由が即時に分かるエラーメッセージを出す必要がある
  • FR-005: 署名生成のローカル再現手段(スクリプト)を提供し、少なくとも --dry-run はユニットテストで検証される必要がある

成功基準 (必須)

測定可能な成果

  • SC-001: Unity 6.3+ で OpenUPM から導入した com.akiojin.unity-cli-bridge が署名なし警告(黄色)にならない
  • SC-002: vX.Y.Z リリースで OpenUPM の同バージョンが自動公開され、.attestation.p7m を含む
  • SC-003: 署名生成スクリプトの引数検証/コマンド生成がユニットテストで担保され、回帰が検出できる

Plan

TODO

Tasks

TODO

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