Let's go JunKey

☆ここは、増井俊之さんの作られた Japanese Uni-handed Keyboard を実用的に楽しもう、というページです。☆

--------------------

JunKey とは

増井俊之さんの開発された、左手5本の指だけを使って日本語を入力するソフトウェアです。

増井さんが UNIX MAGAZINE 誌にもっておられる「インターフェイスの街角」という連載の 1999年2月号「ウェアラブル・コンピュータのテキスト入力法」という回で、JunKey が紹介されています。

バックナンバーが手に入らなくなるのは時間の問題と思われますし、増井さんのページにも詳しい解説は載っていないようですので、記事から少しだけ引用させてもらいます。

 JunKey では、左手の5本の指だけを使って日本語を入力します。Twiddler や BAT などのコードキーボードではなく、普通のキーボードの A、S、D、F の各キーとスペースキー(左手のホームポジション位置のキー)だけを使います。

 ローマ字の入力では、Q や L などを除く 20 個あまりのキーが使われますが、JunKey ではこれらを完全には区別しません。人差指を使うキー(M、U、Y など)を "F" に、中指を使うキー(E、D、I など)を "D" に、薬指を使うキー(S、W、O など)を "S" に、小指を使うキー(A、Z、P など)を "A" に割り当てます。

A、S、D、F の各キーによる読み指定とスペースキーによる次候補選択に加え、C キー(パターンのクリア)、X キー(前候補)、V キー(全マッチ指定)、Z キー(改行)が使えます。

普通にローマ字で打つ代わりに、「この字はどの指で打つんだっけ?」と考えて、その指のホームポジションのキーを押すわけです。最初はちょっと引っかかりますが、ローマ字をそらで打てる人なら、意外とすぐに慣れると思います。

U も J も M も R も F も V も同じキーで入力するのですから、変換の際に出てくる候補の数が膨大なものになってきやしないか、という懸念があるかもしれません。

JunKey ではその点、辞書を工夫することでカバーしています。単語‐単語 のつながりを頻度順に並べたフレーズ辞書と、日本語のテキストに現れる単語の頻度順に並べた単語辞書を併用しているのです。

これによって、タイプ数の割に出てくる候補の数はかなり絞られており、しかも日本語として適切なものになっています。(ここらへんの発想は POBox とまったく同一のものです)

このようなマッピングでは、「安い」(YASUI)や「橋」(HASHI)も同じ "F A S F D" という入力になり、曖昧性が生じます。しかし、現実には単語の使用頻度に偏りがあるので、複数の候補を頻度順に表示するようにすれば、少ない入力から検索した場合も目的の単語が候補に含まれる可能性はかなり高くなります。

更に魅力的なのは、辞書を自作できるという点です。自分の言葉遣いや漢字/送り仮名などのクセをそのまま JunKey にたたき込むことができるのです。

chasen(形態素解析プログラム「茶筌」)といくつかのスクリプトを使って自分の文章(テキストファイル)を加工し、JunKey で使用する辞書に仕上げることができます。


手方法

記事の最後にソースコードの全文が掲載されています。(それほどコンパクトなプログラムなんです)また、増井さんの Web ページからもダウンロードできます。

※Cakeのところでは FreeBSD と Windows95 (Cygwin32環境)で動くことを確認しています。


Cakeによる造バージョン

JunKey のコンセプトの秀逸さとシンプルさに感動したCakeは、すぐに飛びつきました。

PocketBSD を使って電車の中などで手軽にテキストを入力する手段を模索していた頃でもあり、実用ツールとして評価してみました。

左手よりも右手のほうが入力がスムーズにできる。
Cakeが右効きだったということの他に、ローマ字で使うキーが、割と右手のほうに集まっている「ような気が」します。
ユーザーインターフェイスが不親切。
入力/変換の途中でユーザーへフィードバックする情報が少ない。
普段使い慣れているローマ字入力/かな漢字変換の UI に比べて、操作の状態遷移が直観的でない。
入力結果を保存する機能がない。
junkey.c は入力方法のデモプログラムという位置付けなのでしょう。
これは処理を追加すればいいだけの話です。

上記のことを踏まえて改造中のコードを置いておきます。出力するファイル名が固定であるとか、まだまだ荒削りの未完成品ですが、ご意見ご感想などいただければ幸いです。


ソースコードとキーアサイン

junkey.c.gz


 key          function

------       ----------

'jkl;'       文字入力

'n'          取消/パタンクリア

'm'          確定/改行

'h'          前候補/後退

'b'          完全一致検索モード

' '          次候補

':'          コマンドモード(現在のところコマンドは 'q'=終了 のみ)

辞書について

現時点では辞書は、増井さんのオリジナルのものを加工して使うことになります。具体的には、辞書の「読み」を、a,s,d,f から ;,l,k,j に置き換えます。下記のようなスクリプトで可能です。


#!/bin/sh

sed '

s/a/;/g

s/s/l/g

s/d/k/g

s/f/j/g' $*

今のところ、これ以上のドキュメントはありません。詳しいことはソースコードを参照して下さい。m(_@_)m

--------------------
Cake (SHIMADA Keiki)
Last modified: Wed Feb 24 05:36:25 JST 1999