第54回 マイIME
2011年4月15日
(これまでの増井俊之の「界面潮流」はこちら)
パソコンで日本語を入力する方法については長い研究開発の歴史があります。日本で最初のワープロのためにかな漢字変換方式が考案されたのをはじめとして、様々な種類の日本語入力手法が開発されてきました。
現在のパソコンで日本語入力するときは「Microsoft IME」「ことえり」「ATOK」などの日本語入力システムが広く使われています。これら以外にも各種の日本語入力システムが提案されたり販売されたりしていますが、その種類はあまり多いとはいえず、普通のユーザにとって選択の余地は大きくないのが現状です。
かな漢字変換システムのような高度な自然言語処理システムを作成するのは困難だということが、パソコンの日本語入力システムの種類が少ないことの最大の理由だと思われますが、日本語入力システムをパソコンに組み込むこと自体が難しいという点も大きな理由のひとつだと考えられます。WindowsやMacのアプリケーションを作るための資料は沢山公開されていますが、日本語入力システムを作るための情報は多くありませんし、サンプルソースもほとんど存在しません。仮に面白い日本語入力手法を思いついたとしても、それをパソコンに組み込むのに苦労するのであれば、なかなか実装を試みる気にならないでしょう。
しかし最近のMacでは「IMKit」や「MacRuby」などのシステムが利用できるようになったので、IME作成のハードルが非常に低くなってきました。
IMKit
2007年に発売された「Mac OS Leopard」ではIMKit(Input Method Kit)というライブラリが新たに導入され、様々な言語の入力システムを以前よりも容易に作成できるようになりました。昔のパソコンは入力システムの仕様が複雑だったり公開が不充分だったりすることがありましたが、IMKitは仕様がシンプルであり、利用サンプルが公開されているため、入力システムの開発が従来に比べて非常に楽になりました。Mac用の「Google日本語入力」「Social IME」「AquaSKK」のようなサードパーティソフトウェアもIMKitを利用して実装されています。
IMKitによってMacの日本語入力システムの作成は容易になりましたが、IMKitはObjective-Cのライブラリなので、開発にあたってはObjective-Cのプログラミングに精通している必要があります。また、Objective-Cで文字列処理を行なうのはあまり簡単でないため、日本語入力システムのようにテキスト処理が多いプログラムを書くのは楽ではありません。しかしこのような問題はMacRubyの導入により解決します。
MacRuby
プログラミング言語「Ruby」が近年広く利用されるようになってきていますが、RubyをMacプログラミングに特化した「MacRuby」というシステムが便利に使えるようになってきました。MacRubyは、Objective-Cを利用できるようにRubyを改造したシステムです。Macのアプリケーションを作成するためにはObjective-Cでプログラムを記述し、Objective-Cで書かれたライブラリを利用する必要がありましたが、MacRubyを利用すると、普通のRubyプログラムからMacのObjective-Cライブラリを利用することができるため、RubyだけでMacのアプリケーションを作成することができます。
下図は、ボタンを押すと「Hello, World!」という声が出るアプリケーションのMacRubyプログラムと実行例です。Macの音声合成ライブラリである「NSSpeechSynthesizer」のようなものをRubyから呼び出しています。
ボタンを押すと声が出るプログラム
Interface Builder
前の例ではウィンドウのサイズや位置などをテキストで指定しているのでプログラムが長くなっていますが、「Interface Builder」というシステムを利用すると、ウィンドウの初期化や配置といった面倒な作業をGUIで指定することができます。
Interface Builderは、EclipseやVisualStudioのような最近のグラフィカルな開発環境の草分けで、ウィンドウやボタンのようなGUI部品を画面上に配置することによってアプリケーションの見栄えを設計することができます。現在のMacでは「XCode」というグラフィカル開発環境でInterface Builderを利用できるようになっていますが、XCodeはMacRubyのプログラミングにも利用することができるので、画面配置などをInterface Builderにまかせることができます。
Gyaim
MacRubyはMacのあらゆるライブラリを扱うことができるので、IMKitも利用することができます。
つまり、Interface Builderでグラフィカルに画面を配置し、MacRubyからIMKitを扱うプログラムを書くことによって、Macの日本語入力システムを手軽に作れてしまうことになります。この方式で、Gyaimという入力システムを試作してみました。ソースコードや動画デモも公開しています。
Gyaim使用例
Gyaimの動作は非常に単純です。「a」から「z」のキーが押された場合はローマ字入力だと判断して辞書検索を行ない、マッチしたものを候補としてウィンドウに表示します。スペースキーかバックスペースキーが押された場合は候補の並べ変えを行ない、リターンキーが押されると先頭の候補をカーソル位置に入力します。恐ろしく単純な仕組みですが、それでもとりあえず日本語入力を行なうことができます。
単語の検索、候補の並べ変えなどはすべてRubyで記述しているので、ローマ字かな変換部を除くとプログラムは300行ぐらいしかありません。入力システムといえば極めて複雑なものだという印象がありましたが、ある程度実用的なIMEをこの程度のプログラミングで作れるようになったことは画期的です。複雑な変換アルゴリズムや入力手法を試してみることもできますし、見栄えを変えるのも簡単です。Rubyプログラムを少し書くだけで自分だけのIMEを簡単に試してみることができるようになるわけです。
最近のMacは、従来型のUnixのプログラミング環境が利用できることに加え、XCodeのようなグラフィカルな開発システムを利用できるので開発システムとして優れていましたが、RubyでアプリケーションでもIMEでも作れてしまうようになったため、プログラマにとってさらに面白い環境になってきたといえるでしょう。
沢山のプログラマがMacRubyを利用して、IMEをはじめとする面白いシステムを量産してほしいものだと思います。
増井俊之の「界面潮流」
過去の記事
- 第55回 ものづくり革命2011年5月16日
- 第54回 マイIME2011年4月15日
- 第53回 NFC革命2011年3月10日
- 第52回 自己正当化の圧力2011年2月10日
- 第51回 縦書き主義2011年1月17日