Rider 2022.3 は C# 11 の最新機能を含め、.NET 7 SDK のサポートを提供しています。 このバージョンでは、起動時間やリモート開発機能を通じて Rider を WSL 2(Windows Subsystem for Linux 2)上で実行する機能を中心に大幅なパフォーマンス改善が行われています。 また、マルチモニター環境を配慮したツールウィンドウのドッキング機能など、UX/UI 面でも若干の重要な変更が行われています。 さらに、今回のリリースでは Unity および Unreal エディターとの統合がより緊密になっています。
Rider の起動を高速化し、ソリューションを開いて作業に着手するまでの時間を短縮するために若干の変更を加えました。
Rider のパフォーマンス改善に関する詳細は、こちらをご覧ください。
Rider が IDE のリモート開発機能を介して WSL 2(Windows Subsystem for Linux 2)をサポートするようになりました。 これにより、WSL 2 インスタンス上の Rider を使用してソリューションやソースを参照できるだけでなく、アプリをまるでローカルに保存されているかのようにビルド、デバッグ、実行できます。
Rider のウェルカム画面から簡単なセットアップ手順を直接開始できます。 リモート開発機能を通じて UI が提供されるため、WSLg は不要です。また、ローカルの RmoteDev クライアントが自動的にインストールされます。 詳細は、リモート開発のドキュメントを参照してください。
多数のご要望をいただいていた、ツールウィンドウをフローティングエディタータブにドッキングするオプションがついに完成しました! 作業スペースの整理とマルチモニター環境での Rider の操作を楽にするため、ツールウィンドウをメインウィンドウの外にドラッグしてフローティングエディタータブにドッキングするオプションを実装しました。
Search Everywhere(どこでも検索)の結果リストを作成するアルゴリズムを微調整してその動作を予想しやすくし、検索対象の要素をより正確に選択できるようにしました。 クエリの入力を開始すると、最初に表示される検索結果が IDE によって固定されます。また、旧バージョンとは異なり、他の候補が見つかっても検索結果の並び替えが行われなくなっています。
SSH 経由でプロセスにアタッチする場合などに使い勝手を改善する目的で、新しい Attach to process(プロセスにアタッチ)ダイアログを追加しました。 正しいプロセスの検索と選択をより迅速に行い、IDE が選択されたデバッガーを記憶できるようにすることが狙いです。
貼り付けアクション(⌘V / Ctrl+V)の動作を改良することで、編集の利便性を高めました。 コードが選択されていない状態で行のコピー(⌘C / Ctrl+C)または切り取り(⌘X / Ctrl+X)を行った場合、貼り付けアクションでは従来バージョンのようにキャレットの位置ではなく、現在行の上にクリップボードの内容が追加されます。
オブジェクトの「スマートな貼り付け」を可能にする Edit(編集)| Paste Special: JSON as Classes(特殊な貼り付け: JSON をクラスとして貼り付け)
アクションが導入されました。 たとえば、このアクションを使って JSON をコピーして貼り付けると、その JSON に基づいて C# のクラスが自動生成されます。
Preferences/Settings(環境設定/設定)| Appearance & Behavior(外観と動作)| New UI Preview(新しい UI のプレビュー)
で IntelliJ をベースとする IDE 用の新しい UI に切り替えてみてください。 私たちは IDE の複雑で分かりにくい表示を減らし、作業に集中しやすくすることを目指して新しい UI の開発に継続的に取り組んでいます。
また、Rider の UX と UI に次のような最適化を少しずつ継続的に行うことで、その関連性と利便性を高めるようにしています。
File | New
(ファイル | 新規)が実際に行う動作を把握しやすくするため、その名前を File | New Solution
(ファイル | 新規ソリューション)に変更しました。 Rider 2022.3 は以下の機能を含む .NET 7 SDK のサポートを正式に提供しています。
ref
フィールド、scoped
キーワードを含む C# 11 の新機能。 UTF-8
リテラルの基本的なサポートを追加しました。 コード解析がリテラルに対して System.Text.Encoding.UTF8.GetBytes()
メソッドや適切な UTF8
シンボルを含むバイト配列ではなく、u8
接尾辞の使用を提案するようになりました。 また、UTF-8 リテラルに対応したコンパイラーの警告やエラー一式も追加されています。
file ローカル型の基本的なサポートには、新しい構文の認識、型の file
アクセス修飾子、コンパイラーの警告とエラー、およびこれらに対応するクイックフィックス(ネストしたクラスに file
修飾子が指定されている場合に使う Move class to outer scope(クラスを外部スコープに移動)など)が含まれています。 一般的な型を file 型に変換するための便利なコンテキストアクションもあります。
Rider が通常の文字列や逐語的文字列をそれぞれの生文字列に変換できるようになりました。 これにより、文字列に対応した既存機能の多くが生文字列にも使えるようになりました。
このリリースでは、コレクションの対応する各項目のチェックに(従来のようにコレクション長をチェックした後にインデクサーアクセス式を実行する代わりに)C# 11 の新しいリストパターン構文を使用することを提案するようにしました。
C# 11 からはインターフェースの static
メンバーに対して abstract
修飾子と virtual
修飾子を使えるようになったほか、これらのメンバーをそのインターフェースに制約される型パラメーターを持つジェネリックのコードで使用できるようになっています。 Rider がポリモーフィック static
メンバーを通常のポリモーフィックメンバーと同じように処理するように更新されました。
override
キーワードの後に表示されるコード補完候補にインターフェースのメンバーも含まれるようになったため、abstract メンバーや virtual static
メンバーを簡単に実装できるようになりました。 >>>
)演算子 C# 開発者が符号付きデータ型に対して符号なし右シフトの実行を記述しなければならない非効率なコードパターンを Rider が認識し、C# 11 の符号なし右シフト(>>>
)演算子の使用を代わりに提案するようになりました。
文字 Span を解析する際は、MemoryExtensions.SequenceEqual
メソッドを多用しているかと思います。 C# 11 には、このようなチェックの短縮表現が導入されています。 文字 Span と文字列リテラルのパターンマッチングを is
式または switch
式を使用して行えるようになりました。
Rider が if
ステートメントを多用する代わりに is
式かswitch
式を使用するように提案するようになりました。
ref
フィールドおよび scoped
キーワード C# 11 からは、ref
構造体の内側で ref
フィールドを宣言できるようになりました。 Rider はこの新しい構文規則をサポートしており、対応するコンパイラーのエラーと警告をすべて提供しています。また、コード補完では ref
キーワードを表示し、対象のフィールドをコンストラクターの中で初期化できるようになっています。
Rider は、by-ref
または ref struct
引数とローカル変数に対して使用できる新しい scoped
キーワードも認識します。 サポートの内容には、新しい構文を正しく解析する、コード補完で scoped
キーワードを表示する、メソッドのオーバーライドを生成するときに scoped
キーワードを維持するという機能が含まれています。 また、scoped
修飾子の互換性チェック、オーバーライド、インターフェースの実装、デリゲート変換で一致していない scoped
パラメーターを修正するクイックフィックスを提供します。
C# 11 と .NET 7 では、言語の ref
の安全性規則が変更されています。 この変更は、ref
フィールドの導入によってマネージドコードにおける ref の安全性を提供するため、by-ref
および ref struct
変数に対してどのような処理を実行できるかを決定するといったものです。 Rider はこの変更を認識しており、C# 11 または .NET 7 に移行する際にこの変更に対応できるよう、プロジェクト内で新しい scoped
キーワードを使った更新およびアノテーションが必要な箇所を発見しやすくします。
このビルドでは、言語インジェクションが多くの点で改善されています。
[StringSyntax]
(.NET 7)および [LanguageInjection]
(JetBrains.Annotations)属性を使用する言語インジェクションに対するサポートと、// lang=<language_name>
言語インジェクションの指示コメントに対するサポートを追加しました。
言語インジェクションはこれまで SQL にしか使用できませんしたが、どの言語の文字列補間と文字列連結にも使用できるようになりました。 構文エラーは、任意の式を使用した文字列補間や文字列連結では抑止されることに注意してください。 C# 11 の生文字列内での言語インジェクションもサポートされています。
インデントと実際の値を区別するインデントガイドが生文字列に表示されるようになりました。
C# および Razor ファイル内にある暗黙的な名前空間インポートについて通知する新しいガターマークアイコンが追加されました。
対応する行で Alt+Enter を押すと、すべての暗黙的なインポートを含むリストと対応する global using
ディレクティブがあるソースファイルに関する情報が表示されます。 Rider で特定のインポートされた名前空間を選択すると、その名前空間の宣言箇所に移動できます。.csproj
プロジェクトファイルの <Using Include="Some.NameSpace" />
タグにも移動可能です。
_Imports.razor
からのグローバルインポートが表示されるほか、対応するインポート定義に移動することもできます。
開発プロセスの合理化と高速化を促すため、C# のコード補完オプションに機械学習による要素の並べ替え機能を導入しています。
この機能の使い勝手を向上させるため、Settings/Preferences(設定/環境設定)| Editor(エディター)| General(一般)| Code Completion(コード補完)| Machine Learning-assisted Completion(機械学習を使ったコード補完)
で有効にできるオプションを 2 つ用意しました。
.NET 7 に 2 つの数値型 Int128
と UInt128
が追加されたことを受け、コード補完の書式指定子の候補を更新しました。
また、これまでサポートされていなかった .NET 6 の DateOnly
および TimeOnly
日付/時刻型と .NET 5 で導入された Half
半精度浮動小数点数値型をサポートするようにしました。
リファクタリングを実行した後、パターンマッチング式が自明な再帰パターンになってしまう場合があります。 このような場合に再帰パターン構文を使用する意味はまったくないと思われるため、Rider ではパターンマッチングの元のセマンティクスを維持したままパターンをより単純な式に書き換えるアクションを提供しています。
呼び出しの後に入力しても、意味のある候補がまったく表示されない場合があります。 これは、void
を返すメソッドが呼び出されたため、呼び出しの結果が値を返さなかった場合に発生することがあります。 これは通常、IDE を何度か操作しなければ気付かないものです(メソッドの宣言を再確認したり、呼び出しにカーソルを合わせたりする)。 このリリースでは、呼び出しの結果となる型に関するフィードバックを即座に得られるよう、この種の void
を返す呼び出しに対して void
のヒント項目を導入しました。 この void
項目を受け入れると、呼び出しの後にセミコロンがない場合にセミコロンが追加されます。
Rider 2022.3 では Blazor Server アプリのホットリロード機能を導入しています。 Blazor Server アプリを実行中にそのアプリのソースコードを変更すると、Rider から実行中のアプリを再起動せずにその変更を適用するかどうかの確認を求められます。 テキストエディターの上部に表示される「Sources are modified(ソースが変更されています)」という黄色い通知バーに注目してください。 変更を受け入れるアプリがその場で更新され、更新後のアプリで作業を続行できます。
コミュニティから寄せられた多数の要望に応えて、IIS サーバー上で古い ASP.NET アプリケーションの実行とデバッグを行うための新しい IIS Application
(IIS アプリケーション)実行構成を追加しました。 また、ASP.NET Core アプリケーション用の launchSettings.json
ファイルに含まれる IIS
コマンド名もサポートするようにしました。
Endpoints(エンドポイント)のサポートと Endpoints Viewer(エンドポイントビューアー)の改善は継続的に行われています。 ビューアーが ASP.NET Core 7 の Minimal API ルートグループの各エンドポイントを正しく認識し、収集するようになりました。 つまり、すでに利用可能であった機能に加え、MapGroup()
API を使って宣言されたエンドポイントに対して、スマートなコード補完を検索、ナビゲート、使用することができます。
.NET User Secrets(.NET ユーザーのシークレット)が ASP.NET プロジェクト用に追加されました。
Rider がソリューション(.sln
)によって参照される JavaScript および TypeScript ウェブプロジェクト(.esproj
)用の npm
実行構成を自動生成するようになりました。
Code Vision のインレイヒントが JavaScript と TypeScript でも機能するようになりました。 このヒントにより、コード内にある各種のクラス、メソッド、型エイリアス、およびインターフェースの使用箇所が追跡しやすくなります。
IDE がステートメントのブロックを @supports
条件に関連付ける @supports
@ルールを理解するようになりました。 This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.
Angular テンプレートで型の絞り込みをサポートしました。これにより、さらに正確な型情報が提供され、コード補完候補が改善されるようになります。
また、Rider がより適切な検索結果を提供できるよう、グローバル検索から .angular
キャッシュフォルダーを除外するようになりました。
Rider の Unity サポートには新機能の追加、既存機能の改善、およびその他若干の修正を含む重要な更新が行われています。
Unity の新しい Input System パッケージのサポートを開始しました。 Rider が入力用のイベントハンドラーとして使用されているメソッドを認識し、未使用のメソッドとして表示しなくなりました。 Find Usages(使用箇所の検索)もこのようなメソッドに対応しており、コードまたは .inputactions
ファイル内の使用箇所を表示できます。
ゲームのリソースを実行時に読み込めると非常に便利なため、Resources.Load
メソッドで正しいパスを使用していることを Rider で確認できるようにしました。 入力を開始するとコード補完が表示され、不明なリソースがあれば警告付きでハイライトされます。
Rider では数回のリリースにわたってタグ名の補完機能と検証機能を提供してきましたが、バージョン 2022.3 では GameObject.FindWithTag
グループのメソッドに対するサポートを新たに提供しています。 入力中にコード補完が機能し、プロジェクトに存在しないタグを使用しようとした場合には警告が表示されます。
Unity プロジェクトでは、メタファイルがファイルやフォルダーと常に同期していることが非常に重要です。 Rider 2022.3 では、空のフォルダー用のメタファイルをソースコントロールにコミットしようとすると警告が表示されます。 Unity エディターが開いている状態で未保存のシーンやアセットがあった場合は Rider が警告を表示するため、コミットする際に変更を見落とすことがないのも便利です。
もちろん、より小規模な改善や修正もたくさん行われています。 非常に大きなプロジェクトの読み込みにかかる時間を短縮し、読み取り専用パッケージファイルの編集を試みた際の通知を追加し、Find Usages(使用箇所の検索)をネストしたプレハブやイベントハンドラーの配列に含まれるメソッドに対して使用できるように改善しました。
DOTS のサポートに関して、Rider が IBaker
または IAspect
を実装するクラスを未使用としないようになりました。
シリアル化されたフィールドの命名インスペクションを無効にして普通のフィールドとして扱えるほか、オンラインドキュメントへのリンクが適切な場所を参照するようになりました。
また、この場をお借りして Nintendo Switch のプレイヤーをデバッグするための修正をご提供いただいた Unity 社に感謝いたします。
Rider は Rename(名前の変更)リファクタリングで Unreal のクラスやプロパティの名前を変更する際に CoreRedirects を追加するオプションをすでに提供しています。 この機能が以下の場合にも対応しました。
UFUNCTION()
の名前の変更 USTRUCT()
の名前変更 UENUM
の名前の変更 上記の場合に Rename(名前の変更)リファクタリングを実行すると、Rider が CoreRedirects の追加を提案するようになりました。
その提案を受け入れると、対応する .ini
ファイルが自動的に更新されます。
不用意な名前の変更でゲームが動作しなくなる可能性がかなり低くなります!
Rider 2022.3 ではブループリント専用の Code Vision メトリクスが導入されています。 BlueprintCallable
関数を使用しているブループリントの数を素早くチェックして、Code Vision のコンテキストメニューからすべての使用箇所のリストを取得できるようになっています。
Generate GUID(GUID の生成)ツールが Unreal Engine の GUID 形式に対応するようになりました。 GUID の生成を素早く実行したい場合にメニューから Tools(ツール)| Generate GUID...(GUID の生成)
を選択すると、推奨される 16 進数形式があらかじめ選択された状態になります。
補完時の自動インポート機能を使えば、かなりの時間短縮になります。 しかし、間違った #include
ディレクティブが追加されてしまうと、問題の検出が困難になる場合があります。 この機能の改良に努め、自動インポートを実行する際にシステムヘッダーの不要なエンティティが提案されないようにしました。 システムヘッダーはデフォルトでは提案されませんが、提案してほしい場合は Settings/Preferences(設定/環境設定)| Languages & Frameworks(言語 & フレームワーク)| C++ | Unreal Engine
で有効にできます。
UnrealBuildTool ログの表示を改善しました。 プロジェクト構成に関する警告やエラーを見逃すことのないよう、ログパネルにタイムスタンプを表示し、UnrealBuildTool を前回実行したときのログを残すようにしました。
.uproject
のサポート Unreal Engine ベースのプロジェクトに関して、Rider が .sln
プロジェクトと .uproject
プロジェクトの両方に対応できるようになっています。 ネイティブ .uproject
モデルをより高精度かつ快適に扱えるようにするため、そのサポートを次のように継続的に強化しています。
.project
で指定されている追加ソースの場所(具体的には AdditionalRootDirectories
と AdditionalPluginDirectories
)を考慮します。 .Build.cs
ファイルを複数個持つモジュールのサポートを開始しました。 .uproject
プロジェクトモデルを使用する際に .uplugin
ファイルと .uproject
ファイルで補完機能とインスペクションが使えるようになりました。 .uproject
モデルを使用する際に C++ プログラム用の実行構成が自動生成されるようになりました。 Unreal Engine プロジェクト用に Attach to Unreal Editor(Unreal エディターにアタッチ)アクションを導入しました。 Unreal Engine プロセスに素早くアタッチできるようになり、正しいプロセスを手動で探す必要がなくなりました。 現時点では、UnrealLink が接続されているのと同じプロセスにしかアタッチできません。そのため、Unreal エディターで実行中のプロジェクトと Rider で作業中のプロジェクトが一致している必要があります。 今後のリリースに向けてこのワークフローの改善に取り組んでいます。
Rider 2022.3 を Windows および Linux ARM64 で実行できるようになりました。 .NET アプリケーションの実行とデバッグ、ユニットテストの実行など、基本的な開発ワークフローのすべてがサポートされています。 当社では Rider を ARM64 プロセッサでスムーズに動作させるための継続的な開発とテストを実施していますが、以下の制限がある点にご注意ください。
Windows に加えて、Linux および macOS 版の JetBrains Rider でも dotMemory を使用できるようになりました。 Run(実行)ウィジェットと Run(実行)| Switch profiler configuration(プロファイラー構成の切り替え)
メニューには、Memory (sampled allocations)(メモリ(サンプリングした割り当て)) Memory (full allocations)(メモリ(全割り当て))という 2 つの新しいプロファイリングモードが追加されています。 これらのモードの詳しい相違点については、dotMemory のヘルプをご覧ください。
Run(実行)メニューから実行中のプロセスにプロファイラーをアタッチして、Timeline Graph(タイムライングラフ)がリアルタイムに展開する様子を確認できます。 Memory Allocations(メモリ割り当て)ビューを開く間隔を選択します。これは dotMemory Standalone と同じで、 特定期間の割り当てられたオブジェクトと割り当て呼び出しツリーを解析できます。
残念ながら、メモリスナップショットの収集はこのバージョンでも未対応です。
Dynamic Program Analysis(DPA)には、データベースの使用に関連する以下のような問題を検出できる新しいインスペクションが導入されています。
この新しいインスペクションは、Entity Framework Core および SQL サーバー用の .NET データプロバイダーを使用するすべてのアプリケーションで使用できます。
コードエディターと Unit Test Coverage(ユニットテストカバレッジ)ウィンドウの dotCover コンテキストメニューに Show Covering Tests(カバーしているテストの表示)アクションを追加しました。 このアクションを実行すると、すべてのカバーしているテストを一か所にまとめたポップアップが表示されます。 このポップアップを使って新しいカバレッジセッションを作成することもできます。
dotCover が JetBrains Rider で継続的なテストを実行するために必要なアセンブリとシンボルファイルのみをコピーするようになりました。 これによって、作業ディレクトリ全体をコピーする必要がなくなったため、大規模なプロジェクトを中心に dotCover のパフォーマンスが全体的に改善されます。 必要に応じて、dotCover の設定からシャドウコピーファイルのフィルターを調整できます。
従来は Unity テストのカバレッジを解析する場合、カバレッジのサポートを有効にしたまま Unity を再起動する必要がありました。 このリリースからは Unity の再起動が不要となり、テストカバレッジも初期状態でサポートされています。
Central Package Management(別名 Directory.Packages.props
ファイル)はアクティブな開発段階にある .NET 技術スタックの機能であり、その改善によってソリューションの管理がさらに容易になることが見込まれています。 Rider に CPM が追加されたことで、開発者は依存関係をより細かく管理できるようになるはずです。
Central Package Management の詳細やヒント、注意事項などは、こちらのブログ記事をお読みください。
ソリューションでオープンソースの NuGet パッケージを使用している場合、プロジェクトがセキュリティの脆弱性にさらされる危険があります。 この危険を緩和するため、Rider に脆弱性のある依存関係を検出する機能を導入することにしました。 NuGet パッケージの使用に関連する脆弱な依存関係が存在する場合、IDE がポップアップ通知で警告を表示します。脆弱性の内容については、Problems(問題)ビューの Security(セキュリティ)セクションで調査できます。 ソリューションに含まれるパッケージに関連する脆弱な依存関係の情報は、NuGet Package Management ウィンドウで特定のパッケージを選択して確認することもできます。
NuGet ツールウィンドウにある Packages(パッケージ)リスト内でのスクロール機能も改善しています。
Rider 2022.3 では F# 7 のサポートを提供しているほか、軽微な問題に対するさまざまな修正を行い、使い心地を改善する機能をいくつか導入しています。
コメント内で <
を入力すると、ドキュメントテンプレートが追加されるようになりました。 また、構文ハイライトやコード補完を駆使してドキュメントコメントを楽々と編集できるようになっています。
新しいコード補完ルールによって record
式の入力が簡単になりました。これは、推論される record
型のフィールドが強調されるようになったほか、すでに使用されているフィールドが非表示となり、提案が表示されない各種のケースが修正されたことによるものです。
Update parameter name(パラメーター名の更新)および Update record field(レコードフィールドの更新)という 2 つのクイックフィックスを追加しました。これらはコードを変更する際にシグネチャーファイルを更新し、使いやすくするものです。 A huge thanks goes to Florian Verdonck for implementing them!
上記は F# に加えた改善のごく一部です。 You can find the full list of F# features included in the 2022.3 release here.
Rider 2022.3 に導入されたデータベース操作関連の新機能について、その一部を以下にまとめています。
Rider の IL Viewer ツールウィンドウで、コードをさまざまなレベルの C# 言語コンストラクトにデコンパイルできるようになりました。 最新の言語機能を使用して特定の構文コンストラクトを単純化する high-level と、それらの構文コンストラクトがどのように脱糖されるかを知りたい場合に使用する low-level の 2 つの C# レベルを使用できます。
Rider 2022.3 ではコードハイライトと波線が全面的に改修されています。 Rider では Microsoft Roslyn のコードスタイル解析機能の内部ロジックとの違いに起因する競合により、ハイライトが重複して表示される、同じハイライトが別々の場所に適用される、または破線が二重になるといった問題が発生していました。 このような問題の大部分の原因となっていたロジックの違いが解消されました。ごくまれにエラーが発生することはありますが、競合の解決策が明確に表示されるようになっています。
また、Rider が Roslyn Analyzers によって生成されるインスペクションのクイックドキュメントツールチップに Roslyn Analyzer ID と URL Reference を表示するようになりました。
Rider の整形エンジンを使う代わりに clang-format バイナリを直接実行するオプションを追加しました。これにより、業界標準のフォーマッターとの完全互換性だけでなく、高いパフォーマンスとより広範な整形オプションを実現しています。 バンドルおよび外部 clang-format のオプションは、Settings(設定)| Editor(エディター)| Code Style(コードスタイル)| C++
から Clang-format オプションを選択すると切り替えられます。
Allow property evaluations and other implicit function calls(プロパティの評価とその他の暗黙的な関数呼び出しを許可する)オプションが無効な場合のデバッガーのパフォーマンスを大幅に改善しました。 .NET、.NET Framework、および .NET Core プロジェクトでは、副作用のないモードで評価できる式の数が大幅に増えています。
ユニットテストエクスプローラーのツリーを「遅延」読み込みに対応させることで、動作の高速化とメモリ負荷の軽減を図りました。 従来はすべてのノードが自動的にユニットテストのツリーと同時に作成されていたため、ツリービューでユニットツリーを参照する際に遅延が生じ、メモリ消費量が非常に多くなっていました。 今後はツリー内の展開された要素に属するノードのみが作成されるようになるため、パフォーマンスが大幅に向上します。
32 ビット
版の MSBuild のメモリ不足を検出し、64 ビット
版の Visual Studio に切り替えられるようになりました。 Solution Wide Analysis(ソリューション全体解析)と Find usages(使用箇所の検索)コマンドがリファクタリングされています。 社内テストでは、それぞれの動作が従来の 20~40% ほど高速化されていることを確認しています。