IME on Linux

先月 21 日から今日まで、オスロの Desktop team の元へ出張してきました。過去の出張の際のように、出先でもはてな位は更新出来たのでしょうが、開発中の機密事項もあるのでリリースしてから何か書けるだろうと思っていました。
今から 24 時間ほど前、帰り際に Linux 担当テスターで、今回の Opera 10.60 に日本語入力の実装をテストしてくれた Ruari と話をしていて、blog 記事を載せるから日本語で紹介してくれと頼まれました。少し長い記事ですが、約束もあるので久々に更新します。

Problems inputting text? Help us, help you!

Linux/FreeBSD 向け Opera 10.60 ファイナルに際して、私たちはコードの大部分を書き換えました。皆さんご存知の Vega と Carakan の新規導入に関わる Core レイアウトチームから引き継いだ大きな変更に加えて、Desktop の UNIX チームは基本的な機能に関わる多くの重要な個所の書き換えを求められました。フォント、印刷、IME サポート、ドラッグ アンド ドロップに関する個所等がそれです。これらのうちの大半は Qt に依存していた基本構成からの脱却に基づくものです。
新しいソフトウェアの例に漏れず(*nix 向け Opera のコード変更は広範囲に渡るものであり、「新しい」と呼ぶにふさわしいものでした)、幾つかの機能に関してバグが無かった訳ではありませんでした。現在私(Ruari)は幾人かのユーザが遭遇している文字入力に関わる問題を扱っています。その大半は IME の実装に関わるものであり、特定のキーボード配置に関係しているものもあります。
われわれはフィードバックには大変感謝しているのですが、残念ながらバグ報告の中には問題を正しく理解したり再現させるために必要な詳細情報が欠けているものも見られます。明確なバグレポートがあれば重大な問題を短時間で修正することが可能となりますし、それは Opera とユーザ、双方にとって有益なことです。
(長くなるので、具体的な話はかいつまんで)
(文字入力のバグ報告には)どんな情報が求められるのか。

  • キーボードレイアウト
  • locale に関する詳細
  • 問題を再現させるための、明快な手順(ステップ)
  • IME を使っている場合には、IME、変換エンジンの名称
  • IME を使っている場合には、debug log (後述)

場合によっては以下の情報が有用となる場合もある

沢山あるので困惑する人もあるかもしれません。何らかの理由で全ての方法を示せなければ、可能な範囲で結構です。その範囲でこちらで全力を尽くしますし、その上で更に詳しい情報を教えてくださるようお願いする場合もあります(ですから、バグ報告には到達可能なメールアドレスを添えてもらうと助かります)。
以下に実際のバグ報告を実例として紹介してみます。

  • What kind of problem is this?

Spec violation

  • Brief summary of the problem encountered

It is difficult to create new lines with SCIM-Anthy

  • What URL triggers this bug, if any?

http://files.myopera.com/ruario/input/input_example.html

  • Describe in 3 steps or more how to reproduce this bug

1. Click in text field labelled 'Text area'
2. Enable IME (SCIM-Anthy)
3. Type the following keys (labels as per a Norwegian keyboard):
opera[enter][enter]opera[enter]

  • When following the steps described above:

- 1. What do you expect to happen?

おぺら
おぺら

- 2. What actually happens?

おぺらおぺら

Environment:
Vine Linux 5.1 (Cheval Blanc) / Gnome 2.26.3

$ opera --full-version
Opera 10.60 Internal. Build 6386 for Linux.
Compiled on Jun 30 2010 by gcc 4.3.2 (ABI: 1002) for GNU libc 2.7.
Compositor active: No Toolkit: Gtk 2.16.5

$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "xfree86+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+no" };
xkb_geometry { include "pc(pc105)" };

$ locale
LANG=C
LC_CTYPE=ja_JP.utf8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

$ env | grep XMODIFIERS
XMODIFIERS=@im=SCIM

Debug Log:
http://files.myopera.com/ruario/input/debug-keyboard-mouse-ime-scim-newline-example.txt

  • Optionally, provide an e-mail address where we can contact you

ruari@example.com

バグ報告する

必要な情報が集まったら、バグ報告ウィザードから報告してください(報告は、様々な人が読むので誰でも読めるように英語でお願いしています)。コメント欄でバグ番号に言及するのは結構ですが、余りに長文にするのは避け、デバッグログを直に貼り付けるのはお止めください。正規の窓口からバグ報告していただければ、自分だけでなく同僚に見てもらって検証したり、問題を修正するのが容易になります。

キーボードレイアウト

キーボードの配置(レイアウト)はもちろん手動でも確認出来ますが、以下のコマンドを打つことによって正確に求められます。

setxkbmap -print

locale 情報

端末で 'locale' コマンドを使って求められます。

locale

テストページ

問題が起きている実際のページを示すことは大変有益ですが、Ruari の作成した最小限のテストページを使って報告することも出来ます。その際には実際に操作/打鍵したキーをキーボードレイアウトと共に正確に記録してください。ユーザの方は不必要に思えるかもしれませんが、一々のキー操作を正確に知ることがバグ修正には必要な場合があるのです。また必要に応じて Opera で行っているテスト結果を報告するのに別のブラウザが必要になるなら、気にせずにお使いください。

IME と変換エンジン

以下のコマンドで使用中の IME を知ることが出来ます。

env | grep XMODIFIERS

使っている IME の種類はご存知だと思いますが、自信がなかったら空欄でも結構です。

Debug logging

そして最後にデバグログの取り方を解説します。これまで公開してきませんでしたが、キーボード、マウス、IME にはそれぞれ '-debugkeyboard', '-debugmouse', '-debugime' というオプションがあります。以下のようにして Opera を起動させると端末上にデバグ情報が得られますので、それをこちらへ送ってください。

opera -debugkeyboard -debugmouse -debugime &

ヒント - 再スタート時に終了時のセッションを開くよう設定してある場合、テストページを開いて一旦 Opera を終了させ、再度起動してテストを行います。また IME のテストでは必要時以外に IME をオンオフさせないで下さい。こうすることによって必要な情報だけが載った短いログを取ることが出来ます。

Opera の総合情報

Opera を終了させた後に端末上で以下のコマンドを使うことによって、バージョン、ビルド利用環境その他主要な情報が得られます。

opera --full-version

これらの方法によって重要な情報を集め、協力していただける方々に御礼申し上げます。

7th of July 追記

Ruari による元記事に付けられている彼自身のコメントによると、この方法で寄せられた追加情報で、キリル文字に関する幾つかの問題について、不具合の原因が判明したようです。
http://my.opera.com/ruario/blog/2010/07/05/text-input#comment33698152 以下を参照。
それに基づいて開発者のアリアンが Ubuntu コミュニティにバグ報告をしていますので参照ください。