レビュー

「Spy++」の弟分? UWP/WinUI 3アプリのUI構造を解析・可視化する「UWPSpy」

既存アプリの構造を調査して自分のアプリ開発に役立てよう。いろんなイタズラも可能

「Spy++」でUWPベースになった新しい「電卓」アプリのUI構造を調査しようとしたが……あまり役には立たない

 Win32アプリの開発に慣れたプログラマーであれば、「Visual Studio」に含まれているユーティリティ「Spy++」のことはご存じだろう。このツールはシステム上のオブジェクト(ウィンドウやコントロールなど)を調査し、その親子関係をツリービューで表示するもので、既存アプリのUI構造を把握したいときに役立つ。しかし、クラシカルなアプリならばともかく、「UWP」や「WinUI 3」といったモダンなUIフレームワークを採用するアプリではあまり役に立たない。

 そこで試してほしいのが「UWPSpy」だ。「Spy++」のUWP/WinUI 3版のようなインスペクターツールで、ターゲットアプリのUI構造を可視化できる。

「UWPSpy」を起動した様子。調査の対象とするアプリとそのUIフレームワークを選択

 使い方は簡単で、「UWPSpy」を起動すると現れるダイアログで、調査の対象とするアプリとそのUIフレームワークを選択し、[Spy]ボタンを押すだけだ。ターゲットアプリがサポート対象のUIフレームワークを利用していれば、「XAML Diagnostic API」と呼ばれるWindows 10/11のAPIで分析が行われ、その結果がウィンドウで表示される。「XAML Diagnostic API」は「Windows 10 バージョン 1703」で追加された比較的新しいAPIであるため、それ以前のバージョンのWindowsでは動作しない点には注意したい。

解析結果のウィンドウ。選択されたUI要素はターゲットアプリ上でも赤くハイライトされる

 解析結果のウィンドウは左右2分割されており、左側がUI構造を可視化したツリービュー、右側がツリービューで選択したUI要素のプロパティとなっている。選択されたUI要素はターゲットアプリ上でも赤くハイライトされるので、どこを選んでいるのかがわかりやすい。さらにプロパティの一部は編集できるようになっており、たとえば「タイトルバーに細工をする」「電卓アプリの結果に数字以外を書き込む」といったことも実現可能だ。

既存アプリの構造を解析して、自分のアプリ開発に役立てることもができる。いろんなイタズラにも使える

 解析結果ウィンドウを閉じると、「UWPSpy」によるインスペクトは非表示となる。完全にインスペクトを停止させたい場合は、ターゲットアプリのプロセスを完全に終了させる必要があるようだ。

 ちなみに、本ソフトを開発したのはゲームのようにModでシステムをカスタマイズする「Windhawk」や、アプリUI上のあらゆるテキストをコピーできるようにする「Textify」といったユニークなシステムツールを多数開発しているRamen SoftwareのRaMMicHaeL氏だ。

 氏によると、このアプリは「XAML Islands」という新技術で再構築された「Windows 11」でタスクバーを調査するために開発したという。「XAML Diagnostic API」を用いたUI構造の解析は、Windows 11のタスクバーをチャーミングな角丸にできる「RoundedTB」にヒントを得たようだ。ソースコードは「GitHub」で公開されている(GPL-3.0ライセンス)ので、興味のある開発者は覗いてみるとよいだろう。

ソフトウェア情報

「UWPSpy」
【著作権者】
Ramen Software
【対応OS】
Windows 10 バージョン 1703
【ソフト種別】
フリーソフト
【バージョン】
1.1(23/09/25)