IM飲み会2010 Sekka開発秘話

16
(better SKK開発への挑戦) 26,Dec,2010 入力メソッド飲み会2010 Kiyoka Nishiyama Sekka誕生秘話

description

IM飲み会2010でのプレゼン資料。

Transcript of IM飲み会2010 Sekka開発秘話

Page 1: IM飲み会2010 Sekka開発秘話

(better SKK開発への挑戦)

26,Dec,2010 入力メソッド飲み会2010Kiyoka Nishiyama

Sekka誕生秘話

Page 2: IM飲み会2010 Sekka開発秘話

入力メソッド Sekkaのデモ●SKKのような入力方式を採用●現在はEmacs専用

クリックして YouTubeで石火(Sekka)の動画を見る

Page 3: IM飲み会2010 Sekka開発秘話

アーキテクチャRESTとKey-Value-Storeが特徴

Page 4: IM飲み会2010 Sekka開発秘話

Sekkaの開発動機(表の動機)

SKKの再認識●自分の日本語入力の癖がSKK向き。単文節で確定。●文節区切り間違いナシ●送り仮名の送り方間違いナシ

Sumibiに不満あり●ミスタイプ時の分かりにくさ●ローマ字の認知的負荷が高い 「kanjihenkan」とか●Sumibiは長文向きだが自分は長文で入力しない

もっと良いSKKは作れる●SKKはモードが多すぎる(英数、ひらがな、漢字)●できればモードという概念を無くしたい●ローマ字の認知的負荷を解消する手を考えれば可能では? →リアルタイムのフィードバック、曖昧辞書検索

Page 5: IM飲み会2010 Sekka開発秘話

Sekkaの開発動機(裏裏の動機)

Gemsで生産性が上がるか●RubyのGemsを使うことでGaucheよりも早く作れるか

Nendoの実力評価●NendoというLisp処理系を開発していた●実はNendoがメインプロジェクト●処理系の実用性を確認するために何か書く必要があった

不足機能のチェック●現状のNendoで、簡単なアプリケーションが作れるか

→ 実験台としてSekkaが良さそうだ。  軽い気持ちで開発スタート

Page 6: IM飲み会2010 Sekka開発秘話

Sekkaの使用コンポーネントNendo 90%が特徴?

Page 7: IM飲み会2010 Sekka開発秘話

特徴1 SKKライク送り仮名なしの単語は大文字で開始

「Kanji」 → 「漢字」「Mo-do」→ 「モード」 ※ カタカナもこの部類

送り仮名の開始位置を大文字で指定「kanJi」→ 「感じ」

ひらがなは全て小文字●「kanji」→ 「かんじ」

Page 8: IM飲み会2010 Sekka開発秘話

特徴2 曖昧検索曖昧検索

●Jaro-Winkler編集距離で辞書検索●ローマ字表記揺れやミスタイプも救済

詳細

例:「かんじ」の表記揺れパターン(("ka") ("nn" "n" "q") ("ji" "zi")) ;; 通常ローマ字のパターン(("kz" "kn") ("ji" "zi"))) ;; AZIK拡張ローマ字のパターン上記の組み合わせを全て展開した文字列リストをDBに持っている。("kanji" "kannji" "kannzi" "kanzi" "kaqji" "kaqzi" "knji" "knzi" "kzji" "kzzi")上記の例ではパターン数は10個になる。

●辞書のキーはローマ字●ローマ字同士の編集距離で閾値を超えたものだけを採用●辞書にローマ字表記揺れの全組み合わせを展開済み●AZIKのローマ字表記も全て辞書に持っている

Page 9: IM飲み会2010 Sekka開発秘話

特徴3 モードレスCtrl-Jでいきなり確定

カーソル直前のローマ字をCtrl-Jで直接変換する

↓ Ctrl-Jを押す(第一候補で確定)

↓ Ctrl-Jを押す(候補選択に入る)

Page 10: IM飲み会2010 Sekka開発秘話

特徴4 リアルタイムフィードバック

タイプするごとに第一候補を画面表示

Page 11: IM飲み会2010 Sekka開発秘話

特徴5 マルチユーザ対応

ユーザ語彙はユーザ毎に管理される●ユーザ語彙はサーバ側にアップロードされる●ユーザ語彙も曖昧検索の対象となる●EmacsクライアントはOSのアカウント名を使用する

EmacsLispで (user-login-name) で取得できる。

Page 12: IM飲み会2010 Sekka開発秘話

Sekkaの今後

搭載予定機能●ユーザ語彙の登録UI未知語は、Google CGI API for Japanese Input で獲得する予定

●Vim対応●ibus対応●数字入り語彙の変換 「100ko」→ 「100個」●公開サーバ対応。xAuthでログインなど●MongoDB対応

コミュニティ開発●ユーザーが増えて、手伝ってくれる人が増えればいいな●Vim対応してくれる人がいたらいいな

Page 13: IM飲み会2010 Sekka開発秘話

質疑応答

クリックして YouTubeで石火(Sekka)の動画を見る

Page 14: IM飲み会2010 Sekka開発秘話

おまけ SKK vs 最先端IME 論争SekkaはG社の逆張りでいく。G社と同じ方向で戦っても負けは見えているので...

SKK陣営の意見●人間を超える人工知能マダー?待ってられないから、オレこれ使っとくわ。

●小脳がSKKに最適化されているのでこれでいい。

最先端IME陣営の意見●SKKは自分にはムリ。●SKK使うなんて原始的だ。●工学的な態度からすると、SKKを使って日本語を入力するのは理に適っている。(小町さん)

●自然言語処理の研究者が SKKを使うのは欺瞞だと思う。(小町さん)

Page 15: IM飲み会2010 Sekka開発秘話

おまけ 日本語入力のしやすさとは?デバイスで有効なアプローチは変わるだろう

●携帯電話のテンキー●PC●iPad

編集対象によって変わるだろう●Tweet●論文●テクニカルライティング●ソースコードのコメント●しゃべり言葉(プライベートのメール)●ビジネスメール

Sekkaは何向き?●ソースコードのコメント●英文と和文混在ドキュメント●しゃべり言葉(大阪弁とかでも問題ない)

Page 16: IM飲み会2010 Sekka開発秘話

おしまいです。ありがとうございました。