2012年やったこと - Chromium 編

前回に引き続き今度は Chromium 編.chromium.org のアカウントを作ってもらったはいいものの,メールアドレスの 1 文字目を大文字にされて激しく凹むということもあった一年.

Windows 8 向け TSF 対応

Chromium を Windows 8 向けに TSF 対応させるというミッション.いやな予感はしていたものの,Mozc の TSF 対応もあるのであまり積極的に手を出せずにいたら,結局ぎりぎりになって火消し案件として振ってきた,という感じの一件.

Windows 8 では IME の TSF 対応が注目されていたりするわけだけど,実は Immersive Mode で動作するブラウザの方も TSF に対応させる必要がある.対応させないと Immersive Mode で CJK の入力ができない.それはまずいというわけで TSF を扱ったことのある Mozc チーム (もっとも Mozc で TSF 経験者といっても私ぐらいだけど) に話が回ってきた.のが 7 月終わりから 8 月頭にかけて.Windows 8 の MSDN 向けリリースは 8 月 15 日.一般リリースは 10 月 26 日.
「どうしてこんなになるまで放っておいたんですかー!」……といっても始まらないので一時期は Mozc チームから 5 人ぐらいヘルプに回しつつ,6 週間 (これは Chromium の平均的なリリースサイクルでもある) でどうにか動くものをでっち上げる.結局細かいバグまで全部取り除くにはもう 1 サイクル (6週間) かかったけど.
この間 Mozilla 方面からはこういう声も聞こえてきたり.


まあ実際は 5 人全員が働きっぱなしということはなくって,内容が専門的になってくるにつれ段階的に人数を減らしていく感じで.戦力の逐次投入の逆ができたという点では満足.
ちなみに自分はリードエンジニアとして参加しつつ,コードを書くよりは主に設計と裏方に注力 (TSF 未経験者ばっかりなので,こうする方がむしろスケールすると判断).全コードのレビューをしたり,ドキュメントをメンテしたり,TSF についての軽い Tech Talk をしたり,Windows のデバッグテクニックのレクチャーをしたり.あとはアーキテクチャ上の最終決定を行ったり (これは胃が痛かった…).同僚がもりもりコードを書いてくれたのでほんと助かった.ぺこり.
もちろん反省点も色々ある.一番大きな反省点は,Chromium のコードレビューに不慣れな人間 (自分含む) がいることを考慮していなかったところ.アプリケーションの TSF 対応では,メッセージポンプやテキストウィジットに手を入れる必要がある.もちろんこれらは重要コンポーネント,大物レビュアーが出てくるし自然とレビューの目も厳しくなる.もうちょっとコミットログや事前の根回しに注意していれば,レビュー期間は半分以下に収まったんじゃないかと思う.最初のキックオフの時にレビュー対策を盛り込んでおけば…… このあたりの文化的背景については @omo2009 先生がすばらしい記事を書いていらっしゃるので興味がある人はこちらをどうぞ.

Handle IMR_QUERYCHARPOSITION even when there is no composition

コンポジション文字列が存在しない時でも IMR_QUERYCHARPOSITION に応答するという変更.実際には単にカーソル位置を返すだけ.

Mozc の TSF 対応を行なっている時に気づいた問題で,空文字列に対するITfContextView::GetTextExt でカーソル位置を取得するためにはこうなっていたほうが都合が良い,という変更.
ブラウザと IME 両方に手を出していると,楽な側で直せるというのは便利.具体的には以下の差が現れる.
f:id:NyaRuRu:20130103213724p:plain
f:id:NyaRuRu:20130103213730p:plain
Chromium 24 にてリリース予定.