初めに
この1年間Riderを実際のUE開発で使用してわかったメリット・デメリットを、「他ツールと比較しつつ」解説していくページです。
このページで比較するツールは下記になります。
・VisualStudio2019 (+ 標準激重IntelliSense)
・VisualStudio2019 (+ VisualAssist)
・VisualStudio2019 (+ Resharper, ResharperC++)
同僚にRiderを薦める過程でまとめた情報を整理したものになりますので、一部主観的な内容も含まれます。
メリット
シンボルの検索がとても充実
Riderには調べたいコード一覧を表示したり、すぐ飛べる機能が充実しています。
また、検索がとても高速です。
下記には紹介していないですが、VSにあるF12で関数定義・実装ジャンプやCtrl+F(Ctrl+Shift+F)で文字列検索・置換等の基本的な機能は当然あります。
Ctrl+T : Seach EveryWhare(なんでも検索)
とりあえず調べたいコード箇所に飛びたいときなどに使用できます。
以下のように正確な名前でなくても、目標コードを発見できます!
Alt+_ : File Member(カレントファイル内シンボル検索)
カレントファイル内にある関数に飛びたい時などに使用します。
Shift+F12 : Find Usages(シンボルの使用箇所検索)
シンボルが使用されている箇所の一覧を表示できます。
また、表示設定をタイプ別にすると使用タイプ別で表示されます。
またUObject継承クラスでFindUsagesすれば、アセット内で使用されているものも表示されます。
コーディングサポート機能が優秀
Riderのコーディングサポート機能はVisualAssistなどと比べてもかなり優秀です。
公式ページに含まれているのもあるかとは思いますが下記で紹介していきます。
自動インクルード機能
Inludeしていないクラス等を使用するとIncludeするか前方宣言にするかの選択肢メニューが表示されます。(設定によって自動的にIncludeすること等も可能です。)
また、Includeするヘッダーが別モジュールに合って、モジュール依存関係になっていない場合は、モジュール.build.csに自動的に依存関係が追加されます。(この機能はかなりありがたいです。)
使用していない(意味のない)コードの灰色表示
Includeソート
Includeをソートできます。ソート順はプロジェクトごとに変更可能です。
auto変数型を明示型に変換可能
宣言した関数を定義する / 定義した関数を宣言する
doxygenコメントを作成する
関数の引数型や戻り値、名前を変更する
優秀な後置補完機能
.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の公式ドキュメントは(一部自動翻訳感が否めませんが)日本語対応されているので、(できれば日本語で見たい)設定周りはドキュメントを見ながらで対応できます。
また日本語化プラグインは現在ローカライズ作業中らしいので、筆者はプラグインが公開され次第インストールする予定です。
デバック機能が(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)を使用しているプログラマーでは作業効率が変わってきます。
有償競合他社製品からの乗り換えで使用する場合に価格が安くなるプランもありますので、(お財布と相談しつつ)購入する検討をしていただければと思います!