versioningの話:VRChat SDKアップデートで起きた問題とセマンティックバージョニングの運用方法
詳細情報
集会名 | 個人開発集会 |
---|---|
日時 | 2023年09月28日 22:30 - 23:00 |
テーマ | versioningの話 |
発表者 | anatawa12 |
発表資料 |
発表のハイライト
- VRChatのSDKアップデートをきっかけに、アバター開発などで使用されるツールがバージョン不整合を起こし、正常に動作しなくなる事例が発生
- 原因はセマンティックバージョニングの誤解や、運用方法が適切でなかったこと
- VRChat向け開発でアバターやツールを公開する開発者は、セマンティックバージョニングを正しく理解し、利用者に迷惑をかけないよう注意喚起
VRChat SDKアップデートで発生した問題
2023年9月28日に行われたVRChatの「個人開発集会」にて、anatawa12さんが「バージョニングの話」というテーマでLT発表を行いました。
anatawa12さんは、ご自身が開発しているアバター最適化ツール「アバターオプティマイザー」の開発経験を踏まえ、VRChat向け開発におけるバージョン管理の重要性について解説しました。
発表では、VRChatのSDKバージョンが3.2.0、3.3.0とアップデートされる中で、バージョニングの不整合によって様々なツールが動作しなくなる事例を紹介しました。
具体的には、VRChat SDK 3.1.12のアップデートにおいて、バグ修正版であるパッチバージョンにも関わらず、新規APIの追加が行われていました。これはセマンティックバージョニングに違反する変更であり、anatawa12さんが「アドバンスドブール事件」と呼ぶ問題を引き起こしました。
この変更により、VRChat SDKのバージョン管理に依存しているツールは、想定外のエラーやコンパイルエラーが発生し、正常に動作しなくなりました。
セマンティックバージョニングとは?
セマンティックバージョニングとは、ソフトウェアのバージョン番号を「メジャー.マイナー.パッチ」の形式で記述し、変更内容に応じて番号を上げていくルールです。
- メジャーバージョン: APIの破壊的な変更があった場合にインクリメント
- マイナーバージョン: 後方互換性を保った機能追加があった場合にインクリメント
- パッチバージョン: 後方互換性を保ったバグ修正があった場合にインクリメント
セマンティックバージョニングに従うことで、開発者はバージョン番号を見るだけで、ソフトウェアの変更内容を把握することができます。
VRChat SDKで何が問題だったのか?
VRChat SDKは、公式ドキュメント上でセマンティックバージョニングに従うと宣言していました。しかし、実際にはパッチバージョンである3.1.12で、セマンティックバージョニングに違反する破壊的な変更が行われていました。
この食い違いが、開発者やユーザーに混乱を招き、様々な問題を引き起こす原因となりました。
バージョニングを正しく運用するために
anatawa12さんは、VRChat向け開発でアバターやツールを公開する開発者に向けて、以下の3点を呼びかけました。
- バージョニングを宣言する: どのようなルールでバージョン番号を付けているのかを明確に示す
- 宣言したバージョニングを守る: 宣言したルールに従って、バージョン番号を正しく更新する
- 破壊的変更を行う場合の対応:
- 可能であれば、破壊的変更を避ける
- やむを得ず破壊的変更を行う場合は、メジャーバージョンを上げる
- ユーザーに分かりやすく、変更内容を伝える
セマンティックバージョニングの注意点
発表では、セマンティックバージョニングを実践する上での注意点も紹介されました。
- 破壊的変更の定義: どこまでの変更を破壊的変更とするかは、明確な定義がないため、開発者間で認識を合わせることが重要
- プレリリース版の扱い: プレリリース版のバージョン番号の付け方や、比較方法には注意が必要
- 開発初期段階での運用: 開発初期段階では、破壊的変更が多発しがちですが、可能な限りルールを決めて運用することが重要
まとめ
VRChat向け開発において、セマンティックバージョニングは重要な役割を担っています。開発者の方は、今回の発表を参考に、セマンティックバージョニングを正しく理解し、適切に運用することで、ユーザーに安心して利用してもらえるアバターやツールを提供できるように心がけましょう。