Windows で GUI ではなく CLI を使う理由はフォーカスが奪われるのを防ぎたいから

なんで(Windows ユーザーなのに)やたら CLI ばっか使うの?……これに対する答えを即答できなかったのでまとめた。色々あるが、ここではそのうちの一つを挙げる。

ウィンドウのフォーカスが変わる(特に奪われる)のを防ぐため だ。

(背景)Focus Stealing 問題

Windows にはアクティブウィンドウのフォーカスが奪われるという重大な欠陥がある。

文書を作成している最中、不意に出現したウィンドウにフォーカスを奪われてイラっとしたことはないだろうか。さらに、フォーカスを奪ったのがダイアログであり、タイピングの延長でうっかりボタンを押してしまい、しかもそれが再起動ボタンで再起動が走ってしまった……なんてことはないだろうか。これらの諸悪の根源は 新しいウィンドウ(やダイアログ)が表示された時にフォーカスが奪われてしまうという「仕様」 のせいだ。

ちなみに 英語では Wikipedia のページまで作られている

(回避策)新しいウィンドウを出さなければ奪われない

Focus Stealing によるイライラを避ける方法は多数考えられるが、その一つに GUI ではなく CLI を使う がある。もっと言うと コマンドプロンプト上で動くツールを使う ということだ。

最初にコマンドプロンプトを立ち上げておき、その中で必要な時に各種ツールを呼び出す。この時、新しいウィンドウが立ち上がることはない(もちろん各種ツールが新しいウィンドウを立ち上げないように設計されている必要はある)。そもそも CLI とはそういうものだ。ターミナル上のテキスト表示で完結する UI しか持っていないわけで、新しくウィンドウを出すことはしない。ゆえに Focus Stealing も発生しない。

だからコマンドやスクリプトを使う

私は Windows ユーザーだが、割とコマンドやスクリプトを使う。むしろ自ら書くまである。その理由の一つは Focus Stealing を避けたいから、なのだ。