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点を呼びかけました。

  1. バージョニングを宣言する: どのようなルールでバージョン番号を付けているのかを明確に示す
  2. 宣言したバージョニングを守る: 宣言したルールに従って、バージョン番号を正しく更新する
  3. 破壊的変更を行う場合の対応:
    • 可能であれば、破壊的変更を避ける
    • やむを得ず破壊的変更を行う場合は、メジャーバージョンを上げる
    • ユーザーに分かりやすく、変更内容を伝える

セマンティックバージョニングの注意点

発表では、セマンティックバージョニングを実践する上での注意点も紹介されました。

  • 破壊的変更の定義: どこまでの変更を破壊的変更とするかは、明確な定義がないため、開発者間で認識を合わせることが重要
  • プレリリース版の扱い: プレリリース版のバージョン番号の付け方や、比較方法には注意が必要
  • 開発初期段階での運用: 開発初期段階では、破壊的変更が多発しがちですが、可能な限りルールを決めて運用することが重要

まとめ

VRChat向け開発において、セマンティックバージョニングは重要な役割を担っています。開発者の方は、今回の発表を参考に、セマンティックバージョニングを正しく理解し、適切に運用することで、ユーザーに安心して利用してもらえるアバターやツールを提供できるように心がけましょう。