[.NET] 便利な実行時インスペクションツール（フリー／オープンソース）～丸見え&診断、動的変更も～ ※掘り出し物あり

# Windows フォーム

## [HawkEye 2](https://github.com/odalet/Hawkeye2)

実行中のEXEにアタッチしてプロパティ、フィールドの確認／変更、イベントハンドラの確認／実行などができます。
あまり知られていませんが（日本語の紹介記事はほかに見たことがない）、すごいツールです。
元祖 HawkEye の時代から、10年以上の間重宝しています。

左上の<font color="red">◎</font>を実行中の画面コントロールにドラッグして使います。
![Hawkeye 2.png](https://qiita-image-store.s3.amazonaws.com/0/335669/1065f5da-faf0-2c04-5934-3a2a7da16a66.png)
CodePlex で開発されていた [HawkEye](https://archive.codeplex.com/?p=hawkeye)（.NET 3.5 まで）を引き継いだ形で、.NET 4 以降にも対応しています。

## [wfSpy](https://github.com/cplotts/wfSpy)

実行時にプロパティの確認／変更ができます。
ソースコードをダウンロードしてビルドします。
管理者として実行する必要があります。

# WPF

## [Visual Studio（2015 以降）](https://docs.microsoft.com/ja-jp/visualstudio/debugger/inspect-xaml-properties-while-debugging)

デバッグ中に [デバッグ]-[ウィンドウ] から「ライブビジュアルツリー」「ライブプロパティエクスプローラー」が使用できます。

## [WPF Inspector](https://github.com/dotnetprojects/wpfinspector)

非デバッグ実行時に XAML 要素をツリー表示し、プロパティやバインドされたビューモデルの中身を確認／変更できます。
リソース、トリガー、スタイルを確認することもできます。

# [UIオートメーション](https://blogs.msdn.microsoft.com/japan_platform_sdkwindows_sdk_support_team_blog/2011/05/26/ui-automation/)

Windows フォーム、WPF、Windows ストアアプリ、UWP などのデスクトップアプリケーションにアクセスし、共通のインターフェイスでUI要素を扱うことができます。

## [Inspect](https://docs.microsoft.com/ja-jp/windows/desktop/WinAuto/inspect-objects)

UI要素をツリーで確認できます。
UI Spy の後継という位置づけで、旧来の [MSAAI (Microsoft Active Accessibility)](https://docs.microsoft.com/ja-jp/dotnet/framework/ui-automation/ui-automation-and-microsoft-active-accessibility) にも対応しています（左上のドロップダウンで切り替え）。
ネイティブプログラムです。

マウスカーソルの位置にある要素がツリー上で自動選択され、属性が表示されます。
[Windows Application Driver（WinAppDriver）](https://github.com/microsoft/WinAppDriver) を利用して自動UIテストを記述する際、要素のIDや名前、構成を確認するのに欠かせないツールです。
[Action] メニューから要素に対して操作を実行することも可能です。

Windows 用のソフトウェア開発キット (Windows SDK) に含まれています。
[Windows SDK とエミュレーターのアーカイブ](https://developer.microsoft.com/ja-jp/windows/downloads/sdk-archive)
> %ProgramFiles(x86)%\Windows Kits\\\<major_version>\bin\\\<version>\\\<platform>\inspect.exe

※<> 内は環境によって異なります。

## [Visual UI Automation Verify (Visual UIA Verify)](https://docs.microsoft.com/en-us/windows/desktop/winauto/visual-ui-automation-verify)

[UIオートメーション](https://docs.microsoft.com/ja-jp/dotnet/framework/ui-automation/ui-automation-overview)の実装を検証するUIテストライブラリのGUIドライバです。
UI要素をツリーで確認できます。
.NET アプリケーションです。

ツリーで選択された XAML 要素は実際のウィンドウ上でハイライト表示されます。
[Tests] ペインから要素に対する操作を検証することができます。

Windows 用のソフトウェア開発キット (Windows SDK) に含まれています。
[Windows SDK とエミュレーターのアーカイブ](https://developer.microsoft.com/ja-jp/windows/downloads/sdk-archive)
> %ProgramFiles(x86)%\Windows Kits\\\<major_version>\bin\\\<version>\\\<platform>\UIAVerify\VisualUIAVerifyNative.exe

※<> 内は環境によって異なります。

## [WinAppDriver UI Recorder](https://github.com/Microsoft/WinAppDriver/wiki/WinAppDriver-UI-Recorder)

記録がアクティブなときに行った操作が解析され、WinAppDriver を利用したテスト向けの C# コードが自動生成されます。
自動生成されたコードでは、要素は XPath の絶対パスで特定されます。
そのまま使えるほどメンテナンス性のよいコードが生成されるわけではありません。
Excel のマクロ記録と同様、補助的に使うのがよさそうです。

# ASP.NET

## [Glimpse](https://github.com/glimpse/glimpse)

実行時にブラウザ下部に診断結果が表示されます。
コントロールツリー、サーバーイベント、各フェーズの処理時間、リクエスト、セッション、ルート解析など、様々な情報を確認することができます。
WebフォームでもMVCでも使用できます。

## [Prefix](https://stackify.com/prefix/)

ASP.NET Core に対応しています。

《セットアップ》
　(1) Prefix をインストールします。
　(2) StackifyMiddleware パッケージを Nuget でインストールします。
　(3) Startup クラスの Configure メソッドで StackifyMiddleware をミドルウェア登録（UseMiddleware）します。
　(4) タスクトレイの Prefix コンテキストメニューから [Enable .NET Profiler] を選択して有効化します。
　(5) タスクバルーンで促されたら Visual Studio を再起動します。
　(6) Webアプリケーションを IIS Express で開始します。
　(7) タスクトレイの Prefix コンテキストメニューから [Open in browser] を選択し、トレースページを開きます。

## [Application Insights](https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/app-insights-overview)

監視データを Microsoft Azure に送信し、ポータルで診断結果を確認できます。
Azure アカウントが必要です。
料金や無料枠については[こちら](https://azure.microsoft.com/ja-jp/pricing/details/application-insights/)をご参照ください。

アプリケーションが Azure 上でホスティングされている必要はなく、「インストルメンテーション キー」で関連づけることにより、オンプレミス運用や開発環境のデバッグ目的でも使用できます。
監視適用方法には[「ビルド時（SDK）」「実行時（Status Monitor）」](https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/monitor-performance-live-website-now)の二種類があります。

オペレーティングシステム、IIS サーバー、サーバーアプリケーション、データベースアクセス、クライアントスクリプトが監視対象となり、リクエスト応答時間、内部処理のタイムライン、SQL、トレースログ、エラー内容、CPU/メモリ/ネットワーク使用率、ユーザー数とセッション数などが診断結果として確認できます。

カスタムクエリによる監視データ抽出、グラフ表示が可能な [Analytics](https://docs.microsoft.com/ja-jp/azure/application-insights/app-insights-analytics) というツールも提供されています。

# ネットワーク

## [Fiddler](https://www.telerik.com/fiddler)

ブラウザ／非ブラウザの通信をキャプチャしてくれます。
リクエスト／レスポンスを上下に並べて、テキスト／JSON／XML／クッキーなど様々なビューで確認できます。