blue

Vivaldiの厄介なバグ( v.1.9現在)

  • Posted by: SOMA Hitoshi
  • May 17, 2017 3:13 AM
  • mac web

 きのう書いた、Vivaldiのバグというのはこれ。さすがにフォーラムに不具合報告のスレッドが立っていた。

インプットフォームで日本語入力を行い、変換前の状態でバックスペースで字を消すと2回押さないと文字が消えない時がある。 その時に文字を確定するとインプットフォームのテキストデータ内に不正な文字コードが含まれる。

まだ十分に調査できていないですが、0x08(BS)が文字コードとして入っちゃっているかもしれないです。
インプットフォームで日本語入力をした時にバックスペース処理が正しく行われない時がある | Vivaldi Forum

 で、これを書いているまさにいま、バージョン 1.9へのマイナーアップデートがリリースされ、そこには日本語 IMEにかんするバグフィックスが含まれるとのことで大いに期待したが、残念ながらまたべつの不具合対応(のみ)だったようでこの症状は改善されていなかった。

 引用した不具合報告はかなり端的に症状を説明していて頭が下がる思いさえあるが、これをお読みいただいてもわかるとおり、言葉で説明しようと思うとなかなかに面倒な不具合なのである。すでに何となくはイメージしてもらえているだろう前提で、どうやると再現されるかをわたしなりに「説明が下手か」って感じに説明するとこんな感じ。なお、以下は macOS Sierraの場合。

  1. inputや textareaなどのフォーム入力欄で、「あいう」と打つ。
  2. (スペースバーを押して変換をかけた状態にしてもいいし、しなくてもいい。)
  3. そのまま、確定をせずに、バックスペース( Macのいわゆる delete)キーで入力を取り消していく。
  4. すると、「う」「い」は当然ながらそれぞれ 1回ずつのバックスペース押下で消えていくが、最後の「あ」を消す段になると、1回のバックスペース押下では消えてくれない。
    ちなみにじっさいには消えている。ためしに、「あ」にたいして 1回だけバックスペースを押したこの時点でリターンキーを押す=確定させると、「あ」が消える。
  5. で、もう 1回バックスペースを押すと消えるのだが、そのとき、いままではなかった「見た目には半角スペースのようなもの」が新たに生じる。ま、ふつうは「気になる」ので、もう一度バックスペースを押してそれを消し、都合バックスペースを 2回分多く押すことでようやく全部が消える。
    何となくお気づきかと思うが、この「見た目には半角スペースのようなもの」がじつは「 0x08」という ASCIIコードで、これは「バックスペース」を意味する制御コード。ふつう意図して(文字のように)入力できるものではないのだが、それがなぜか入力できてしまうのが最大に厄介な点。

 ほぼ同じ現象は Yosemiteでも起こるのだが、少しだけ「見た目に」ちがって、Yosemiteだと上記 5.の「半角スペースのようなもの」が生じない。かつまた、生じないのは「何かあるふうに表示されない」というだけのことで、じっさいには目に見えない「 0x08」が同様に存在している、というのが Yosemiteでの挙動。
 これが厄介だ。

 つまり、ブログ記事などを編集しているさいに意図せず、気づかないうちに「 0x08」のコードを紛れ込ませてしまう可能性が高いのであり、記事の表示上はたんに「半角スペースが空いてるように見える」程度の影響だったりする場合もあるけれども( OSやブラウザによる)、たとえば RSSなどの XML文書ではこの文字コードが厳格に「処理できない文字」として扱われるため、構文エラーになり、RSS全体が表示されなくなったりする。

 なお、Yosemiteではかつて、OSレベルで似たようなバグ(「日本語IMでASCIIコード0x08(BS)を入力する方法」)があったりもしたらしいので、macOS側の事情もある程度は関係しているのかもしれない。

 あと、ちなみに指摘しておくと、最初に引用した不具合報告のスレッドの、「インプットフォームで日本語入力をした時にバックスペース処理が正しく行われない時がある」というタイトルの一文にも、さすが投稿者は Vivaldiを使って報告を寄せたのだろう、この「 0x08」が紛れている。タイトル部分を選択してコピーし、バイナリを表示できるエディタにペーストすると現れて確認できるし、また、日本語タイトルがそのまま用いられているスレッドの URLを見るとわかるのだが、

https://forum.vivaldi.net/topic/13187/インプットフォームで日本語入力を-した時にバックスペース処理が正しく行われない時がある

という URLの途中、この「-」に変換されて無害化されているのが元「 0x08」である。

 ま、ともあれ。かなり痛いバグではあるのだった。

関連記事

トラックバック(0)

トラックバックURL: https://web-conte.com/blue/mt-tb.cgi/1172