- 2010年10月26日 12:00 AM
- Event

先週の土曜日、Google 日本語入力 TechTalk 2010に参加してきました。
Google日本語入力を使ったこともインストールしたこともないのに、イベント情報を見た瞬間に参加することを決定。
面白半分で参加することに決めました。
しかし、このイベントは予想外に面白いものでした。
Google日本語入力プロジェクトの立ち上げや、そのコンセプト、さらにはコードリーディングまで。
残念ながら私は技術力も頭も足りないので、詳しく理解できなかった点がたくさんあります。
ですが、有益な情報は共有したいので、記事にまとめてみます。
長くなってしまうので、2部に分けます。
今回はコンセプト編!
Google日本語入力のイベント
このイベントの参加案内があったのは2010年9月17日。
場所は六本木のGoogle東京オフィス、14:00-19:00のなかなか長丁場。
懇親会という名の”タダ飯付き“というイベントです。
実際に当日行ってみると、綺麗なホールに約100名以上のエンジニアが集まるという規模の大きさ。
そして、入り口にはなんとお酒があるというおもてなし。
さすがGoogle様、分かってらっしゃる。
オープニングトークで、以下の内容でセッションが行われることが発表されました。
- Google 日本語入力ができるまで
- Google日本語入力のコンセプトやプロジェクトの立ち上げについて。配られた冊子を見れば、ほとんどわかる。
- Google 日本語入力の設計概要
- Google日本語入力の設計について。既存のIMEと異なる点を取り上げる。
- Mozc ソースコードレビュー
- Mozcのソースコードを読む上ためのポイントを説明。ソースを晒しながら、改造するのに必要な点なども。
- ライトニングトーク
- IMEに限らず、”入力”というテーマでレベルの高いLTを参加者とGoogle社員が。
順を追って”Google日本語入力“が理解できるようです。
ワクワクしてきました。
(決して、お酒が入ったからではないですよ:P)
Google日本語入力ができるまで
“Google日本語入力が出来るまで“は会場で配られたこの冊子を読むとわかります。

中は漫画になっています。

わかりやすいので、皆さんに見てもらいたい。
どこかに公開していないのかな?
と思ったらありました。
これを読んでしまえば、この記事もいらn(ry
20%ルール
Google日本語入力は、皆さんお馴染みの”20%ルール“を使って立ち上げられたプロジェクトです。
20%ルールの簡単な説明と、それを使って立ち上げられたプロジェクトが紹介されます。
あの”Google App Engine“も20%ルールで作られたプロジェクトだと、このセッションで知りました。
続いて、このプロジェクトを立ち上げた開発者が紹介されます。
- 工藤 拓さん
- 言わずと知れたmecabの開発者。Googleではもしかして検索を担当しているそうです。
- 小松 弘幸さん
- 予測変換システム「PRIME」の開発者。工藤さんから声が掛かる前から、Google日本語入力のアイディアを温めていたそうです。
MeCabの開発者”工藤 拓“さんが開発に携わっていたんですね。
そして、Googleに居るというのもびっくり。
まったく予習していないのがバレバレですが…。
リリースまでのプロセス
リリースまでは以下のプロセスで開発を進めたそうです。
- ディスカッション
- 開発・テスト
- ドックフード
- 開発版リリース
- ベータ版リリース
どれもこれも興味深い話ばかりでした。
特に印象に残ったのは”ディスカッション“と”テスト“、それに”ドックフード“です。
ディスカッション
“Google日本語入力をどんなものにするか“を20%ルールを使い、話し合ったそうです。
初めの段階でこういった話をするのは珍しい話じゃない、というか当たり前です。
走る前に考えましょう。
普通じゃないのがこの期間。
“約半年“の間、ディスカッションだけに20%ルールの時間を使ったそうで。
その中身は、以下の内容。
- 既存のIMEの成功/失敗事例
- 既存のIMEの悪いところや良いところに関して話し合っていく。Google日本語入力のイメージを固める作業でもあったようです。
- Google日本語入力のコンセプト
- “どんなIMEを作りたいか”を事例を踏まえ、コンセプトとして固めます。Google日本語入力のコンセプトは”As you think of・空気のように”です。
こういったコンセプトを詰めるのに半年も使うんですね。
6ヶ月 x 4週 x 8時間 = 192時間
約200時間を費やして決めたコンセプト。
優秀なプログラマはコーディングする時間よりも、考える時間の方が長い。
その最たる例な気もします。
テスト
テストで興味深かったのは、以下の3点です。
- ユニットテスト
- 変換率と当たり前の変換テスト
- UIのテスト
Google日本語入力ではしっかりユニットテストが行われています。
これは当たり前なので、特筆すべき点はありません。
面白かったのは”変換率と当たり前の変換テスト“です。
日本語変換という性質上、変換のために”学習型のアルゴリズム“を使います。
この変換はこのアルゴリズムを使って機械的に変換するため、その部分のテストが難しいです。
そこでGoogle日本語入力では、”変換率“のテストの他に、”当たり前の変換テスト“を行っているそうです。
これは何か。
ユーザビリティのテストに当たるもので、”ユーザが欲しい変換“が出来るかどうかをテストするものです。
例えば、”あいます”と入れれば”アイマス”ではなく”会います”が出てくる。
“どこいく”といれれば”ドコイク”ではなく”どこ行く”が出てくる。
こういった具合です。
このような辞書をテスト用に作成し、このテストが全て通らないと出荷しないそうです。
テストとその自動化に徹底していますね。
このセッションの最後に、
“インターフェースなどのテストの難しい部分はどうしているか?”
という質問がありました。
これに対する答えは、
“我々もそのベストプラクティスを探している。しかし、できるだけユニットテストに落としこむことが重要。”
というものでした。
Googleでもやはり、テストの王道に従い、ユニットテストを積み重ねることで品質を保っているんですね。
どれだけパーツを独立した設計にできるか。
それが重要ですね。
ドックフード
Google日本語入力のイベントに参加するまで、この言葉も知りませんでした。
自分で自分の作ったドックフードを食ってから出せ。
“最低限、食べられるモノが出来てから出せ“といった意味が込められています。
Googleでもそれに乗っ取って開発とテストを進めています。
毎日ビルドし、それを社内版として公開しているそうです。
そうして、社内の人間に使ってもらい、フィードバックを得る。
これって基本だと思いますが、とても大事なことですよね。
これを怠った会社はもはやソフトウェア会社じゃないような。
自分で作ったモノが使いにくいのに、誰が使ってくれるんでしょうか。
自分への戒めとしたいですね。
今回の記事はこんなところで。
次回は”Google日本語入力の設計“に関してまとめます。
細かいところまでは理解できなかったので、表面だけさらっと…(苦笑)
他の参加者の方のまとめもどうぞ!
- Google 日本語入力 TechTalk 2010 ノート – yoriyukiの日記
- Google 日本語入力 Tech Talk – 自己的活动日记
- Togetter – 「Google 日本語入力 TechTalk 2010 まとめ」
ちょっと一言
やはり知らないことを学ぶのは楽しいです。
C++を勉強するときはGoogle日本語入力のソースコードを読もうかな!
-
http://topsy.com/1-byte.jp/2010/10/26/google_ime_tech_talk_2010/?utm_source=pingback&utm_campaign=L2 Tweets that mention Google日本語入力のイベントに行ってきた – コンセプト編 — Topsy.com

