UE開発でRiderを使用するメリット・デメリット

UnrealEngine

初めに

本ページで紹介している内容はページ公開時点(Rider2022.3)の情報になります。

今後のバージョンによっては紹介した機能が変更・削除されたり、デメリット内容を補填する機能が追加されている可能性があります。

最新情報につきましては、下記公式ホームページをご確認ください。

また実際に使わないとわからないメリットやデメリットなどもプロジェクトによって変わってきます。

最初の30日間はトライアルとして使用することができますので、本格的に購入を検討する前に一度お試しすることを強くお勧めします。

Riderの新機能
JetBrains Rider の最新アップデートの新機能

記載情報に間違いがありましたら本ページ下部にある問い合わせフォームからお問い合わせください。

この1年間Riderを実際のUE開発で使用してわかったメリット・デメリットを、「他ツールと比較しつつ」解説していくページです。

このページで比較するツールは下記になります。

・VisualStudio2019 (+ 標準激重IntelliSense)
・VisualStudio2019 (+ VisualAssist)
・VisualStudio2019 (+ Resharper, ResharperC++)

同僚にRiderを薦める過程でまとめた情報を整理したものになりますので、一部主観的な内容も含まれます。

メリット

シンボルの検索がとても充実

Riderには調べたいコード一覧を表示したり、すぐ飛べる機能が充実しています。

また、検索がとても高速です。

下記には紹介していないですが、VSにあるF12で関数定義・実装ジャンプやCtrl+F(Ctrl+Shift+F)で文字列検索・置換等の基本的な機能は当然あります。

Ctrl+T : Seach EveryWhare(なんでも検索)

とりあえず調べたいコード箇所に飛びたいときなどに使用できます。

以下のように正確な名前でなくても、目標コードを発見できます!

Search Everywhare:全検索
Search Everywhare:クラス(構造体)名検索
Search Everywhare:File名検索
Search Everywhare:シンボル名検索
Search Everywhare:文字列検索

Alt+_ : File Member(カレントファイル内シンボル検索)

カレントファイル内にある関数に飛びたい時などに使用します。

Shift+F12 : Find Usages(シンボルの使用箇所検索)

シンボルが使用されている箇所の一覧を表示できます。

また、表示設定をタイプ別にすると使用タイプ別で表示されます。

またUObject継承クラスでFindUsagesすれば、アセット内で使用されているものも表示されます。

InitializeやSetUp等、汎用的に使用される名前が付けられている関数でFindUsagesを行うと検索に時間がかかる傾向があります。

コーディングサポート機能が優秀

Riderのコーディングサポート機能はVisualAssistなどと比べてもかなり優秀です。

公式ページに含まれているのもあるかとは思いますが下記で紹介していきます。

自動インクルード機能

Inludeしていないクラス等を使用するとIncludeするか前方宣言にするかの選択肢メニューが表示されます。(設定によって自動的にIncludeすること等も可能です。)

また、Includeするヘッダーが別モジュールに合って、モジュール依存関係になっていない場合は、モジュール.build.csに自動的に依存関係が追加されます。(この機能はかなりありがたいです。)

使用していない(意味のない)コードの灰色表示

未使用Inludeを消すアクションがあります。
灰色部分は提案事項が出て安全に消すことができます。

Includeソート

Includeをソートできます。ソート順はプロジェクトごとに変更可能です。

auto変数型を明示型に変換可能

イテレータ―型も変換可能ですが、冗長になる場合があるので筆者はケースバイケースで使用しています。

宣言した関数を定義する / 定義した関数を宣言する

継承関数を定義した場合は親クラス側の関数が呼び出される処理も自動的に追加されます。(一部反映されないこともあります)

継承関数等は定義後にVirtualやOverride修飾子を付けるか提案事項として出ます

doxygenコメントを作成する

Doxygenコメントを付けた関数にマウスオーバーをすると関数内容がコメントが整形された状態でポップアップ表示されます

関数の引数型や戻り値、名前を変更する

引数順も変更できます。変更するとすでに呼び出している関数の引数順番も入れ替わります。

優秀な後置補完機能

UObject継承のポインタは.Castでキャスト関数呼び出しに補完されます
.varでローカル変数を追加できます
配列は.foreachでfor-range文を生成できます
.ifでif分を生成できます。.elseであればif(!)でif分を生成できます

.uassetと.ini内にあるUObject継承クラスのメンバ変更が確認できる

アセットでパラメータを変更しているアセット一覧を確認できます。

Rider内でビルドとデバッグ実行ができる

IDEなので、ビルド・デバック機能も付いています。

最近のRider更新で、Platformも選択できるようになりました。

基本的なデバッグ機能としてブレークポイント機能があります。

以下はソフトウェアブレークポイント(処理が来たら実行を停止)の詳細設定Windowですが、VSと同じようなログ出し機能・条件がtrueの時のみ有効なブレークポイント等に加えてStack表示機能や一度hitしたらブレークポイントを無効にする機能等、プチ便利機能も入っています。

またハードウェアブレイクポイント(対象アドレス範囲内がアクセスされたら実行を停止)も実装されています。

このハードウェアブレイクポイントは書き込み時だけでなく、読み取り命令でも実行を停止することができるのでデバッグ効率が上がります。

デメリット

メモリ消費量が多い

メモリ消費量がVisualStudioと比べると大幅に増加します。

下記はThirdPersonサンプルプロジェクトを開いた状態(デバッグ実行状態ではない)のメモリ量です。

筆者は仕事柄UEプロジェクトをRiderで同時に4つほど開くことがあるのですが、状態によってはメモリ128GBでも足りなくなりそうになったことが何回かありました。

PCのメモリが少ない方はメモリカードを増設した後にRiderを使用することをお勧めします。(プロジェクト規模にもよりますが、UEプロジェクト1つをRiderでデバック実行する場合はメモリ64GBある(最低32GB)PCであれば全然問題ないかと思います。)

(VSと比べて)デフォルト設定が独特すぎる

VisualStudioと比べてデフォルトのカラー設定やインテンド設定が独特すぎます。

VSに慣れている人は大体設定を変更するのではと思うレベルです。

また、Riderを初めてインストールした方は(すべて英語なのも相まって)エディター設定に時間を一日くらい使ってしまいます。

以下に独特すぎるデフォルト設定を紹介します。

  • プリプロセッサマクロの色が青色
  • メソッドの色が青緑色
  • 関数呼び出しを複数行にわたって改行した状態で、コードフォーマットをかけると二行目以降が右寄りになりすぎる(コードフォーマットのデフォルト設定全体が独特な印象を受ける)
	// こうしたいのに
	Array.FindByPredicate([](UClass* A)->bool
		{
			return (A != nullptr) && A->IsAsset();
		});

	// こうなる
	Array.FindByPredicate([](UClass* A)->bool
																{
																	return (A != nullptr) && A->IsAsset();
																});

ただ、上記はすべて設定変更できるのと

一度設定すると設定を共有できるので別PCでの作業では設定を最初からしなおすことなくRiderを使用できます。

日本語化されていない

Rider2022.3時点で日本語化機能が公式でサポートされていません。

ただ、Riderの公式ドキュメントは(一部自動翻訳感が否めませんが)日本語対応されているので、(できれば日本語で見たい)設定周りはドキュメントを見ながらで対応できます。

また日本語化プラグインは現在ローカライズ作業中らしいので、筆者はプラグインが公開され次第インストールする予定です。

日本語化をお願いします : RIDER-75165

デバック機能が(VSと比べて)不足している

RiderにはVisualStudioにあるような下記機能がありません。

・デバッグプロセスメモリ表示
・デバッグプロセスCPU使用割合表示
・シンボル別CPU使用率表示

UEには最適化機能が備わっているのであまり必要性は感じないですが、プログラムの最適化などでシンボル別CPU使用率などはよく調べたくなります。

似たような機能であるdotTraceやdotMemoryはC#のプロジェクトで使用できるみたいなので、今後UEプロジェクトでも類似機能が使用できるようになることを期待しています。

最新UEバージョンによってはRiderを使用できない可能性がある

RiderはUEエディタと接続するためのUEプラグイン(RiderLink)を提供していますが、プラグイン側が最新のUEバージョンに対応していないとコンパイルエラーが発生してプロジェクトを実行できない可能性があります。

また、Rider自体が最新UEバージョンに対応されていない場合も、ビルドに失敗するなどのクリティカルな問題が出る可能性があります。

ただ、Rider側のUEバージョン対応がかなり迅速なのでプロジェクトのエンジン更新対応頻度によっては問題とならない可能性もあります。

まとめ

いかがでしたでしょうか。

最初に触れたように、筆者はRiderを一年間使用していますが、デメリットなどもあり原則Riderを使用しつつ、いつでも作業が継続できるようにVisualStudio2019 (+ VisualAssist)を併用しています。

(ResharperはVS19だとプチフリが頻繁に発生するので使用を控えています。64bit化されているVS22だと変わるかもしれません。)

Riderを使用しているプログラマーとVisualStudio(+ 標準激重IntelliSense)を使用しているプログラマーでは作業効率が変わってきます。

有償競合他社製品からの乗り換えで使用する場合に価格が安くなるプランもありますので、(お財布と相談しつつ)購入する検討をしていただければと思います!

タイトルとURLをコピーしました