もんりぃ is undefined.

育児ネタとか、技術ネタとか。

Unity 2018.3.0b7 で Unity Package Manager の民主化が進んだので検証してみた

TL; DR

  • 今はまだ移行できない
  • が、民主化まであと一歩なので、準備は進めた方がヨサソウ

Unity Package Manager について

  • ググれ
  • Unity が提供する新しいパッケージマネージャ
  • GUI 経由で各種パッケージを追加・更新・削除できるやーつ

2018.3.0b7 について

2018/10/24 (恐らく太平洋時間?)に公開された 2018.3 系の最新ベータ。

それのリリースノートに以下の記述が…!

Package Manager: Add experimental support for Git package dependencies.

キタ━━━━━(゚∀゚)━━━━━!!!!

早速試したお!

https://twitter.com/monry/status/1055273094435098624 https://twitter.com/monry/status/1055301050268151809

少なくとも public repository からコードを取得するコトは難なくできた。

「遂に umm が民主化された…!?」と思ったけど、そんなコトもなかった。

現状の課題

依存の依存

  • manifest.json (Unity のプロジェクトが依存するパッケージを指定するファイル)には GitHub とかを含む git やら https やらのプロトコルを指定出来た。
  • が、依存先のパッケージの package.json には git やら https やらのプロトコルを指定出来なかった。
  • つまり、まだ依存解決のモジュールとして使うコトはできなさそう。

SemVer 記法

  • yarn ではできるが npm やら upm やらではできないコトとして、 Git リポジトリのバージョンに対する SemVer 指定ができない という問題点がある。
    • まぁ、実は npm の場合は git://github.com/monry/foo.git#semver:^1.0.0 みたいな書き方できるんだけど、ちょっと不便。
    • yarn は git://github.com/monry/foo.git#^1.0.0 こんな感じに書ける。
  • で、upm に関しては、どちらの書き方も許容されていない感じだった。
  • 基本的には manifest.jsonlock ノードで頑張る感じ…なのかな?

更新検知

  • 現時点では、GitHub を参照している場合に於いて、GitHub 側で新しい Version が作られても検知されない。
  • manifest.jsonlock ノードの対象パッケージに関する記述を消せば、再チェック掛けてくれるもよう。
  • そのうち何か提供されると信じたい。

パッケージ作成のワークフロー

現状考えているパッケージ開発のワークフローは以下のような感じ。

パッケージ新規開発

  • 任意のローカルパスに開発用のディレクトリを作成
  • package.json を配置
    • 各フィールドはテキトーに書き換えよう!
{
  "name": "tv.monry.upm.test",
  "dependencies": {
  },
  "version": "1.0.1",
  "unity": "2018.2",
  "displayName": "Monry Test",
  "description": "",
  "keywords": [
    "unity"
  ],
  "readme": "test test test"
}
  • この package.json を Package Manager Window の Add package from disk... から追加
    f:id:monry84:20181025134219p:plain
    f:id:monry84:20181025134413p:plain
  • 無事に追加されました :tada:
    f:id:monry84:20181025134319p:plain
  • 今回追加した Packages/Monry Test/ はあくまでローカルディレクトリへの参照なので、普通にスクリプトの追加とかができます。便利!

パッケージ公開

  • 個別のパッケージ自体は単なるディレクトリなので、普通に git で管理して GitHub に push しましょう。

プロジェクト設定

  • パッケージ開発中の manifest.json には "tv.monry.upm.test": "file:///Users/monry/Developer/git/monry/upm-test" 的な内容が書かれている。
  • パッケージが公開された以降は "tv.monry.upm.test": "git://github.com/monry/upm-test.git" などと書き換えましょう。

パッケージ改修

  • これが結構メンドイ。
  • 一回プロジェクトの manifest.jsonGitHub → ローカルディレクトリに向け直す必要がある。
  • ちょっと頑張ればエディタ拡張作れそうな気もするので、何か、まぁ、頑張れ。

まとめ

  • Release Note にもあるように、今はまだ Experimental Support のレベルなので、もう一歩って感じです。
  • が、民主化は目前なので、ライブラリ開発を行う各位は準備に向けて動くと良いんじゃないでしょうか?

おまけ

今回検証したリポジトリは以下の通りです。