もんりぃ is undefined.

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

Unofficial Unity Package Manager Registry を建ててみました

upm-packages.dev

はじめに

どうも、ここ3年くらい Unity のライブラリ管理について頭を悩ませ続けてきた id:monry84 です。

ライブラリ間の依存を良い感じに解決しつつ、ライブラリの更新も容易になるような方法を常に模索し続けていました。

一応 こんな仕組み を作ってみたりもしていたのですが、依存が深くなると yarn upgrade がメッッッチャ重くなるという問題があって、社内ライブラリの管理などが限界に近い状態になっていました。*1

で、そんな中、 Unity 2019.1 にて Scoped Registry なる仕組みが導入され、オレオレ Package Registry を建てることで Unity Package Manager を用いたライブラリ管理ができるようになったのです!

ってコトで、自前で Registry 開設してみたので、その紹介と利用に関するご案内をしたためる次第であります。

なお、Unity Package Manager の詳細については以下の記事で触れていますので、興味がある人はご覧ください。

monry.hatenablog.com

Unofficial Unity Package Manager Registry is 何?

Unity Package Manager からアクセス可能な Package Registry です。

Unity Package Manager は内部的に npm を使っているのですが、Unofficial Unity Package Manager Registry は npm の仕様に準拠した Registry を建てられる Verdaccio という OSS を用いて構築されています。

本エントリ執筆時点では、私が検証用に書いた幾つかのライブラリと、 UniRx, UniTask, Zenject (Extenject) を勝手に登録しています。

どうやって使うの?(パッケージ利用側)

パッケージを利用する - Unofficial Unity Package Manager Registry

ドキュメント書いたので、ご覧ください。

Unity 公式ドキュメント なども参考にしつつ Packages/manifest.json をセットアップすれば簡単に利用出来ます。

どうやって使うの?(パッケージ登録側)

パッケージを登録する - Unofficial Unity Package Manager Registry

ドキュメント書いたので、ご覧ください。

認証の所をちょっと堅めにしたかったので、upm-packages という GitHub Organizations に登録した OAuth App を用いて認証する形にしています。

ちょっと面倒だとは思いますが、こちらの Google Forms から登録申請をしていただければ、なる早で登録処理を行います。

あんまり堅くしても煩雑になるだけだったので、Verdaccio デフォルトの認証レベルに下げました。 *2

その他

現時点では、パッケージの publish 権限を認証ユーザに全開放しているので、「このパッケージ、他の人に更新されるの嫌なんだけど。」というご要望に対応することができません。 Verdaccio の仕組み的には出来るコトは分かっているので、問い合わせベースで対応していこうかと思っています。 (何か自動化できれば良いんですが、そんな余裕がありませんw)

また、「このパッケージ作って!」というご要望には、気が向いたら対応しますw (こちらも何か自動化できれば良いんですが、そんな余裕が…)

バックエンドは GCP の GKE 使ってたりします。 Kubernates 初めて使ったけど、これ便利ですね。 会社用の Private Scoped Registry 建てる時も、相当簡単にできました。

まとめ

今はパッケージが殆ど無いから利便性低いけど、パッケージが増えてきたら便利になると思います。 賛同者増えると良いなぁー!メンテナとかも増えると嬉しいなぁー!

あ、それと、以下のリポジトリに Star 付けてくれると泣いて喜びます。

github.com

*1:原因としては GitHub 上でのタグの検索が重い所為だったりするのですが、上手い解決方法が無いんですよね…。

*2:Verdaccio 側がもうちょっと良い感じの認証プラグイン(メール認証とか)を作ってくれるコトを期待しつつ、一旦ゆるふわ運用で進めてみようと思います。