Rider の新機能

Rider 2021.1 では、プロジェクトで Docker をサポートするのがはるかに簡単になりました。 ウェルカム画面から直接 .NET のプロセスに接続し、デバッガーのヒントを通してプロセスのデバッグに介入できるようになりました。 ASP.NET 開発者向けには、Identity と “CRUD” Entity Framework、ルートテンプレート解析を含むスキャフォールディングを追加しました。 パターンとレコードのサポートを中心に、C# のサポートに関する大規模な更新を実施しました。

Dockerのサポート

Docker サポートの追加

Rider で新規プロジェクトを作成する際に Dockerfile を生成できるようになったため、Docker を簡単にサポートできるようになりました。 ASP.NET Core Web アプリケーション / ワーカーサービス / コンソールアプリケーションを選択している場合に、New project(新規プロジェクト)ダイアログで Docker Support(Docker サポート)を選択するだけです。

既存ファイルに Dockerfile を追加する場合は、Solution Explorer ツールウィンドウでプロジェクトのコンテキストメニューから Add | Docker Support を使用してください。

Dockerfile

Rider は初期状態で Visual Studio が生成した Dockerfile を実行できます。 Dockerfile に Rider との互換性を持たせるために変更を加える必要はありません。

詳細については、「Rider で .NET アプリケーション用の Dockerfile を生成する」を参照してください。

C# サポート

対応できるマージパターンを追加

Merge into pattern(パターンにマージ)インスペクションがより多くのコードパターンを処理できるようになりました。

null チェックと他のチェックを単一のパターンチェックに融合します.

チェックを conditional?.Access 式からネストしたパターンマッチングに書き換えます.

複数のチェックをマージして if ステートメントのネストを減らします.

さらに、単純な var (a,b) 分解パターンの中にあるパターンを完全な形に展開してマージできます.

C# 9.0 のサポートを拡充

C# 9.0 のレコードに対するサポートを拡充しました。

File Layout(ファイルレイアウト)や XML ドキュメントに関連する機能と同様に、Extract interface(インターフェースの抽出)および Extract superclass(スーパークラスの抽出)リファクタリングが record の宣言で機能するようになりました。

新しいインスペクションとアクション一式を考案しました。 record 宣言内のプロパティ向けのRedundant explicit property declaration(冗長かつ明示的なプロパティ宣言)は、位置パラメーターと暗黙的なプロパティ宣言を含むレコードを使用するようにコードを移行する場合に非常に役立ちます。 対応するクイックフィックスである Remove explicit property(明示的なプロパティの除去)も追加されています。

他にもコードを整理するための機能があります。Redundant 'record' type declaration body(冗長な 'record' 型宣言の本文)インスペクションと対応するクイックフィックスは、空の record 型宣言の本文をセミコロンに置換します。

  • record を class に変換する場合は、To class(クラスへ)アクションが位置パラメーターとプライマリコンストラクターを処理します。 反対の動作をする To record(レコードへ)アクションもあります。
  • 位置パラメーターとプライマリコンストラクターを普通のプロパティ、コンストラクター、および明示的な Deconstruct() メソッドに書き換える必要があるときは、To explicit constructor(明示的なコンストラクターへ)コンテキストアクションの使用を検討してください。
  • Find usages(使用箇所の検索)でレコードのプライマリコンストラクターの使用箇所と、暗黙的な Deconstruct() メソッドの使用箇所を検索できるようになりました。

一時変数のインライン化

新たに導入されたインスペクション、Inline temporary variable(一時変数のインライン化)をご紹介します。

プログラム内でいつの間にか同じ値を名前を変えて何度も繰り返して使用している場合があります。 このようなコードをより明瞭にすることはできるのでしょうか? Rider なら可能です。 また、一時変数を他の値に初期化したり、コード内で後から変更したりする必要がある場合にバグを発見することもできます。

タプルでの名前変更

名前付きタプルは C#7 から対応していますが、コンポーネントの名前変更は手動で行わなければなりませんでした。 今後は、その必要はありません。リファクタリングを呼び出せるようになりました。

その他の便利な機能

論理的な not パターンは、型チェックの可読性を大幅に向上させます。 Rider は not パターンを優先して !() 構文を破棄することを提案します。

C# 10.0 のサポートに関する最初の一歩として、Rider が「定数文字列補間」機能を処理できるようにしました。

  • Rider がコードを単純化できる場合に限って、SliceSubstring の代わりに範囲演算子の使用を提案するようになりました。
  • トップレベルのコードを含むファイルで Namespace does not correspond to file location(ファイルの場所に対応しない名前空間)インスペクションが抑止されるようになりました。
  • 自動プロパティを計算されたプロパティに置換可能かどうかをチェックする新しいインスペクションと、置換を行うクイックフィックスも追加されています。

ウェブ開発

ASP.NET のスキャフォールディング

ASP.​NET MVC / ASP.​NET Web API / Razor Pages を使用している開発者に朗報です! ASP.​NET Core プロジェクト向けにスキャフォールディングの仕組みを追加しました。

Rider は、Areas / Controllers / Razor Pages / Views / Identity のスキャフォールディングをサポートしています。例えば、Entity Framework を使用するためのフル CRUD 操作に対応した定型ソースコードを生成できます。

この機能は、Windows / Linux / macOS に対応しています。

Rider uses dotnet aspnet-codegenerator under the hood.

詳細については、「Rider 2021.1 が ASP.NET Core プロジェクトのスキャフォールディングに対応」を参照してください。

ASP.​NET Core のルートテンプレート

ルートテンプレートは、MVC アプリケーションで HTTP リクエストとアプリケーションの実行可能なエンドポイントとの一致方法を構成するために幅広く使用されています。 バージョン 2021.1 では、ルートテンプレートのサポートを開始しました。 これにより、Rider がルートテンプレートに対応したコード補完、構造ナビゲーション、インスペクション、クイックフィックスを提供できるようになりました。 以下の更新が含まれています。

  • HTTP 構文エラーをチェックするインスペクション。
  • ルートパラメーターの問題をチェック/修正するためのインスペクションとクイックフィックス。
  • ルート制約に対応したインスペクション。

詳細については、「ReSharper の新機能」を参照してください。

公開前のファイル削除

公開前にフォルダー内の既存ファイルを削除するオプションを使用できるようになりました。 ファイルをあちこちへ移動する場合などに、不要なデータがあふれかえるのを防ぐことができます。 このオプションが有効な場合、Rider によって指定した場所が完全にクリーンアップされますのでご注意ください。

MDN ドキュメントのバンドル

Rider に MDN ドキュメントがバンドルされるようになりました。 これによって MDN の Web サイトとの接続に関する問題を回避し、エディター内に HTML / CSS / JavaScript ファイルをより高速に表示できるようになります。 また、エディター内に表示されるドキュメントの情報がさらに拡充されました。例えば、JavaScript API のサポート対象ブラウザーバージョンに関する情報を確認できます。

Stylelint のサポート改善

Stylelint による CSS コードのインスペクションがより簡単になりました。 数回クリックするだけで、このリンターを使用して問題箇所を修正できます。 ファイル内の問題箇所にマウスカーソルを合わせるか、キャレットを配置したあと、Alt+Enter を押してから Stylelint: Fix current file(Stylelint: 現在のファイルを修正)を選択するだけです。

また、Preferences / Settings | Languages & Frameworks | Style Sheets | Stylelint では構成ファイルのパスを指定できます。

CSS セレクターの詳細度

スタイルシートを操作する際、調べたいセレクターにマウスカーソルを合わせるだけでセレクターの詳細度をチェックできるようになりました。 あるいは、セレクターにフォーカスがある状態で F1/Ctrl+Q を押し、この情報をドキュメントポップアップに表示することもできます。

HTML プレビュー

HTML ファイルをすばやくプレビューできる、新しい組み込みのブラウザープレビューを追加しました。 プレビューを開くには、エディターの右上にあるウィジェットの Rider ロゴアイコンをクリックしてください。

デバッガー

ウェルカム画面からプロセスに接続

ウェルカム画面から直接 .NET プロセスに接続できるようになりました! 先にソースコードを含むソリューションを開く必要はありません。 ウェルカム画面で Attach to process(プロセスに接続)タブを選択し、リストから目的の .NET プロセスを選択すると、Rider がそのプロセスのデバッグを開始します。

デバッガーの対話型ヒント

Rider のデバッガーが対話型ヒントに対応しました! エディター内のヒントは状況の確認に役立つだけでなく、デバッガーのヒントを通してデバッガープロセスに介入して操作することも可能にします。 対話モードに切り替えるには、ヒントをクリックして Set Value(値の設定)を選択してください。 自動補完を利用して生データを入力したり、他の値を使用したりできます。 ショートカットも提供されています。

デバッガーのヒントは、Settings | Build, Execution, Deployment | Debugger | Data ViewsShow values inline(値をインラインで表示)設定で有効にできます。

デバッガーに関するその他の更新

  • あるオブジェクトの表現が DebuggerBrowsable 属性を使用して変更された場合に、そのオブジェクトの生データを表示するオプションを追加しました。
  • デバッグチュにコンパイラーが生成したすべてのメンバーを表示するオプションを追加しました。
  • リモートでデバッグ中のプロセスの内容が、macOS で正しく表示されるようになりました。
  • this を評価できない場合(コードが最適化されていない、またはスレッドが GC セーフポイントにない場合など)に自動プロパティを評価できるようにしました。

ゲーム分野

Unity

Rider 2021.1 は Unity プロジェクトに関するより多くのコンテキストを提供するため、すでに Rider が Unity 向けに提供している多くの革新的な機能を利用しています。 Unity がアセットのコードを使用している箇所はどこでしょうか? Update から各フレームで呼び出されるパフォーマンス的に重要なコードパスは何でしょうか? どうすればコードをより適切にデバッグ、テスト、カバーできるでしょうか?

Rider では Unity がシーン / アセット / プレハブ内のコードを使用している箇所を表示し、使用箇所を Unity Editor 内で直接ハイライトさせることができます。

Rider 2021.1 ではこの機能を拡張し、新たにアニメーションアセットをサポートしています。また、プロパティとメソッドの使用箇所をアニメーションコールバックとして表示します。

Rider は、Unity のマジックストリングに対応したコード補完と検証機能を提供します。 また、タグ / レイヤー名 / シーン / コルーチンをすでにサポートしていますが、Rider 2021.1 ではアニメーション状態の値を新たにサポートしています。

旧バージョンの Rider では、メソッドがパフォーマンス的に重要 / 呼び出し頻度が高い / Burst コンパイル済み、のいずれかとしてハイライトされていましたが、その理由は常に明確であるとは限りませんでした。

Rider 2021.1 では、ホットパスで呼び出されて Update メソッドに戻るすべてのメソッドを表示したり、最終的にコストの高い既知の Unity API に到達する外向きの呼び出しを追跡したりするためのメニュー項目が追加されています。

Burst コンパイルされたメソッドの場合、Rider は呼び出されたすべてのメソッドを通って Burst コンテキストの先頭に戻るルートを表示します。

Rider はすでに Unity プロジェクト向けの拡張デバッグサポートを提供しており、アクティブシーンオブジェクトの表示、子ゲームオブジェクトとコンポーネントのデバッガービューへの追加に対応しています。

Rider 2021.1 は SerializedProperty インスタンスのデバッグにも役立ちます。 無関係なフィールドはデフォルトで非表示になっており、プロパティの種類に関連する値のみが表示されます。 子プロパティやすべてのシリアル化データを簡単に確認できます。

Unity ベースのユニットテストのサポートを拡張し、Rider がプレイモードテストのコードカバレッジに対応できるようにしました。 コードエディターを離れることなく、Unity の編集モードテストとプレイモードテストの検出、実行、デバッグ、コードカバレッジの表示を実行できます。

より堅牢なメタファイル処理、ログエントリを Unity ツールウィンドウに追加する際のパフォーマンス改善、Unity 関連ファイルのテンプレートをグループ化する処理の改善など、その他多くの軽微な変更と修正も行われています。

Godot

Godot Support for Rider プラグインも更新されました。 ゲームプロセスで直接 NUnit ユニットテストを実行し、すべてが期待どおりに動作することを確認できるようになりました。 Follow the instructions in this pull request to make it work in your game today! ご感想は、該当プルリクエストのコメント欄にご記入ください。

Unreal Engine 早期プレビュー Windows のみ

Rider for Unreal Engine はまだパブリックプレビューの段階にあり、2021 年後半に Rider の構成要素としてリリースされる予定です。 一般リリースまではこのプレビューを無料で評価することができます。

The Unreal Engine’s Cast for type-safe dynamic casting is now available as a postfix template in code completion. Rider は Unreal Engine に固有な別のリフレクションマクロである RIGVM_METHOD もサポートしています。

Epic Games 社のチームから寄せられたフィードバックと当社の仮説に基づいて修正を行い、Unreal Engine 5 のサポートを開始しました。

C++ に関しては、IncludeType Hierarchies が追加されたほか、Google Test やその他いくつかの C++ ユニットテストフレームワークが新たにサポートされています。

VCS

プルリクエスト関連の改善

  • プルリクエスト(PR)ビューに、現在のプロジェクトで使用可能なすべてのリポジトリを含むドロップダウンリストが表示されるようになりました。
  • PR を単純明快に作成できるようになりました。“+” アイコンをクリックするか、Git | GitHub | Create Pull Request を開くだけです。 すると、Pull Requests ビューでフォームが開き、PR の詳細を入力するよう促されます。
  • Info タブでは、head リポジトリとそのブランチの選択、PR のタイトルと説明の入力、レビュー担当者と担当者の割り当て、説明ラベルの入力を行うことができます。
  • バージョン 2021.1 は PR テンプレートをサポートしています。 PR の説明を含む pull_request_template.md ファイルをプロジェクトに追加すると、PR を作成するたびにこの説明が表示されます。

詳細については、こちらを参照してください。

シェルフに保存

バージョン 2021.1 では、変更をローカル環境に留めたまま、変更を Shelf(シェルフ)にコピーできる Save to Shelf(シェルフに保存)アクションを追加しました。 このアクションはショートカットを使用するか、Search Everywhere(どこでも検索)ポップアップで ‘Save to Shelf’ と入力するとアクセスできます。

ブランチと比較

Compare with branch(ブランチと比較)ダイアログで、別ブランチのファイルをコピーできるようになりました。 そのためには、コピーしたいファイルを選択し、Show diff(差分の表示)の横にある新しい下矢印アイコンをクリックしてください。

UI/UX

Solution Explorer

Rider を閉じたり開いたりしても、開いているノードを含む Solution Explorer の状態が記憶されるようになりました。 ソリューションを開き直したり、IDE を再起動したりするたびにノードを手動で展開する必要はなくなりました。

エディタータブを縦に分割

縦に分割されたエディタータブが複数開いている場合、それをダブルクリックしてそれぞれのエディターウィンドウを最大化できるようになりました。

フォルダー選択ダイアログ Windows のみ

Windows のフォルダー選択ダイアログを改修しました。 今後は選択可能なフォルダーのみが表示されます。

タスクバーから最近のソリューションを開く Windows のみ

Windows でタスクバーやスタートメニューの Rider アイコンを右クリックして、最近使用したプロジェクトにアクセスできるようになりました。

新しいモーダルダイアログ macOS のみ

macOS Big Sur の新しいモーダルダイアログをサポートするようになりました。

Windows Forms 用の Toolbox マネージャー Windows のみ

Windows Forms デザイナー用の Toolbox マネージャーが全面的に再設計されました。

ウィンドウの左側には、システムやサードパーティのいずれかのコントロールライブラリがコントロールのベンダーごとにグループ化されたリストが表示されます。 リスト内のライブラリを選択すると、中央のペインで特定のコントロールを選択できます。 リストを整理するため、これらのコントロールのみが Toolbox に表示されます。 右側のペインには、選択したコントロールのメタデータが表示されます。

ライブラリ内に非常に多くのコントロールがあり、そのうちの 1 つのみが必要な場合がありませんか? そんな場合でも大丈夫です! 中央のペインにある新しい検索機能を使用すると、コントロールのリストを絞り込み、検索に一致した部分文字列を結果リストでハイライトできます。

最後になりますが、保存時に除去されるコンポーネントや Toolbox に追加されるコンポーネントの数が下にある新しいカウンターに表示されるようになりました。 Apply(適用)ボタンをクリックした後に何が起こるかを不安に思うことはなくなります。

エディター

クイックドキュメンテーション

Quick Documentation ウィンドウに構文ハイライトの機能が実装され、コードエディターと同じようにハイライト表示が行われるようになりました。 また、シンボルのクイックドキュメンテーションがマウスオーバー時に表示されるようになりました。

フォントの太さ

長時間のコーディングでは、最適なフォントを選択することが重要です。 最近追加されたタイポグラフィ設定では、この選択が若干楽になり、個人に合わせて細かく調整できるようになりました。 バージョン 2021.1 では、主なフォントスタイルと太字のフォントスタイルの太さを Preferences / Settings | Editor | Fonts で微調整できます。

XAML プレビューアー

WPF および XAML 開発者にとって不可欠なフィードバックの仕組みである XAML プレビューツールを改善しました。

Rider のエディターウィンドウ自体に XAML プレビューツールを配置し、多くの向きとレイアウトのオプションを切り替えるオプションを使用できるようにしました。 プレビューツールの向きは、エディターとは独立して縦または横に変更できます。

注目している要素がハイライトされるようになったため、込み入った UI デザインで特定の UI 要素を検索するのが少しだけ楽になります。

ツールで TabItem インスタンスをクリックスルーできるようになりました。 これにより、複数のタブを持つユーザーインターフェースの制作作業が大幅に改善されます。

XAML プレビューツールは、プレビューを表示する際に DesignHeightDesignWidth のようなデザインプロパティを考慮します。

XAML プレビューは、Windows 環境で .NET Framework をターゲットとするアプリケーションにのみ使用できます。

詳細については、ブログ記事「Rider 2021.1 における XAML プレビューツールの改善」を参照してください。

コードスタイル

フォーマットとコードスタイル

次のようないくつかの新しい設定を追加しました。

  • ターゲットの型を指定した new() の前またはその中にスペースを設定するかどうかを指定できるようになりました。
  • 代入演算子の前に折り返しを指定できます。
  • ラベルステートメントをインデント解除できます。

カスタム命名規則については適用順序を更新し、より具体的なものが先頭に来るようにしました。

また、フォーマット選択用に新しい Reindent only(再インデントのみ)アクションを追加しました。 全体的な再フォーマット処理を実行する代わりに、選択したノードのインデント調整のみを実行するように Rider に指示できるようになりました。

EditorConfig

EditorConfig は .NET コミュニティで一般的なツールになりつつあるため、同ツールと Rider との連携機能を継続的に改善しています。 改善点は次のとおりです。

  • Rider が EditorConfig から命名規則の設定を読み込み、ユーザー定義の命名規則を EditorConfig に書き込む動作を改善しました。
  • 命名規則が EditorConfig でオーバーライドされている場合、Rider は命名設定ページに通知を表示します。
  • EditorConfig の csharp_indent_case_contents_when_block オプションをサポートするようになりました。

F# のサポート

ローカル let バインディングに対応した新しい Inline Variable(変数のインライン化)リファクタリングを追加しました。

Rider が、プロジェクトやビルドで使用されているコンパイラーに基づいて使用可能な言語レベルを計算し、F# のコードをよりモダンかつ最新にするための改善を提案するようになりました。

新しい解析機能とクイックフィックスである To Interpolated String(補間文字列へ)は、printf 形式のフォーマット文字列を F# 5 の補間文字列に変換するためのものです。 Thanks again to Saul for the nice implementation.

冗長な丸括弧の解析と対応するクイックフィックスは、パターン、型、単純な式の中にある丸括弧の処理に役立ちます。 今後のリリースでは、より多くの式の事例をカバーする予定です。

他にも多くのクイックフィックスやリファクタリング、F# のサポートに関する改善点があります。 Please see the full release notes for more details.

Space との連携機能

Space プラグインを Rider で使用できるようになりました。 ウェルカム画面の右側にある、Get from VCS から JetBrains Space の組織に接続できます。 ログインが完了すると、プロジェクトリポジトリの表示とクローン、チームメイトが書いたコードのレビュー、Space Automation スクリプトの記述を行えるようになります。

データベースのサポート

権限許可用の UI

オブジェクトを変更する際に権限を編集するための UI を追加しました。

データベースエクスプローラーのユーザーに対して Ctrl+F6 で呼び出せる Modify user(ユーザーの変更)ウィンドウに、オブジェクトに対する権限を付与するための UI が実装されました。

この UI は、PostgreSQL / Redshift / Greenplum / MySQL / MariaDB / DB2 / SQL Server / Sybase に対応しています。

システム関数を修飾子なしで使用可能に SQL Server

今後、システム関数とプロシージャを修飾子なしで使用している場合にエラーはハイライトされません。 ナビゲーションと補完がこれらに対しても機能するようになりました。

データベースのサポートに関する更新の詳細は、「DataGrip の新機能」ページを参照してください。

その他の更新

ビルド時の NuGet スマート復元

ビルド時の NuGet スマート復元を実装しました。 これは、外部で復元が実行されたことをヒューリスティックが検出した場合にビルドアクションで復元を実行するものです。 この機能をオフにする場合は、Settings/Preferences | Build, Execution, Deployment | NuGet | Smart Restore on Build で設定してください。

Mono での並列ビルド

Rider が最新バージョンの Mono で並列ビルドを実行できるようになりました。 この機能は、Settings | Build, Execution, Deployment | Toolset and Build で有効にできます。

Find in Files での外部依存関係

テキスト検索時の Rider による外部依存関係の処理方法を調整できるようになりました。 この機能を使用するには、Find in Files(ファイル内検索)ダイアログで、Scope(スコープ)を選択してから ‘…’ アイコンをクリックします。 すると、Scopes(スコープ)ウィンドウが開きます。External Dependencies(外部依存関係)がスコープに含まれるか、スコープから除外されているかをこのウィンドウで確認できます。 この設定は右側のボタンで変更できます。

JSON Lines フォーマットのサポート

構造化されたデータとログの処理に使用できる改行区切りの JSON Lines フォーマットをサポートするようになりました。 IDE は .jsonl.jslines.ldjson.ndjson のファイルタイプを認識します。

このフォーマットのファイルには複数の行が含まれており、各行には JSON オブジェクトが改行文字区切りで記述されています。 行頭と行末にはコンマは必要なく、ファイルの内容全体を角括弧や波括弧で囲む必要もありません。