im2016発表資料
IM2016発表資料
増井俊之
慶應義塾大学 環境情報学部
よろずユーザインタフェースハード/ソフト開発
ガラケーの予測入力システム開発
iPhoneのフリック入力開発
IoT方面の開発いろいろ
自前のIMEしか使ってません
Mac, Android, Emacs, (Windows)
Gyazo
Scrapbox
SoftwareDesignでの連載
増井の入力システムの特徴
シンプルで実用的
特殊キーなどを使わない
幅広い機器で動く
自然言語処理を使わない
曖昧さやら操作ミスを許す
日々ドッグフーディング
Gyaim
= MacのIME
単純な予測変換
すべてRubyで記述 (RubyMotion)
e.g. MacRuby, RubyCocoa
アプリケーションと同じようにビルド
Cocoaの謎APIをRubyから使う
コードも辞書もオープンソース
コードは1000行以下
利用しているIMEのAPIはひとつだけ
InputMethodKit
デモ: Gyaim
画像入力
パスワード入力
クレカ番号とか
接続辞書
「さんびゃくさんじゅうさん」
単語登録
Slime
= AndroidのIME
Javaで記述
コードも辞書もオープンソース
単純な予測変換
T9風入力可能 (子音だけでの入力)
モード切り替えなし
ビデオ: Slime
連文節変換 considered harmful
正確な入力が必要
IoT時代向けでない
必ず訂正が必要
e.g. 「きょうはいしゃにいった」「うさぎをかいたい」「ここではきものをぬいでください」
曖昧入力アルゴリズムを適用しにくい
辞書や文法の管理が大変
大阪弁変換が作れるか?
「行かはる」
様々な機器で共通に利用できない
辞書
GyaimもSlimeも共通
「接続辞書」をWiki上で編集
単語の前と後のカテゴリを指定
品詞の登録はしない
あらゆる言語で利用可能?
変換アルゴリズム
「接続辞書」にもとづいて可能なものを並べる
単純なのでどこでも動く
e.g. Ruby / Java / JS
みつからないときはググる
確定した単語は先頭に持ってくる
Slimeの状態遷移
単語登録
未登録の単語を選択して読みを入力するとその単語が候補に出る
選択して確定すると登録される
쌈장
ᕦ( ͡° ͜ʖ ͡°)ᕤ
入力と検索と登録を融合
教えてください!
SwiftでIMEを作る方法
Windows版を作る方法
おまけ