Mozilla Flux

Mozilla関係の情報に特化したブログです。

Thunderbird 3.0の新検索システムが日本語に対応

won't fix『Thunderbirdの日本語検索が入りました』で既報のとおり、Thunderbird 3.0の新検索システムが日本語に対応する。まだNightlyビルドに実装された段階だが、該当バグ(Bug 472764)ではMozilla Messaging社のDavid Ascher CEO自らblocking-thunderbird3+(これが修正されない限りリリースできない)のフラグを復活させており、現在も維持されていることからみて、RC1のリリース時にユーザーの手元にもたらされることはほぼ確実といえる。

主要開発者の一人Andrew Sutherland氏がmozilla.dev.apps.thunderbirdの『Thunderbird 3.0 global / full-text search support for CJK languages landed, will show up in nightlies tomorrow, requires a new database.』で述べているように、これはパッチを作成したMakoto Kato氏の素晴らしい功績である。8月下旬には『Thunderbird 3.0ではGlodaの国際化を断念』という状態だったのが、9月半ばには『Glodaの国際化プランが復活 Thunderbird 3.0でCJKに対応へ』と急展開を見せ、ついに今、新検索システムの基盤となるGlodaデータベースは、CJK(中国語、日本語、韓国語)のインデックスをサポートするに至った。Makoto Kato氏が一肌脱ごうと思わなければ、日本語版ユーザーは3.0の新検索システムをまともに使うことができず、指をくわえて3.1のリリースを待つしかなかった。また、中国語圏の潜在ユーザー数を考えると、Mozilla Messagingにとってもかなりの損失だっただろう。

CJKサポートの具体的な内容は、Sutherland氏が上記の投稿で簡単に説明してくれている。3.0 Beta 4では、検索時に利用されるインデックスは、空白か句読点で区切られて作成されていた。ここでいう空白や句読点は、英文のような1バイト文字のものが前提だ。和文などマルチバイトの文字列に出くわした場合は、単一の巨大な単語として扱われたのである。ユーザーが検索のため入力する(日本語の)語句とマッチするはずもなく、実質的に検索が行えない状態になっていた。

新パッチでは、CJK文字はペアで一つの単語として扱われる。バイグラムと呼ばれるインデックス化の方式である。だが、たとえば日本語一文字だけを検索できないというわけではない。「その文字を含む文字列」の形へ自動的に置き換わる設計になっているからだ。ただ、新方式を採用したため、従来のインデックス用データベース(global-messages-db.sqlite)を破棄する必要も出てきたが、こちらも残るバグ、たとえば一部のメッセージがうまくインデックス化されないといった問題が解決された暁には、自動的に古いファイルを削除して、データベースを再構築する仕組みが導入されるという。

非ASCIIかつ非CJKの文字列はどうだろう。アクセントつき文字が典型だが、残念ながらこれらは未対応のままとなる。新検索システムについて、完全な国際化の実現はThunderbird 3.1の課題として持ち越されたわけだ。

とはいえ、非ASCII文字を包摂した意義は非常に大きい。非英語圏のユーザーを疎かにしないというメッセージを明確に打ち出すことができた。加えて、プロセスの面でも、ブログにおいて示されたユーザーの不満を開発者が拾い上げ、問題を解消するパッチを作成して投稿し、主要開発者らのレビューを経てアプリケーションに実際に取り入れられたところに面白みがある。Windows Live Mailの開発プロセスでは到底起きそうにない流れではないか。

(09/10/22追記)
Makoto Kato氏は謙遜しておられるが、コードを書いた人が一番偉い(しかも圧倒的に)のは言うまでもない。