Unity では時々、アセットストアのパートナーが制作したツールの中で、多くの Unity デベロッパーの皆様にとって特に有益と思われるものをピックアップしてご紹介しています。本記事では、JetBrains の開発した C# スクリプトエディター「Rider」にスポットライトを当ててお届けします。
Rider には、アセットとパッケージの閲覧機能、ソース管理の統合された充実したコードエディター、インスペクション機能、コードの自動補完(オートコンプリート)機能が搭載されています。
開発者の皆様なら、お使いのスクリプトエディターと Unity とを何度も行ったり来たりしなから行う作業の煩わしさをお分かりのことと思います。できるならコードの泥沼にはまって行き詰まることなく、ゲーム自体に集中したいと感じられることでしょう。JetBrains が開発した統合開発環境(IDE)「Rider」は、ファイルを探す作業や手間のかかる細かな作業を自動化することで、C# プログラマーの皆様の時間を節約し、より快適な Unity のナビゲーションをサポートします。以下にご紹介する各種機能を皆様のワークフローの効率性と生産性の向上にどのように活かせるか、ぜひご検討ください。
キーボードショートカット「Shift+Shift」でアクティベートされる「Search Everywhere」機能で、プロジェクトのナビゲーションが大幅に効率化されます。Shift+Shift を押してから入力を開始すると、クラスやファイルやシンボルを簡単に見付けることができます。Rider は「スマートな」アルゴリズムを使用しているので、クラス名やメソッド名に含まれる複数の単語の頭文字を使った検索も可能です。
Search Everywhere ダイアログでは、プロジェクトのクラスやファイル、シンボルだけでなく、エディター自体の中にあるメニューアイテムや環境設定項目も素早く検索することができます。
Rider は、Unity クラスのすべてのイベント関数の候補表示と自動補完もしてくれるので、コードをより素早く記述することができます。このアプリケーションには、Unity バージョン 5.0 から 2019.2 までの Unity API の情報が全て含まれています。
Unity イベント関数の入力を開始すると、Rider がコード自動補完リスト内にすべての関数を表示し、選択されたメソッドを生成してくれます。
いくらコードを速く記述しても、それが機能しなければ意味がありません。Rider は、あなたがコードを記述するそばから解析を行って一般的な問題を発見してくれます。Null Reference Exception の可能性から、新しい C# 言語の関数(C# 7 に移行される方はいらっしゃいますか?)の提案まで、この IDE は、コード内に発見されたすべての問題をハイライト表示してくれます。Alt+Enter を押すと、コードを自動的に安全に再記述して問題を即座に修正(クイックフィックス)することができます。Rider には、コードの品質を高めるための 2,200 種以上のインスペクション、450 種のクイックフィックス、50 種以上のリファクタリング(名前の変更やクラスの抽出など)が搭載されています。
Rider のインスペクション機能によって、コードの中で改善の余地がある箇所がハイライト表示されます。Alt+Enter を押すとクイックフィックスのメニューが表示され、コードを自動的に記述し直すことができます。
この IDE は、C# だけでなく Unity に関する深い理解も備えています。スクリプトのコンポーネントやシリアライズされたフィールド、さらにはエディター内でシーンやプレハブに登録されたイベントハンドラーまでハイライト表示が可能です。(そしてもちろん、C# でイベントハンドラーの名前を変更すれば、シーンやプレハブ内にも更新が反映されます。)
さらに注目に値するのは、Unity に関連した問題を、入力するそばからハイライト表示してくれるので、時間が節約できることです。通常であればランタイムでしか(つまり Unity に戻って再生モードを開始し、ゲームを該当箇所までプレイすることでしか)発見できない問題を発見し、自動的に修正することができます。
例えば以下のような問題を発見できます。
Invoke や StartCoroutine の文字列リテラル引数のタイプミス
Unity の属性でマークされたメソッドの署名の間違い
(C# 6 で)Null 合体演算子や条件付きアクセス演算子が明示的 Null チェックと一致しない場合に発生する、下層オブジェクトのライフタイムチェックの意図せぬ迂回
SerializeField 属性を適用した時にスクリプトがシリアライズしない理由 ― (例)プロパティに適用してしまった場合(通常は見逃されやすい)
Rider は、Unity がコードを使用する仕組みを理解しており、ランタイムで問題を発見することになる前に、エディター内で警告を表示してくれます。
この IDE は、コードの記述作業を高速化するだけでなく、より高速なコードを記述するためにも役立ちます。
Rider のインスペクション機能には、パフォーマンスに関する Unity のベストプラクティスの多くが組み込まれています。例えば以下のような場合に役立ちます。
不要なオーバーヘッドを回避するために空のイベント関数を削除する
不要な高負荷操作([例]オブジェクトを作成してその親を別に設定するなど)を特定する
Rider はパフォーマンスに関する Unity のベストプラクティスを直接エディター内でハイライト表示します。ショートカットキー「Alt+Enter」でアクティベートされるクイックフィックス機能でコードを自動的に記述し直すことができます。
すべてのインスペクションにシンプルな修正候補が用意されており、「Alt+Enter」のショートカットキーを使用して素早くコードを再記述して修正できます。
Rider は、簡単には発見しづらい一部の問題にも役立ちます。このソフトウェアは、Unity がコードを呼び出す仕組みを把握しています。そして 頻繁に(基本的に毎フレーム)Update メソッドが呼び出され、その最適化が必要であることを把握しています。エディターは、このメソッドと、Unity のベストプラクティスに基づいてその中で作成された時間の掛かる API 呼び出し([例]GetComponent や SendMessage への呼び出しなど)のすべてに、インジケーターを追加します。このインジケーターは、こうした呼び出しは負荷が高いため慎重に使用すべきであることを知らせるためのものですが、それらを使用することが間違っているというわけではありません。
例えば、Update の中での GetComponent の呼び出しは高負荷な操作であり、通常はこの呼び出しを Start あるいは Awake に移動させるのが最善です ― これを、このソフトウェアによって自動化できます。また、SendMessage への呼び出しもリソースを大きく消費し、その修正には相当の作業を要します ― Rider はこれを警告としては表示しませんが、インジケーターを使用して、このメソッドのプロファイリングが推奨されることを知らせます。
Update メソッドが「パフォーマンスに重大な影響を与えるコンテキスト」(Performance critical context)としてマークされ、既知の高負荷なメソッドを回避するための更なるインスペクションとハイライト表示が可能になります。
Rider には組み込みのコードプロファイラーが搭載されています。これを Unity エディターに添付してプロファイリング結果を表示することが可能です。コードの記述に使用している同じエディター内で、コードが実際にどのように実行されるかを正確に確認することができます。
コードに焦点を当てたプロファイリングによって、各メソッドにどれだけの時間が費やされているかを確認できます。
JetBrains の提供する Rider は、Unity スクリプティングのためのスマートな C# エディターです。このソフトウェアは、開発の生産性やコードのパフォーマンスを向上させるための様々な機能を提供します。こちらの動画で、その仕組みをご紹介しています。Rider は Unity アセットストアからご購入いただけます。本ソフトウェアについてさらに詳しくお知りになりたい方は、JetBrains のウェブサイトをご覧ください。JetBrains のブログで、最新の機能に関する情報をご確認いただけます。