たしか2011年のどこかで、ChromeOS用に注音符号によるIMEを作るという仕事があったことを思い出した。
注音符号は台湾で使われている漢字の発音(読み方)を表現するための記号だ。台湾で販売されているキーボードでは(JISキーボードに日本語のかなが刻印されているのと同じように)各キーに一つずつ注音符号が割り当てられていて、それで読み方を入力して漢字変換をするという入力方式がある。そういうIMEがChromeOSに必要だというので作ったのだったと思う。
と言っても変換エンジンの部分はオープンソースのライブラリがもうあって、それをそっくりそのまま使うだけ。当時のChromeOSはIMEフレームワークとしてIBusを使っていたので、そのAPIとライブラリを橋渡しするだけという単純なミニプロジェクトだ。
そもそもなんでこんなものが必要になったかというと、ChromeOSの特殊な制約による。変換ライブラリがあるぐらいなので、オープンソースのIBus向け注音符号IMEも存在していたけど、Pythonで書かれていたというのが問題だった。ChromeOSはセキュリティを頑張るというのがコンセプトの一つだったので、スクリプト言語の実行環境はバンドルしないというポリシーになっていて、そういうことのためにPythonを入れたりはできなかった。でもコアの変換エンジンはCのものがあるし、IBusも普通にいろんな言語のバインディングがあるからそこを繋ぐやつを書けばそれでオッケー、なのでそれをやってね、というかんじ。
だからまあやるだけという単純な仕事だと思ったし、実際にもそれほど時間をかけずに完遂したと思う。ただいざやってみたら色々面白い苦労があったことを覚えている。
ライブラリはある。インタフェースを眺めて使い方を調べてみるが……わかるようなわからないような。ドキュメンテーションを探してみる。が……中国語のドキュメントしかない! そりゃまあ中国語を入力するものを使いたい人は中国語を読めるであろうというのは自然な考え方であろう。日本語IMEの変換エンジンのドキュメントも日本語ばっかりだったりするのは間違いない。が、困る。中国語、全然知らないので。
とりあえずGoogle翻訳で頑張って翻訳してもらう。ちなみにGoogle翻訳にディープラーニングが取り入られ、性能が著しく改善したのは2016年のこと。そのはるか以前の当時のGoogle翻訳はサポートする言語数は多いものの翻訳能力はまだまだ厳しいと言われていた(というのは随分やさしい表現で、もっと酷い言われようも普通だった)。が、ないよりはマシ。それで少しずつ全体像を理解していったような気がする。
しかも細かいところがちょっとよくわからない、みたいなこともあったような記憶がある。IMEの用語ってちょっと特殊で独特なところがある。例えば日本語を入力していて下線が引かれている入力途中の部分をなんというかというと、日本語では「未確定文字列」と言ったりする。この部分は英語だと preedit ということもあるし、 composition text ということもある(compositionだけになっていることもある)。ライブラリのパラメータ名とかフィールド名とかにはそういう単語が使われたりするわけだけど、そういう単語が微妙に違っているとかがあったんじゃなかったか。あと日本語入力のライブラリを作っていたりすると、多分無理に英語化したりせずに「読み」に対応するところを yomi にしちゃったりするでしょう。で、ドキュメンテーション上でも yomi の説明は「よみ」だったりする。昔のことすぎて何も覚えていないけど、そういうようなことがあったりして、どうしても細かいところがよくわからない、というふうになっていたんじゃなかったかな。
結局、カンと試行錯誤で色々試して動くものを作っていったと思う。でもそもそもどういう入力をしたらどういうふうに動作して、最終的に何が入力できたら嬉しいか、みたいなことも実際にはよくわからない。とにかく色々試して作っていった。なんであんなことしてたんだろうな。なかなか得難い経験であった。
(カンと試行錯誤ということからして、今だったらAIとかにやらせたらサクッと作ってくれたりするのかもしれない。が、IMEみたいなものはAIに実際に試してもらう環境を作る方が大変だったりすると思うので、いうほど簡単でもないだろう)。
ちなみにChromeOSのIMEフレームワークはその後も色々変わっていて、今ではgboardベースのIMEになっていたりするはずなので、この成果は今はもう使われていない。