Unityの開発サイクルとバグ修正への
取り組みについて
2018/5/9
講演者名 黒河 優介
ユニティ・テクノロジーズ・ジャパン合同会社
Enterprise Consulting Developer Relations Manager / Engineer
黒河 優介
私自身はエンジン開発に関わっていません。
しかしサポートの立場として、開発チームにバグ修正依
頼をしたりバグの状況や修正されたバージョンがいつ
届くのかを確認してにお客様にお伝えしています。
今回は、そこで得た知見をこの場をお借りして発表しま
す。
ユニティ・テクノロジーズ・ジャパン合同会社
Enterprise Consulting Developer Relations Manager / Engineer
wotakuro wotakuro ykurokawa@unity3d.com
• Unity
•
• Unity
• Unity
• Unity
Unity
3
• UnityEditor
• Unity Project
• Unity IAP / PostProcessingStack
• Web
• Unity Analytics / PerformanceReporting / Unity Connect
Unity
•
• Unity Editor
•
Unity
Unity
3
• UnityEditor
• Unity Project
• Unity IAP / PostProcessingStack
• Web
• Unity Analytics / PerformanceReporting / Unity Connect
本講演では、UnityEditor自体の開発サイクルやバグへの取り組
みについてお話します。他二つについてはお話しません。
Unity
Unity
• Unity
•
Unity
•
• Unity 2017.1
• Unity 2017.2
• Unity 2017.4 (LTS Version)
• Unity 2018.1
•
• Unity 2018.2(β)
※2018/5/7 時点
LTS Versionについては後ほど説明します
Unity
• Editor Mercurial
•
• Editor
• trunk
• 2017.1 / 2017.2 / 2017.3 / 2018.1
※ 2017.3.0f3 – 2017.3.1f1
trunk
unity 2018.2
unity 2018.1
unity 2017.3
βリリース等を機に trunkから分岐し、
別ブランチになります。
リリースごとにタグを打ちます
trunk
unity 2018.2
unity 2018.1
unity 2017.3
(2)
各バージョンのブランチには直接コミットはされ
ず、Pull Requestベースでの更新になります
PullRequest
PullRequest
PullRequest
※2017
2017.3 Unity
• Unity 2017.3 f p 2
• Unity 2017.3.0f3
2017.3.0p1 -> 2017.3.0p2 -> 2017.3.0p3 -> 2017.3.0p4
2017.3.1f1
• 2017.3.0f3 -> 2017.3.0p1 -> 2017.3.0p2 -> 2017.3.0p3 -> 2017.3.0p4 ->
2017.3.1f1 -> 2017.3.1p1 -> 2017.3.1p2 .....
•
p1 p2 p3 p4
2017.3.0f3
2017.3.1f1
2017.3.0f3に、p1~p4で修正されたもの
を取り込んだのが 2017.3.1f1になります
2017.3 Unity
p1 p2 p3 p4
2017.3.0f3
2017.3.1f1
バグの修正対応を行っていきます
QAでは修正項目がちゃんと修正され
たかを重点的にチェックします
2017.3 Unity
p1 p2 p3 p4
2017.3.0f3
2017.3.1f1
この間は修正箇所以外の網羅的なQAを重
点的に行い、致命的な事が起きない限りは
基本的に新規バグ修正は行いません
2017.3 Unity
•
•
p
• QA
f
2017.3 Unity
2018 LTS
https://blogs.unity3d.com/jp/2018/04/09/new-plans-for-unity-releases-introducing-the-tech-and-long-term-support-lts-streams/
LTS(LongTermSupport)
Unity
• 1
• Tech LTS
• Tech
• ( 201x.3 ) LTS
2
※サポートを止めると言っても、ソフトウェアの更新が止まるのみで、利用自体は可能です。
Unity 5.3
5.3 2017.2
Unity 5.4
Unity 5.5
Unity 5.6
Unity 2017.1
Unity 2017.2
リリースしてからおよそ1年ほどの期間、どのバージョンに対しても
バグ修正等の更新を行い、サポートしてきました
Unity 2017.4 (LTS)
Unity 2018.1
Unity 2018.2
Unity 2018.3
Unity 2018.4 (LTS)
Unity 2019.1
Unity 2017.3
Techストリーム LTSストリーム
Unity 2017.4 (LTS)
Unity 2018.1
Unity 2018.2
Unity 2018.3
Unity 2018.4 (LTS)
Unity 2019.1
Unity 2017.3
その年の最後にリリースしたバージョンがLTSへ昇格し、
以後24か月間バグ修正更新を行うサポートをします
Unity 2017.4 (LTS)
Unity 2018.1
Unity 2018.2
Unity 2018.3
Unity 2018.4 (LTS)
Unity 2019.1
その代わり、年の最後でないバージョンについては、
新しいバージョンがリリースされるのと同時に更新が
止まります。
Unity 2017.3
2018.1.0f3
Unity 2017.4以降では、全てのリリースにfを付け、
網羅的なQAプロセスを経てからリリースするようになります
Unity
2018.1.1f1 2018.1.2f1 2018.1.3f1
LTS FAQ
Q 2017.3 2017.4
A 2017.3
Q
A LTS 2017.4 / 2018.4
LTS 2018.3
※2018.4 2018.3
• Unity
• 2017.3
• 2017.3.0p4 2017.3.1f1
QA
• 2017.4 QA
• 2017.4 Unity LTS 2
• Unity 2017.4 Unity 2017.3
• Unity
•
1)
2) Unity
3)
4) TIPS
1)
• Unity
Help -> Report a Bug...
•
( )
•
•
•
• Unity
•
※参考:https://unity3d.com/jp/unity/qa/bug-reporting
2)
• Unity (Fogbugz)
• QA
•
• Issue Tracker
※IssueTracker:https://issuetracker.unity3d.com/
Issue Tracker
※IssueTracker:https://issuetracker.unity3d.com/
•
•
• Issue VOTE
Issue Tracker VOTE
※IssueTracker:https://issuetracker.unity3d.com/
VOTE数は Unity アカウントに紐づき回数は
有限ですが、VOTEを取り下げれば回数が
復帰します。
ここで、Issueに対してVOTE出来ます。
VOTE数が多いと、Unityは優先的にIssueの
対応を行います
3)
•
•
1.機能を開発しているブランチで修正を
行います。
2.バグレポートにある再現プロジェクトを手順通り
行い、問題が起こらなくなった事を確認します
3.修正を確認後、最新版にマージしてもらうため
プルリクエストを出します
4.プルリクエストが承認されて、
修正が最新版に入りました。
※
unity 2018.2 β
unity 2018.1
unity 2017.4
1.最新版でバグの修正を行いました
unity 2018.2 β
unity 2018.1
unity 2017.4
2.最新版でバグレポートの再現プロジェクト・
手順で再現しなくなる事を確認します
unity 2018.2 β
unity 2018.1
unity 2017.4
3.それぞれ各バージョンへ修正を
順次適用(可能な範囲内で)
unity 2018.2 β
unity 2018.1
unity 2017.4
4.それぞれ各バージョンで再現プロ
ジェクトと手順を確認し、問題が解決
したことを確認します
unity 2018.2 β
unity 2018.1
unity 2017.4
5.最後に他のバグ修正と共にリリース
され、皆様の元へお届けします
リリース
リリース
リリース
Unity
※このような流れのため、報告されてからバグ修正まで時間を要します。
より確実な修正を行うため、このような手順となっております。
4) TIPS
• Issue Tracker
• Issue ID
• Regression ( / )
Issue Tracker
• Active
• Fixed
• Postponed
• Duplicate Issue
• Not Reproducible Unity
• Won’t Fix
• By Design
• Fix in Review :
Issue ID
Release Note Issue Tracker
Issue ID
Regression
•
• 2018.1.0f3 2018.1.1f1
• Unity bisect ( )
•
•
bisect
2018.1.0f3 2018.1.1f1
「2018.1.0p1で発生しなかったバグが、2018.1.0p2で発生する」という場合に、その間のいずれかの
変更によってバグが発生したことになります。
どの変更が悪いかを確定するために、Unityではbisectで原因となった変更を特定する事が多いです
何らかの変更を
表します
bisect
2018.1.0f3 2018.1.1f1
まずは、「問題のなかったバージョン」「問題の起きたバージョン」
の中間地点でUnityEditor自体をビルドします。
このバージョンで起きるかどうかをチェックします。
調べた結果、問題は起きませんでした。
bisect
2018.1.0f3 2018.1.1f1
先ほどチェックして問題のなかったバージョンと、問題のあるバージョンの
中間地点をピックアップして再びチェックします。
このバージョンでは問題が発生しました。
bisect
2018.1.0f3 2018.1.1f1
再び問題のあるバージョンと、ないバージョンの中間をピックアップして調
査します。
このバージョンでも問題が発生しました。
bisect
2018.1.0f3 2018.1.1f1
直前のバージョンでは問題が起きていないのに、このバージョンで
起きているので、このバージョンで行った変更が悪さをしています
bisect
•
•
Unity
Unity
ワークアラウンドで
回避可能?
IssueTrackerに
バグは登録済み?
Unityバグ
VOTEしてUnity側に困っている事を
伝えてください
バグレポート対応へ
ワークアラウンドで回避。
(今後の開発等のためにも、
後の処理もお願いします。)
YES
YES
NO
NO
Unity
Unityのバージョンを
上げて解決する?
バグレポート対応
(可能な限り)問題となっている部分を切り出して、
最小限のUnityプロジェクトを作成してください。
そして、Unityへバグレポートをお願いします。
Release Noteに該当Issueの番号で
修正があると思うので、Unity側で
バグ修正が入っています。
バージョンを上げてください
YES
NO
5.6.3f1 2017.4.0f1 UI
5.6.3f1 2017.4.0f1
※
5.6.3f1
問題となる箇所だけ
抜き出した最小プロジェクト
です
5.6.3f1 2017.4.0f1
Regression
Unity
1) 5.6 -> 2017.4
2017.1.0f3 / 2017.2.0f3 / 2017.3.0f3
2) 2017.3.0f3 2017.3
2017.3.0p1 2017.3.1p4
3) 2017.3.1p1 -> 2017.3.1p2
• Unity
Help -> Report a Bug...
•
( )
•
•
•
• Unity
•
※参考:https://unity3d.com/jp/unity/qa/bug-reporting
実際に書いてみたレポートです
バグの再現頻度や、起きる場所、連絡用のメール
アドレス、バグを1行で簡単に説明します
参考情報としてバグのタイトルから関連していそうな
リンク一覧を表示してくれます
1.実際にどういう問題が起こっているのかの説明
2.バグを再現するための手順の説明
(特定のプラットフォーム端末のみ起こる場合はその情報も併せて記載してください)
※英語で御願い致します
レポートに添付するファイルです。
問題を再現する最小プロジェクトファイルを添付します
今回は、説明用に画像ファイルも添付しました
expected result(2017.3.1p1/ 5.6.3f1)
actual result(2017.3.1p2 / 2017.4.0f1)
左のように、望む結果
と実際の結果( expected
result / actual result)の
二つの結果を一枚の画
像にまとめてレポート
に添付しました
レポートに必要な情報がそろっていそうかを判別して
バーで表示しています。
緑色になって問題なさそうなら Sendを押して送信します
レポート完了後に、入力した
アドレス宛にメールが届きます。
その後しばらくすると、issueとして
登録されます。
※Unity側で一旦編集して、個人や組織
を特定するような部分、再現プロジェ
クトを省いた状態で掲載されます。
TIPS
• β
• Unity Unity /
Unity
•
•
•
Feedback
feedback https://feedback.unity3d.com/
バグではないけれど、機能自体の追加
要望等は Feedbackにてお願いいたし
ます。
ここでの要望は将来的な話となり、現
在リリースされるバージョンに機能が
入る事はありません。
• Unity
• 2017.4 LTS
2
• Issue Tracker
•
• Unity
Thank you!

【Unite Tokyo 2018】Unityの開発サイクルとバグへの取り組みについて