VCCで使えるパッケージ(VPMパッケージ)を作ってみよう!
詳細情報
発表内容のハイライト
- VRChatのパッケージマネージャーVPMについて解説
- VPMパッケージを作成する手順を解説
- VPMレポジトリを作成する手順を解説
- 作成時に詰まりやすいポイントを紹介
VCCでツールをもっと便利に!VPMパッケージとは?
VRChatで利用されているVCC(VRCSDKのツール群)ですが、皆さんは使っていますか?VCCは、VRCSDKの配布や、VRCSDKに依存するツールの配布に使われています。
Unityでは、UPM(Unity Package Manager)パッケージを導入することで、様々な機能を追加できますが、VRCSDKにはライセンス的な問題からUPMが使えないため、VCC独自の「VPMパッケージ」という仕組みが使われています。
VPMパッケージとは、VRChatが開発したパッケージマネージャーを使って管理されるパッケージの形式です。VRCSDKやAvatarOptimizerなどのツールが、このVPMパッケージとして配布されています。
VPMパッケージを使うことで、ユーザーは
- 大量のUnityPackageから最新版を探さなくて済む
- バージョン間の非互換性によるエラーを避けやすくなる
- VRCSDKと一緒に管理できる
といったメリットがあります。開発者にとっても
- ファイルの削除ができる
- 任意の依存関係を持たせられる
といったメリットがあり、より柔軟で効率的な開発が可能になります。
VPMパッケージの作成方法
VPMパッケージを作成するには、いくつかの手順が必要です。
1. package.jsonを書く
package.jsonは、VPMパッケージのマニフェストファイルです。UPMパッケージのマニフェストと似ており、npmのフォーマットをベースにしています。
パッケージ名、バージョン、説明、依存関係など、パッケージに関する情報を記述します。ドキュメントを読んだり、他のパッケージのpackage.jsonを参考にすれば、それほど難しくありません。
2. Assembly Definitionを作成する
Assembly Definitionは、Unityでコードを整理するための仕組みです。VPMパッケージでは必須で、Assets以下のフォルダに直接コードを配置すると、Assembly-CSharpに全て含められてしまい、整理が難しくなります。
Assembly Definitionを使用することで、コードを複数のファイルに分割し、コンパイルを並列化したり、外部からアクセスできないようにしたりできます。
3. エディター拡張を作成する
エディター拡張は、Unityのエディターに機能を追加するためのコードです。VPMパッケージで使用するエディター拡張も、通常のUnityプロジェクトと同様に作成できます。
リソースへのアクセスには、GUIDかPackagesフォルダ以下のパスを使用します。
4. パッケージをリリースする
最後に、作成したパッケージをzipファイルに圧縮し、公開する必要があります。VPMレポジトリにアップロードするか、zipファイルを配布してユーザーに手動でインストールしてもらうことができます。
anatawa12さんは、GitHub Actionsを使って、マニフェストのバージョン更新からVPMレポジトリへの公開までを自動化しているそうです。
VPMレポジトリの作成
VPMレポジトリは、VCCにパッケージを認知させるために必要なものです。
- package.jsonを連結したjsonファイル
- zipファイルのリンク集
を静的ホスティングサービスに配置して作成します。anatawa12さんは、Cloudflare Pagesを使ってドキュメントとまとめて管理しているそうです。
VPMパッケージ作成時の注意点
VPMパッケージを作成する際には、いくつか注意しておきたい点があります。
- ドキュメントが不足しているため、既存のパッケージを参考にしながら進める必要がある
- VCCのバグに悩まされる可能性がある
まとめ
VCCで使えるパッケージ(VPMパッケージ)を作成することで、VRCSDKや自作ツールをより簡単に管理し、開発効率を上げることができます。VPMパッケージの作成は、最初は少しハードルが高く感じるかもしれませんが、手順を踏んで一つずつ進めていけば、きっとあなたもVPMパッケージを作成できるはずです!
VPMパッケージを使って、あなただけのオリジナルツールをVCCで配布してみてくださいね!