Unity

Unityでテストプレイ中にBacklogへバグチケットを登録するツール

Unityでテストプレイ中にBacklogにバグチケットを登録するツール
記事内に商品プロモーションを含む場合があります

Unityエディタでテストプレイ中に見つけたバグを、Unity上からフォームに情報を入力してスクリーンショット・ログと一緒にBacklogにチケット登録するツールを作りました。

発行されたチケットBacklogに登録されたチケット

プロジェクト運用に合わせて内容をカスタマイズしてもらいたいのであくまで作例ではありますが、そのまま導入しても使えると思うので導入方法を解説していきます。

実装方法の紹介はQiitaに投稿していますので、カスタマイズしたい方はこちらを参考にして下さい。

Backlogとは

nurab社によって運営されているタスク管理サービスです。Backlogではタスクの単位を「課題」と呼び、プロダクトのバグ管理にも利用することが可能です。(プログラム上はTicketでややこしいので課題のことを記事内ではチケットと呼びます)

今回は「1プロジェクト10人まで」といった制約が付いているフリープランで利用できる機能の範囲内を想定しています。

制限例として、チケットに添付できるファイル数は1つまでです。

そのため今回はGameビューのスクリーンショット添付のみ作成しますが、有料プランをお使いの方は他のファイルを追加で添付するのも良いでしょう。例えば僕が開発チームに導入しているものはログファイルを添付しています。

有料プランでも30日間の無料トライアルがあるので、興味のある方は試して頂くと良いでしょう

バグ報告ツールのダウンロード

Unity2018.3以上のバージョンが必須です。

導入方法

サンプルプロジェクトから、必要なものをコピーしてきます。

csc.rsp

Assets直下にあるcsc.rspというファイルをプロジェクトのAssets直下にコピーします。

既にある場合は、ファイル内に以下の2行を追記して下さい。

-r:System.Web.dll
-r:System.Drawing.dll

NuGet

NuGetがプロジェクトに導入されていない場合は、以下のものをそれぞれ同じ階層でコピーしてきて下さい。

  • Assets/NuGet.config
  • Assets/packages.config
  • Assets/Packagesフォルダ
  • Assets/Plugins/NuGetフォルダ

既にNuGetを導入している場合は「Newtonsoft.Json」パッケージを導入して下さい。

BacklogAPI

Plugins内にあるBacklogAPIを実行するためのプラグインをコピーします。以下の2つです。

  • NBacklog
  • unity-backlog

これらを導入した時にエラーが出る場合は、一度Unityを再起動して、それでもダメだったら各フォルダ内にある拡張子が「.asmdef」のファイルを削除して下さい。

バグ報告ツール

最後にバグ報告ツール本体(Assets/Editor/BugReporter)をコピーしてきます。これは「Editor」フォルダ内に入っていればどこにコピーしても大丈夫です。

設定

バグ報告ツールを動作させるための設定を行っていきます。なお、設定にアクセスすることで「Assets/Editor Default Resources」内に設定ファイルが作成されます。

BacklogAPI

メニューからProjectSettingsを開き「BacklogAPI」の項目を選択して下さい。

BacklogAPIの設定BacklogAPIの設定

Backlogアプリケーション登録

まずBacklogAPIの認証を行うために「Backlogアプリケーション登録ページ」のボタンをクリックしてブラウザを起動します。以下の手順に従って登録を進めて下さい。

ページを開いたら「新規登録」を押します。

RedirectURI

特に使わないですが入力は必要なので適当な値を設定します。「http://localhost:12345」等で大丈夫です。

RedirectURIRedirectURI
アプリケーション情報

デフォルトがEnglishになっているので日本語にしておきます。下までスクロールすると「この言語を削除する」があるので押します。

日本語は削除

新しく日本語で追加したら、右上の「この言語をデフォルト表示にする」にチェックを付けます。

この言語をデフォルト表示にする

アプリケーション名、アプリケーションの説明はそれらしいものを設定して下さい。これらは認証する利用者に表示されます。サイトURLは不要です。

アプリケーション情報

登録が完了すると Client IdClient Secret が発行されます。

Backlogアプリケーション登録完了

RedirectURIとあわせて、この3つをUnity上の設定に貼り付けてください。

対象プロジェクト設定

Space Key / Domain / Project Key はバグ報告先のプロジェクトを指定するものです。ここを間違えてしまうと関係ないプロジェクトにバグ報告することになるので、注意して下さい。

バグ報告機能はこの対象プロジェクトに参加しているユーザしか利用できません。

それぞれ何を入れたらいいかはプロジェクトのホーム画面のURLを見れば分かります。

https://{Space Key}.{Domain}/projects/{Project Key}

https://amagamina.backlog.com/projects/BUG_REPなら以下の通りです。

Space Keyamagamina
Domainbacklog.com
Project KeyBUG_REP

こちらを入力したら「スペースを開く」ボタンを押して、プロジェクトのホーム画面が開けることを確認して下さい。

認証情報のキャッシュファイル

認証はユーザ毎に行うので、毎回認証しなくてもいいようにプロジェクトの直下にキャッシュファイルを作成します。ファイル名は自由に変更して下さい。

git管理をしている際にこのファイルが共有されてしまわないよう、gitignoreに追加して下さい。サンプルプロジェクトのgitignoreからコピーしてきても大丈夫です。

# Backlog
backlog_oauth2cache.json

認証テスト

以上の入力が終わったら「認証テスト」ボタンを押して下さい。

ブラウザが起動して、以下のような画面が表示されるので「許可する」を押します。

認証画面認証画面

終わったらブラウザを閉じてUnityに戻って下さい。次のようなダイアログが表示されたら設定は完了です。

認証成功

入力フォームのデフォルト値

次にProjectSettingsの「BugReport」の項目を選択して下さい。

入力フォームを開いた時、プルダウンの項目で最初に選ばれる項目を指定します。

入力フォームのデフォルト値入力フォームのデフォルト値

「Ticket Type」はバグ報告機能なので基本的にバグで問題ないかと思います。入力フォームにも表示されません。

その他の項目はBacklogプロジェクトで追加されている情報に合わせて設定して下さい。

発生バージョンについて

他の項目は担当者がチームから外れてしまった時以外は特に変更することはないと思いますが、発生バージョンはバージョンが上がる度に更新しておかないと古いバージョンを指定してバグ報告をしてしまう可能性があります。

可能であれば、ここはUnity上で設定しているアプリバージョンと連動するように作り変えておくのがベストです。(気が向いたらこの対応を入れるかもしれません)

一通り入力が終わったら設定は完了です。

バグ報告の方法

テストプレイ中しかフォームは開けません。メニューから「Backlog > バグ報告」を選択します。

Backlog > バグ報告Backlog > バグ報告

あとは必要な項目を入力して「バグ報告する」を押したらチケットが登録されます。

キーワードバグ検索

キーワードバグ検索キーワードバグ検索

この機能は何かというと 今から報告しようとしているバグ、もう誰かチケット登録してないかな? と気になった時に使えるものです。

ブラウザを開いてBacklogのチケット検索ページで検索するのと何も変わらないですが、Backlogの検索ページは検索条件が保存されてしまうのでちょっと扱いづらいです。

Unity側でURLを作れば種別をバグに絞ったりといったことがしやすいので入力フォームの中に置いておきました。

発行されたチケットの整形が崩れている場合

サムネイル表示ができていなかったり、ログの文字色などのフォーマットが適用されていなかったらBacklogの整形設定がMarkdownになっています。

このツールでは整形をBacklog独自フォーマット前提としているため、設定の変更をお願いします。

プロジェクトの基本設定から変更プロジェクトの基本設定から変更

もし既にMarkdownをがっつり使っているのであれば、プログラム側の修正を検討して下さい。

エラーが出る場合

プロジェクトにカスタム属性が設定されている可能性があります。残念ながらカスタム属性への対応は容易ではありません…。

サムネを追加している部分のプログラムを削除することでエラーを防げるかもしれないので、サムネイル追加の実装方法を参考に対応を検討してみて下さい。

もしカスタム属性を設定しているだけで特に使っていないなら、カスタム属性自体の削除を検討して下さい。

まとめ

プロジェクトメンバーが気軽にバグ報告できる環境を整えるのは、バグ修正しやすい環境を作ることになり、アプリの品質を上げることに繋がるでしょう。

ぜひこのバグ報告機能を活用して頂ければと思います!

僕が作成したものは作例なので個々のプロジェクトに対する細かい要望には応えられませんが、どんな環境でも役立ちそうな機能であれば追加を検討するのでご連絡下さい。