はじめに
Vimiumでは、f を押すとページ内のリンクやボタンの上に文字列が表示されます。その文字を入力すれば、マウスを動かさずに対象を開けます。
Windowsでも同じように画面を操作したいときは、Fluent SearchのScreen Searchが使えます。画面上の操作候補に文字ラベルを表示し、対応する文字を入力してクリックする機能です。
この記事では、Screen SearchをVimiumのfと比べながら、候補を見つける仕組みと、使うときに知っておきたい制約を整理します。アプリ起動、ファイル検索、ブラウザ履歴検索といったFluent Search全般の説明は扱いません。
VimiumのfとScreen Searchは文字で対象を選ぶ操作が似ている
どちらも、画面へ候補のラベルを表示し、その文字を入力して対象を操作します。
ショートカットを押す
↓
操作候補を見つける
↓
候補の近くへ文字ラベルを表示する
↓
ラベルを入力する
↓
対応する対象を操作する
Vimiumのfは、ブラウザ拡張のcontent scriptが現在のWebページのDOMを調べ、リンクやボタンの近くにHintを表示します。対象は基本的にブラウザ内のページです。
一方、Screen SearchはWindowsの画面を対象にします。ブラウザだけでなく、エディタ、エクスプローラー、設定画面など、画面上に見えている操作対象へラベルを表示できます。
| 観点 | Vimiumのf
|
Fluent SearchのScreen Search |
|---|---|---|
| 主な対象 | 現在のWebページ | フォーカス中のウィンドウ、または設定した画面範囲 |
| 候補の取得 | DOM | UI Automationまたは画像認識 |
| 実行 | リンクを開く、要素をクリックする | クリック、ダブルクリック、右クリックなど |
| 得意な場面 | Webページ内を移動する | デスクトップアプリも含めて画面上の要素を操作する |
Screen Searchの既定ショートカットはCtrl + Mです。ただし、公式ドキュメントには対象範囲を「フォーカス中のウィンドウ」とする説明と「画面全体」とする説明の両方があります。設定やバージョンで異なる可能性があるため、利用時はSettings → HotkeysまたはScreenで確認してください。Screen SearchのドキュメントとHotkeysのドキュメントを参照できます。
基本の操作は「ラベルを見て、そのまま入力する」
Screen Searchを起動すると、検出されたクリック可能な要素の上に、ASやJKのようなラベルが表示されます。表示された文字を順に入力すると、既定では左クリックが実行され、Screen Searchは閉じます。
例えば設定画面で保存ボタンを押す場合は、次のようになります。
Ctrl + M
↓
保存ボタンの上に「DK」と表示される
↓
D、K と入力する
↓
保存ボタンをクリックする
VimiumのHintと同じく、ラベルそのものを覚える必要はありません。候補が表示されたときに、その場で入力します。マウスへ手を移さずに操作できるため、画面を見続けやすくなります。
Screen Searchは二つの方法で候補を見つける
Screen SearchがVimiumと大きく異なるのは、DOMを前提にできない点です。Windowsアプリには、Webページのような共通のDOMがありません。
そのため、Fluent Searchは次の二つの検出エンジンを使い分けます。
| エンジン | 候補を見つける方法 | 向いている画面 |
|---|---|---|
| In-Window Content | Windows UI AutomationからUI要素を取得する | UI Automation情報を十分に公開している画面 |
| Image Recognition | スクリーンショットを解析して操作候補を検出する | 独自描画のUI、UI Automationへ十分な情報を出していない画面 |
既定のAutoモードでは、Fluent Searchが状況に応じて選びます。候補がうまく出ない場合は、Screen Searchの起動中にTabを押してエンジンを切り替えられます。Screen Searchの公式ドキュメントと高度な使い方に、この切り替えと各エンジンの役割が記載されています。
UI Automationではアプリが公開したUIツリーを使う
In-Window Contentは、アプリが公開しているUIツリーをWindows UI Automationから取得して候補にします。
UI Automationは、支援技術や自動テストがデスクトップのUI要素を取得・操作するためのWindowsの仕組みです。UI要素はツリーとして表現され、クライアント側はボタンやチェックボックスなどの種類と、それぞれが対応する操作パターンを利用できます。Microsoft LearnのUI Automation Overviewで説明されています。
Screen Searchでは、例えば次のような要素が候補になります。
- タブ
- ボタン
- リンク
- リスト項目
- メニュー
- テキスト入力欄
UI Automationからは、要素の種類、名前、位置、対応する操作などの情報を取得できます。
Screen Searchで候補を選択すると、その要素に対してクリックなどの操作が実行されます。Fluent SearchがUI AutomationのControl Patternを使って実行しているかどうかは、公式資料からは確認できないため、ここでは断定しません。
見えている要素が必ず候補になるわけではない
UI Automationはアプリが公開している情報に依存します。そのため、見た目にはボタンでも、UIツリーに操作可能な要素として現れなければ、In-Window Contentでは候補にできません。
次のような場合は、期待どおりに候補が出ないことがあります。
- アプリが独自に描画したコントロールを使っている
- UI Automationの要素、プロパティ、Control Patternなどが十分に公開されていない
- 権限が異なるプロセスの画面を操作しようとしている
- 対象が画面外にある、または別のウィンドウに隠れている
このような場合は、Image Recognitionへ切り替えられます。ただし画像認識も画面の見た目から候補を推定するため、期待どおりに検出できないことがあります。
「すべてのUIを確実にキーボード操作できる」と考えるより、対象アプリで候補が安定して出るかを一度確認してから使う方が安全です。
マウス操作の種類もキーで選べる
Screen Searchは、通常の左クリックだけに限りません。ラベルの前に数字キーを入力すると、操作の種類を変えられます。
| 入力 | 操作 |
|---|---|
| ラベルだけ | 左クリック |
2 + ラベル |
ダブルクリック |
3 + ラベル |
要素の位置でテキスト選択 |
4 + ラベル |
右クリック |
5 + ラベル |
クリックせずマウスカーソルを移動 |
例えば、ラベルがASの項目をダブルクリックするなら、2、A、Sの順に入力します。数字キーの割り当ては変更できます。
ただし、右クリックやダブルクリックはアプリ側の実装に依存します。まずは既定の左クリックから使い始め、必要な操作だけ増やす方が混乱しません。
ラベルの読みやすさは設定で調整できる
候補が多い画面では、ラベル同士が重なったり、対象を隠したりします。Screen Searchでは、ラベルに使う文字、サイズ、枠線、表示位置、背景色を変更できます。
キーボード配列との相性は確認した方がよいです。既定のラベル文字はASDWJKLIFHQERNOUMCXVZGBTYPで、複数文字の組み合わせとして使われます。自分の配列で打ちやすい文字へ変えると、画面上の候補を選びやすくなります。Screen Searchのカスタマイズ項目で調整できます。
Vimiumのfが好きなら、Windows側の補完として使いやすい
Vimiumのfに慣れている人にとって、Screen Searchは操作感が近い機能です。
- 画面上に候補を表示する
- キー入力で候補を絞り、そのまま操作する
- マウスへ手を動かさずに、現在見えている画面を操作する
違いは、VimiumがDOMという構造化された情報を扱うのに対し、Screen SearchはWindows UI Automationと画像認識を組み合わせる点です。この違いがあるため、Screen SearchはWebページの外でも使える一方で、アプリごとに候補の精度が変わります。
ブラウザではVimium、デスクトップアプリではScreen Searchと使い分けると扱いやすくなります。
まとめ
Fluent SearchのScreen Searchは、画面上の候補へラベルを出し、文字入力で対象を操作する機能です。Vimiumのfと操作感は近いですが、対象はWebページではなくWindowsの画面です。
候補の検出には、UI Automationと画像認識を使います。UI Automation情報を十分に公開しているアプリではIn-Window Contentが使いやすく、独自描画などでUI Automationから十分な情報を取得できない場合はImage Recognitionが補完します。どちらにも得意不得意があるため、よく使うアプリで実際に候補が出るかを確認しながら設定するのがよいと思います。