情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

【Chrome】自動補完で勝手に確定されてしまう・入力が二重になる問題について(Real Search Boxの無効化設定について)

Chrome (225) Windows (485)

Chromeで新しいタブを開いて検索キーワードを入力する際に、まだ入力を確定していない(漢字変換を確定していない)のに1文字目や冒頭の単語などが確定されてしまい、その後の文字を入力したり、バックスペースで削除したりしようとすると入力を確定していなかった文字が再び表示され、二重に入力したような状態になってしまう問題が発生しています。

この問題について実験したり調べたことを書き残しておきます。今回、複数のPCを使っていて挙動が揃っていないなどの影響もあって、かなり特殊な感じのする回避(新規タブページの検索ボックスを利用しようとしたとき、自動的にアドレスバーを利用するようにカーソルを移動させる設定)を行うことにしてしまったのですが、実際方針通りの設定変更をするのが難しかったため、そのあたりも紹介しておきます。

※「予測変換」の内容が勝手に確定されているようにも見えますが、現在確認できているのはMicrosoft IMEの予測変換ではなく、Google検索の検索履歴による自動補完によるものです。

勝手に入力が確定される

Windows 10 Pro(バージョン 1909)、Google Chrome バージョン84.0.4147.125、Microsoft IME(MSIME)を利用している環境で、Chromeの新しいタブを開き、その新しいタブのページに検索キーワードを入力している最中に、突然確定していない文字が確定されてしまったり、その後勝手に確定されたにも関わらずまだ入力途中の状態も続いてしまい、入力が二重になる問題が発生しました。

2重で入力されてしまうため、勝手に確定された部分を消してから入力し直す、といった対応が必要になります。

検索履歴からの自動補完が勝手に確定されたように見える

この動作を詳しく見てみるとどうやら、検索履歴(しかもアルファベットで始まる)があることと、検索履歴による補完が発生するというのが、重要な発動条件のようでした(他のケースもあるかもしれませんが、手元ではこれが問題になりました)。

検索履歴にアルファベット(英語)で始まる検索キーワードが記録されているときに、その検索履歴と同じアルファベットを検索ボックスに入力すると、検索キーワードの残り(続き)の部分が自動補完される場合があります。

例えば「twitter ログイン」という検索履歴が記録されているときに「twitter」と入力すると「twitter ログイン」まで自動的に入力されるようなケースです。

このとき、アルファベットを日本語入力有効の状態で入力していると、入力したアルファベット部分は入力が確定されたような表示となります。そして、後半の補完された部分は選択状態(文字背景色が青で、文字が白)で表示されます。

この前半部分が「勝手に確定されたように見える」部分です。

しかし実はこの「勝手に確定されたように見える」アルファベット部分は、Chromeによって自動的に挿入されただけで、実際のところ確定していない(漢字変換が完了していない)という状態は継続しており、続きの文字を入力したり、場合によってはバックスペースキーを押したりしたとき、再び変換中の文字の状況が、その挿入された文字列より後ろに表示され、「まだ入力途中の部分」が出現します。

こうして、「勝手に確定されたように見える部分」とまだ入力途中の部分(の冒頭部分)」とが2重に入力された状態になってしまう現象となるようです。

不具合と思われるが直接関連する登録は見当たらず

このようなIMEがらみの怪しい挙動はChromeで今までもよく発生しており、今回もその種の不具合なのではないかと思われました。

しかし、Chromiumの不具合登録を探しても、ずばりこの問題に該当するものを見つけることはできませんでした(かなりの数があるため、検索キーワードの問題かも知れません)。

アドレスバーでは発生しない

ピンポイントの回避手段としては、検索履歴(に基づく補完候補)の消去が考えられたのですが、検索履歴が増えこの問題に遭遇するたびに消すのも手間ですし、消すまで一度は発生してしまいます。また、検索候補自体は便利な機能であるためそれは削除せず利用したいため、自動補完の部分を抑制する設定はないかと探してみました。

そのとき確認してみたところ、今回の新しいタブページの「Google」ロゴの下にある「Google検索ボックス」に入力した場合にはこの問題が発生するものの、画面上部にある「アドレスバー(オムニボックス)」に検索キーワードを入力する分には同様の問題が発生しないことに気が付きました。

新しいタブページの検索ボックスは、日本語入力で英語を入力した際、検索履歴を入力欄そのものに直接補完してしまうのですが、アドレスバーは微妙に挙動が異なり、日本語入力が無効(直接入力)のときは補完が行われるものの、日本語入力が有効な場合は検索キーワード候補には並ぶものの直接の補完が行わないため、問題となる挙動の発生が回避されているようでした(※URLを入力しようとしたときの補完は働くようですが、そちらはそちらで同様の問題は発生しないように見えました)

検索にアドレスバーを使えば回避できる

そのため、(手元で確認した手順の範囲であれば、ですが、)「アドレスバーを使うようにする」ことで回避できるようでした。

他のPCで試してみると様子が違う

ここで、他のPCでも発生しているかを確認しようとしたところ、新しいタブページのGoogle検索ボックスに入力しようとしても、自動的にアドレスバーにカーソルが移動して入力が始まるため、同様の問題が発生しないことが分かりました。

よくよく思い出してみれば、「検索ボックスに入力してもアドレスバーに飛ばされる」という変更が過去実施された記憶がありました。

しかしどういうわけか現在問題が発生しているPCでは直接検索ボックスが利用できる状態となっていました。

その違いが発生する理由は謎なのですが、とにかく他のPCと同様に、自動的にアドレスバーにフォーカスが飛ぶ挙動をしてくれればこの問題に遭遇せずに済むはずなのに、という状態です(この挙動が好みではない場合、その問題は代わりに発生してしまいますが)。

検索ボックスからアドレスバーに自動的に飛ぶようにする方針に

そこで今回は、この挙動を揃えてみることにしました(Ctrl+Tで新しいタブを開いた後そのまま入力すればアドレスバーへの入力が開始されるため、)。

この新しいタブページの「検索ボックス」の2つの挙動、つまり「そのまま入力できる」という挙動と、「アドレスバーに飛ばされる」という挙動の2つについて調べると、「アドレスバーに飛ばされる」挙動から「そのまま入力できる」挙動へと変更する設定を見つけることができました。

その設定は、「chrome://flags(ここの設定を変更する場合は、警告表示などの内容を要確認)」にある「Real search box in New Tab Page(#ntp-realbox)」という設定項目です。

この設定を「Default」から「Enabled」にすると、新しいタブ(New Tab Page, NTP)の「検索ボックス(search box)」が、アドレスバーに飛ばされるだけの検索ボックスから、そのまま入力できる「本物の検索ボックス(Real search box)」になるよ、というものです。

「Real search box in New Tab Page」を「Disabled」に

今回は逆に、Real search box を無効化して、そのまま入力できる状態からアドレスバーに飛ぶ、他のPCと同じ状態にしたかったので、chrome://flagsで「Real search box in New Tab Page」の設定を「Default」から「Disabled」に変更してみました。

しかし、Real search boxは無効になってくれませんでした

「Zero Suggestions in real search box on New Tab Page」も「Disabled」に

そこで、何か別の設定が優先されて無効にできないのではないかと考え、chrome://flagsにある周辺の設定を色々と変更して試してみたところ、「Zero Suggestions in real search box on New Tab Page(#omnibox-zero-suggestions-on-ntp-realbox)」も「Default」から「Disabled」に変更してみたところ、Real Search Boxを無効化し、他のPCと同じ、新規タブページの検索ボックスに入力しようとすると自動的にアドレスバーに飛ばされる挙動に変更することができました。

他のPCと揃っていない点が原因で、かなり特殊で好みの分かれるような対処をすることになりましたが、一応この方針で問題の発生するUIを封じる(問題が起こらないUIに置き換える)ことができ、回避そのものには成功したようです。

Google日本語入力をインストールしてみても解消されず

なお、この後MS IMEではなくGoogle日本語入力でも試してみたのですが、同様の問題が発生してしまい、対策にはなりませんでした。

参考

コメント(0)

新しいコメントを投稿