カテゴリ「高速入力」の記事 (7)

ステノワードの資料

 ひょんなことから以前ダウンロードしたステノワード(スピードワープロ)の資料が出てきた。そこで、DvorakJ用の設定ファイルを復元して、およそ三年ぶりに試してみている。

 文字の入力に使うキーのレイアウトは、以下のようにシンプルなものだ。

 単独打鍵時に入力される文字は以下の通り。(未定義または不明の部分は「(*)」とした)

(*) (*)

 これを、以下のように略記する。

■□□□□|□□ □□|□□□□□:「
□■□□□|□□ □□|□□□□□:(
□□■□□|□□ □□|□□□□□:ー
□□□■□|□□ □□|□□□□□:)
□□□□■|□□ □□|□□□□□:」
□□□□□|■□ □□|□□□□□:、
□□□□□|□■ □□|□□□□□:(*)
□□□□□|□□ ■□|□□□□□:(*)
□□□□□|□□ □■|□□□□□:。
□□□□□|□□ □□|■□□□□:う
□□□□□|□□ □□|□■□□□:あ
□□□□□|□□ □□|□□■□□:お
□□□□□|□□ □□|□□□■□:い
□□□□□|□□ □□|□□□□■:え

 左右各1個のキーを組み合わせるとこうなる。

■□□□□|□□ ■□|□□□□□:(*)
■□□□□|□□ □■|□□□□□:どうゆう
■□□□□|□□ □□|■□□□□:ぷ
■□□□□|□□ □□|□■□□□:ぱ
■□□□□|□□ □□|□□■□□:ぽ
■□□□□|□□ □□|□□□■□:ぴ
■□□□□|□□ □□|□□□□■:ぺ
□■□□□|□□ ■□|□□□□□:(*)
□■□□□|□□ □■|□□□□□:とゆう
□■□□□|□□ □□|■□□□□:つ
□■□□□|□□ □□|□■□□□:た
□■□□□|□□ □□|□□■□□:と
□■□□□|□□ □□|□□□■□:ち
□■□□□|□□ □□|□□□□■:て
□□■□□|□□ ■□|□□□□□:(*)
□□■□□|□□ □■|□□□□□:ああゆう
□□■□□|□□ □□|■□□□□:ふ
□□■□□|□□ □□|□■□□□:は
□□■□□|□□ □□|□□■□□:ほ
□□■□□|□□ □□|□□□■□:ひ
□□■□□|□□ □□|□□□□■:へ
□□□■□|□□ ■□|□□□□□:(*)
□□□■□|□□ □■|□□□□□:こうゆう
□□□■□|□□ □□|■□□□□:く
□□□■□|□□ □□|□■□□□:か
□□□■□|□□ □□|□□■□□:こ
□□□■□|□□ □□|□□□■□:き
□□□■□|□□ □□|□□□□■:け
□□□□■|□□ ■□|□□□□□:(*)
□□□□■|□□ □■|□□□□□:そうゆう
□□□□■|□□ □□|■□□□□:す
□□□□■|□□ □□|□■□□□:さ
□□□□■|□□ □□|□□■□□:そ
□□□□■|□□ □□|□□□■□:し
□□□□■|□□ □□|□□□□■:せ
□□□□□|■□ ■□|□□□□□:{変換}
□□□□□|■□ □■|□□□□□:{空白}
□□□□□|■□ □□|■□□□□:ゅ
□□□□□|■□ □□|□■□□□:ゃ
□□□□□|■□ □□|□□■□□:ょ
□□□□□|■□ □□|□□□■□:まいにち
□□□□□|■□ □□|□□□□■:しよう
□□□□□|□■ ■□|□□□□□:(*)
□□□□□|□■ □■|□□□□□:(*)
□□□□□|□■ □□|■□□□□:(*)
□□□□□|□■ □□|□■□□□:(*)
□□□□□|□■ □□|□□■□□:(*)
□□□□□|□■ □□|□□□■□:(*)
□□□□□|□■ □□|□□□□■:(*)

 ローマ字的な仮名のほかに速記的な仮名文字列が割り当ててあることが分かる。ただ、この調子でやっていくと(未定義・不明分を除いても)3000行を越えてしまうのでこのへんでやめることにする。(詳しくは前述の資料に入っている“スピードワープロ_配列テンプレート.xls”を御覧ください)

14個のキーの組み合わせの総数は?

 単純に考えると、214-1=16383(通り)になってしまうが、実際は2個のキーを同じ指で打つことはない。そこで指の動作に着目して計算すると、1個のキーしか担当しない小指・薬指・中指は2通り、2個のキーを担当する人差し指と親指は3通りの動作があるので、(2×2×2×3×3)×(2×2×2×3×3)-1=72×72-1=5183(通り)となる。

 これをそのまま72列×72行の巨大な表にすれば全パターンを一望することができるわけだが、漢直の打鍵表の4倍近い面積になるうえにキーの組み合わせがインデックスになるので、運指をイメージすることは結構難しい。キーの組み合わせで小ブロックに分けるなどの工夫が必要だろう。

DvorakJの設定ファイルを整理する

 DvorakJの設定ファイルも扱いにくい。Excelで更新できるのはいいけれど、なにしろ設定ファイルの行数が多くて再読み込みに時間がかかってしまう。よく見ると、同じキーの組み合わせの面がいくつもあって、キー位置の異なる入力文字列が1件ずつ設定されていたりもする。

 どうも、この書式で同時打鍵パターンを網羅的に設定するのには無理があるように思える。一旦、左手のパターンと右手のパターンに分けて符号化して出力し、最終的な入力文字列はローマ字テーブルで定義することにしてはどうだろうか。

 当然、キーの打ち方も少し変えなくてはならない。つまり、全部一度に打鍵するのではなく、左と右の二度に分けて打鍵するようにするわけだ。72個の仮想的なアルファベットでローマ字入力するのだと考えればイメージしやすいだろうか。こんな打ち方は、ステノワードのヘビーユーザーから見れば邪道だろう。しかし、試用中のユーザーにとってはこのほうが分かりやすいし覚えやすい。

 “ストローク数”は2倍になるけれども、その“ストローク”の中身はステノワードの片手分だから打つキーの総数自体は変化しない。片手だけで打つパターンの場合には、何か適当な未使用のキー(例えば上段の中指など)を前置または後置することにする。その分だけ打鍵コストは増えるけれども、その程度で極端に入力速度が落ちるほどの影響はないだろう。

 このように普通のキーボードで左右交互打鍵に分解した打ち方であっても、こつこつ真面目に練習していけば、かなりの入力速度に到達できるだろうと思う。本物のキーボードを使っている専門家には及ばないにしても、日常的な場面でのリアルタイム入力に使える可能性はある。

 余談だが、左右交互打鍵に分解した結果、[space]を左手側の{N}または右手側の{M}として区別できるようになった。つまり、公開された資料には含まれていない{M}を含む打鍵パターンにも対応できるということだ。

 なお、DvorakJの設定ファイルとローマ字テーブルはまだできていない。(完成までにはかなり時間がかかりそうなので気長にお待ち下さい)

親指シフトで2ストローク入力

 とはいうものの、やはり複数のキーを同時に打つのは難しい。不慣れなせいもあるだろうが、キーの数が増えるほど指の準備に時間がかかってしまうような感じだ。このようなときに「もっと練習しよう」と考えるか、それとも「やり方を変えてみよう」と考えるかによって、その人の……。まあ、そんなことはどちらでもいいので、後者の考え方をもう少し進めてみよう。

 普通のキーボードを使っているのだから、何もわざわざ中段だけに制限する必要はないのではないか。上段や下段のキーを有効に使った方がもっと打ちやすくなりそうだ。使えるキーがあるのならどんどん使えばいいのだ。親指シフトなら30キーで90パターンが使えることになる。2ストローク入力にすれば8100パターンだ。これなら、ステノワードの配列は充分入るし、使うキーの数は2~4個だ。こっちの方がシンプルで、打鍵表も分かりやすくなるのではなかろうか。

 そんなわけで、ステノワードを親指シフトにリマップしてみようと思いついてしまった。もちろん、単にステノワードの配列を親指シフトの2ストロークに置き換えても使い物にはならないだろう。それでも、配列を最適化すれば実用的な入力速度に到達できる可能性がないとはいえない。やってみる価値はあるだろうと思う。

 なお、上記のDvorakJの設定に合わせたローマ字テーブルを元にして作ることになるので、これもまだできていない。(完成までにはさらに時間がかかりそうなので気長にお待ち下さい)


この記事を書くにあたって、以下のサイトを参考にさせていただきました。

2015年8月23日

 今日アップしたブログに合わせて、このページのサブタイトルを〔親指漢直(NICOLA)篇〕に変更する。練習を始めて三週間になるが、実はあまり速くなっていない。それでも、たまにG-Codeで入力すると仮名の2ストロークが重いと感じることはある。

 来月は〔親指漢直(JIS仮名)篇〕だ。ルールが単純明快なので、多分こっちのほうが僕には向いているような気がする。

2015年8月18日

 ローマ字入力の場合、仮名漢直のように“漢直読み”を混ぜて変換することはできないが、ローマ字テーブルに漢直用のエントリーを加えることならできる。当然、既存のローマ字と衝突しないように漢直の第1打を親指シフトにする必要がある。

 左右の親指シフトキーの割り当てはDvorakJでやるので具体的なキーを気にする必要はない。文字キーは英字配列に依存するので、少なくともQwerty配列用とDvorak配列用の2種類の漢直用のテーブルを作っておかねばならない。既存のローマ字テーブルをエクスポートして、それに漢直用のテーブルを追加したものをインポートするという手順になる。

 導入方法はかなり面倒になるが、Google日本語入力のローマ字テーブルで設定可能なものであれば何でもよい。例えば、AZIK・SKY配列・花配列系・月配列系などと組み合わせることも可能なはずだ。

〔単語登録〕

2015年8月16日

 打ちにくいと思うたびに“漢直読み”で登録してきた単語が200語を越えた。この程度では中途半端なので、もっと語数を増やしてから公開した方がいいような気もするが、そうすると、辞書を見て「こんなに覚えなくてはならないのか」と思ってしまう人がいるかもしれない。単語登録は自分でやってもらった方がいいのではないだろうか。

〔単語登録〕, 半端

2015年8月12日

 「おやゆび」がどうも打ちづらかったので漢直読みを辞書に登録。慣れていないせいかもしれないが、シフト打鍵が続くときは漢直の方が楽な気がする。これまで通り「おやゆび」でも変換できるので、楽だと思う方で打てばよい。

〔単語登録〕親指

2015年8月8日

 アルファベットの全角大文字を入力しようとして[SHIFT]で打つと仮名になってしまう現象が発生。ローマ字テーブルに次のようなダミー行を入れて解決したけれども、全角小文字は半角英数モードで入力した後に全角変換するしかなさそうだ。

A	A

――と思ったら、普通に打って[F9]を叩いたほうが簡単だった。

〔単語登録〕現象

2015年8月6日

 だいぶ親指シフトには慣れてきたが、変換ミスを見過ごして確定したときに、間違っている文字だけ打ち直したくてイライラする。そこで、親指シフトには使っていない[変換]キーを漢直用にしてみた。DvorakJの設定で第三の同時打鍵には'õ'を先頭に付け、ローマ字テーブルにG-Codeの定義を追加した。Qwerty配列用のテーブルの行頭に'õ'を入れるだけの簡単な作業。

 どうせなら、3ストロークの連打を短縮してしまおうと思いついて、中段の[tab]を第三の同時打鍵('õ')、上段の[変換]を第四の同時打鍵('ö')にして、[変換]との同時打鍵を3ストローク短縮入力に使うようにした。いちいち同時打鍵するのは面倒だが、一字だけ打つときにはちょうどいい感じだ。

〔単語登録〕行頭

2015年8月2日

 “「親指漢直」始めました。”に書いたように、最近また親指シフトの練習をしている。

 Perlで機械的に作った辞書には余分な漢字も入っているので、つい漢直で打ってしまう。今はその方が楽だし速いのだが、そんなことをやっていては練習にならない。そこで、漢直用の辞書を全部削除した。本当に必要な単語だけをこつこつ登録していこうと思う。

 Trulyのキーボードを使っているので、左親指は[無変換]、右親指は[space]としているが、通常のキーボードでは右親指は[変換]の方が打ちやすいだろう。そうすると真ん中の[space]が別の目的に使えることになる。ここに何かを入れるとすれば、やはり「Picasso」しかない。

 ただし、先行入力によって入力内容を変えることはできないので、単純に仮名文字列の短縮入力のような形になるだろう。Trulyの中央にある[変換]と[tab]を使って、そのうち試してみようと思う。

〔登録単語〕練習, , , 通常, 入力, 単純, 短縮,


[ 日記の目次 | 前の回 | 次の回 | G-Code (目次) | m(as)m's home position ]

(2014年)5月17日

 先日から使っているSKK日本語入力FEPで、スペースで始まるストロークに平仮名の文字列を割り当ててみたら、なんと入力できた。

#
#	Piccaso サンプル (Qwerty/Dvorak共通)
#
#	空白+nストローク→仮名文字列
#
#	 1  2  3  4  5  6  7  8  9  0
#	$A $B $C $D $E $F $G $H $I $J
#	$K $L $M $N $O $P $Q $R $S $T
#	$a $b $c $d $e $f $g $h $i $j
#
	\ $H*	します
	\ $H$S	しました
	\ $H$P	しません
	\ $P*	しない
	\ $P$S	しなかった
	\ $S	した

 これは、何年も前から構想を練っている送り仮名などを高速で入力する「Picasso」というやつだ。当初はスペースを押している間の次打鍵を(漢字変換対外の)仮名文字列の入力に使おうという発想だったのだが、試してみたら予想以上に打ちにくかった。それならいっそ、スペース打鍵で始まり確定操作で終わる逐次打鍵にすればいいのではないかと思ってJavaのソースをいじってみたりしているうちに面倒になってり出したのが、たぶん一年半ほど前。

 そんなわけで、SKK日本語入力FEP G-code版定の末尾にPicassoのサンプルを追加して試している。ただ、この調子でキーの数を増やしていくと、すごい件数になってしまうのが目に見えているので、なんとかして楽に割り当てる方法はないかと頭を悩ませている今日この頃だ。(550+4=554)

11月11日

 最近、スピードワープロの動画を見る機会があり、いろいろ調べているうちにDvorakJでエミュレーションできることを知って、さっそく試してみた。打鍵表を見ながらでも、文字列が一気に入力できるのが気持ちいい。

 それで数年前に作りかけていたPicassoというのを思い出して、いパソコンからコピー。Meで作ったIMがそのままXpでも動作している。Javaで作っておいてよかった。(549+1=550)


[ 日記の目次 | 前の回 | 次の回 | G-Code (目次) | m(as)m's home position ]

(2007-10-14)

どんなキー操作にするか

 “速記入力”の操作方法が煩雑では本末転倒になってしまいます。例えば、

  • コントロール+何とかキーで“速記入力”モードに切り替わる
  • シフト+何とかキーを押している間は“速記入力”状態になる
などという面倒なやり方は避けたいところです。そこで、まだ使われていない簡単なキー操作を捜してみたところ、変換操作に使うキー[*1]にはまだ機能を追加する余地があることに気付きました。

 ここで、〔変換〕を押してから離すまでの間のキー操作を、少し詳しく見てみます。

〔変換〕を押して離す

 この「」と「」の部分をあえて詳しく書くと、

〔変換〕を押して、特に何もせず、離すすると、変換結果が表示される。[*2]

となります。これを、

〔変換〕を押して、文字キーを打って、離す。すると、変換結果に何かが追加される。

に変えてやれば、新たな機能を追加することができます。

 つまり、〔変換〕を押している間に(それを一種のシフト状態とみなして)文字キーを打つと、それだけで“速記入力”ができることになります。もともと変換操作のために押したキーなので、シフト操作のための新たなコストは発生しません。

 しかも、〔変換〕を押してから離すまでという条件があるので、通常のシフト操作中の逐次打鍵とは違って、

  • 1打鍵・2打鍵(・3打鍵…)のパターンを使い分けることができる
  • 変換結果によって別の文字列を割り当てることができる
というメリットも出てきます。これならば、充分、実用になるでしょう。

割り当て方の問題

 ここまでは、主に入力の仕組みの話でした。それだけなら今までに何度か[*3]考えてみました。

 問題は、変換結果に追加する文字列[*4]をどこで区切ってどのキーに割り当てるか、ということです。ここから先は、考えるだけでなく実際に試してみなくては分かりません。

 入力の仕組みをある程度作ったところで、とりあえず頻度の高そうな送り仮名を適当なキーに割り当てました[*5]。いろんな文章を入力してみて、どんなパターンが快適かを確かめながら、少しずつ変更したり追加したりしていきます。

 主な仮り仮名を追加していくうちに気付いたことが、いくつかあります。

    (1) 送り仮名をひとつ追加すると、その組み合わせパターンのために多くの割り当てを追加しなくてはならなくなる
    (2) 同じ送り仮名が状況によって別の位置に表示されると、妙に気になる
    (3) 同じ送り仮名(を含むパターン全部)を、あるキーから別のキーに移動しても、違和感はなく、すぐに慣れる

 (1)は、予想していたことですが、キーの組み合わせが爆発的に増えてしまって、割り当て作業が事実上不可能になりました。割り当て作業を中断して、同じパターンをまとめて定義できるように入力ソフトの方を改良しました。

 (2)は、はっきりとは覚えていないキーでも割り当て方に矛盾があれば気付くということです。なんとなく試し打ちをするだけでチェックできるのは有り難いことです。

 (3)は、頻度の高い送り仮名と交換したり、別のパターンに合わせたりするために移動した場合です。新しいキーやパターンを何度か打って覚えてしまえば、とりあえず古い記憶は上書きされるようです(記憶が定着した後で変更するのは避けた方がいいかもしれません)。

 こんな感じで、手さぐりしながら割り当てを続けていきます。時間のかかる作業ですが、機械的に一気に処理するより試行錯誤の過程を楽んだ方がいいような気がしています。

覚えやすい仕組み

 そんなに多くのパターンをどうやって覚えるのかと心配する必要はありません。送り仮名の打ち方をひとつ覚えるたびに応用範囲が爆発的に広がるだけのことです。

 打ち方を調べるために何か特別な操作をする必要はありません。〔変換〕を押したときに、仮想鍵盤の表示を見るだけです。

  • 〔変換〕を押している間は、仮想鍵盤に送り仮名の候補が表示される

  • 入力行:
    入力  
    仮想鍵盤:
     ‐   ‐   ‐   ‐ 
     ‐   ‐   です 
     ‐   ‐   ‐ 
     
     ‐ 
     まで 
     から 
     ‐ 
      
     ‐ 
     いたす 
     
     ‐   ‐   ‐   ‐ 
     する   せず   させる 
     して   しない   すれば 
     しよう   した   します   できる 

 仮想鍵盤には、送り仮名の候補が表示されます。その中に入力したい送り仮名があれば(〔変換〕を押したままで)表示された位置のキーを打ち、なければいつも通りに〔変換〕を離すだけです。

  • 続けて入力できる送り仮名があれば、それも仮想鍵盤に表示される

  • 入力行:
    入力して  
    仮想鍵盤:
     ‐   ‐   ‐   ‐ 
     ‐   しまう   くる 
     ‐   みる   おく 
     ‐   ‐   ‐   ‐ 
     
     ‐ 
     ‐ 
     ‐ 
     ‐ 
      
     ‐ 
     ‐ 
     ‐ 
     ‐ 
     
     ‐   ‐   ‐   ‐ 
     いる   ‐   ‐ 
     ある   いて   いない   ‐ 
     ください   いた   います   ‐ 

 実際にやってみて分かったことですが、1打鍵するごとに送り仮名が入力されていくのは、予想以上に快適です。一度これを知ってしまうと、1字ずつ入力するのが億劫になります。ローマ字入力で「ja」と打てば「じゃ」と入力されることを知っていながら、わざわざ「zya」などと打つ気になれないのと同じような感じです。

 覚えようと努力しなくても、楽なやり方を選んでいくだけで自然に覚えてしまいます。

打ち方が予想できる

 いくつかの送り仮名の打ち方を覚えると、まだ一度も入力したことのない送り仮名の打ち方が予想できるようになります。

 例えば「入力」の送り仮名のうち、

    +する
    +した
    +します
これだけ覚えた段階で、「+しました」の打ち方が予想できるのです。

 さらに「+できる」を覚えると「+できた」「+できます」「+できました」も予想通りに入力できます[*6]。この調子で送り仮名を一つ覚えるたびに応用範囲が広がっていくわけです。

 連想式でないことは確かですが、無想式ともかなり違った感じになりました。それでは一体何式なのかというと、ピカソだけに“類推式”[*7]なのです。


[*1] 【変換操作に使うキー】
仮名から漢字に変換するときは、普通、スペースか変換キーを押します。以下、このキーを〔変換〕と書くことにします。

[*2] 【すると、変換結果が表示される。】
厳密には、

〔変換〕を押すと、変換結果が表示される。その後、特に何もせず〔変換〕を離す。

と書くべきですが、分かりやすく説明するために順序を入れ替えました。

[*3] 【今までに何度か】
以下のページにあれこれと書きましたが、今とはかなり内容が違っているので、あくまでも参考程度にしてください。
「G-Quick」(2001)、「G-Code」で速記を(2000)、「漢ナビ2」(2000)

[*4] 【変換結果に追加する文字列】
たいていは数文字程度の活用語尾や助動詞や助詞などです。以下、これを「送り仮名」と呼ぶことにします(文法的には適切ではないかもしれませんが、ほかに簡潔な用語を思い付かなかったので)。

[*5] 【適当なキーに割り当てました】
適当とはいっても、次のようなルールに沿って割り当てています。
  • 同じ送り仮名は必ず同じキーで入力できるようにする
  • 使用頻度や運指を考慮して調整する
  • 「S→する」「T→した」「D→です」「M→ます」などのような連想を使わない

[*6] 【予想通りに入力できます】
もちろん、そのためには予想を裏切らない割り当て方をしておく必要があります。今のところ基本的な送り仮名は全て予想通りの入力が可能です。

[*7] 【ピカソだけに“類推式”】
分かる人には分かると思いますが、実際はその逆で、“類推”→“ピカソ”という言葉遊びです。ついでに、辞書にちょとした企みを仕掛ています。

[ Picasso (目次) | 錬金術師の実験室 | m(as)m's home position ]

(2001-09-10)


G-Codeを加速する簡単な方法

 G-Codeを使って漢字を直接入力しても、話す速さにはとても追いつけない。「G-Codeで速記を」や「漢ナビ2」に書いた方法を試すには時間がかかる。そこで、もっと手軽に試せる簡単な方法について考えてみた。

交ぜ書き変換の応用

 「交ぜ書き変換」は、本来は漢直の補助入力手段として使われている。
 この仕組みを応用すると、「漢字+1ストローク+変換」で送り仮名(など)を補完して一文節をまとめて入力できるようになる。

(図1)「私」+1ストローク(左手側)
+―――――+―――――+―――――+―――――+ +―――――+
|     |     |     |     | |     |
+―――――+―――――+―――――+―――――+ +―――――+
|たち   |たちは  |どもも  |としては | |から   |
+―――――+―――――+―――――+―――――+ +―――――+
|からは  |どもと  |どもは  |ども   | |どもの  |
+―――――+―――――+―――――+―――――+ +―――――+
|としても |どもに  |のほう  |には   | |からも  |
+―――――+―――――+―――――+―――――+ +―――――+

(図2)「思」+1ストローク(右手側)
+―――――+ +―――――+―――――+―――――+―――――+
|     | |     |     |     |     |
+―――――+ +―――――+―――――+―――――+―――――+
|いまして | |いますから|って   |いましたが|うわけで |
+―――――+ +―――――+―――――+―――――+―――――+
|うのです | |うので  |います  |いますが |いました |
+―――――+ +―――――+―――――+―――――+―――――+
|われるので| |うが   |われます |わない  |えない  |
+―――――+ +―――――+―――――+―――――+―――――+

[ (裏話) | (目次) | 錬金術師の実験室 | m(as)m's home position ]

(2000-06-12)

「漢ナビ2」について

 「漢ナビ2」は、「漢ナビ」に、漢直と“速記入力”の組み合わせという新しい入力方法を導入した大幅な改訂版です。漢直と速記を組み合わせようと考えた経緯については、「G-Code」で速記をのページを御一読ください。

 今はまだ構想を練っている段階ですが、随時、このページで途中経過を公表していきます。


“熟語補完”の拡張で“速記入力”

 「漢ナビ」には“熟語補完”という機能がある。これは、漢字の最後のキーをシフトしながら打つと、その漢字の後に続く漢字のグループを仮想鍵盤に表示するというものだ。仮想鍵盤に表示された漢字は1打鍵で入力できる。このときもシフト打鍵すると、さらに次の漢字グループが表示される。

 補完できる漢字はあくまでも1字ずつだ。熟語補完を使って「漢字」を入力しても、次に「直接入力」が1打鍵で入力できるというようなことはない。これは漢字の第1打鍵を覚えるための補助的な機能だから仕方ないけれども、ちょっと不便な感じもする。

 スペースとの同時打鍵を第1打とする2ストロークを“速記入力”に利用しようと考えていたときに、このことを思い出した。

  1. 2ストロークの“速記入力”を覚える場合も、打鍵ガイドを表示した方が便利だろう
  2. 打鍵ガイドの表示タイミングは、スペースを押し下げた時が適当だろう
  3. スペースを押したまま候補を選択した場合は、その後に続く仮名文字列のグループを表示してはどうか
  4. それならば、単漢字や熟語を打った後にスペースを押し下げた場合にも、それに続く仮名文字列の候補を表示するのが自然だ
  5. 候補が多いときは、スペースを再度打って次の面に進めばよい
  6. 打鍵ガイドを見なくても入力できるように、同じ文字列は同じキーに割り当てるべきだ
  7. 一定の文字列が常に同じ打鍵で確定するのだったら、わざわざ2ストロークにする必要はない

 こうして、“熟語補完”の拡張(超多段シフト的な操作方法)で“速記入力”ができるという考えに至った。

辞書の内容

 以下のような6種類の変換を行うための辞書が必要だ。

  1. 漢字文字列→漢字文字列群
  2. 仮名文字列→漢字文字列群
  3. 漢字文字列→仮名文字列群
  4. 仮名文字列→仮名文字列群
  5. 空文字列→仮名文字列群
  6. 仮名文字列→打鍵位置

 1と2は接頭語から変換する場合や漢字文字列を一気に補完する場合、5は接続詞や副詞などを単独で入力する場合に使う。

 1~5は、任意の文字列から任意の文字列(群)に変換する辞書に統合できる。この辞書の中に打鍵位置も入れておけば、6の変換を個別に行う必要がなくなって変換時間を短縮できる。

ドライバの動作

 ドライバは、以下のような動作を行う。

  1. スペースが押されたら、IMEの未確定文字列を検索用のキーにコピーする
  2. キーを使って検索し、候補群(文字列群と打鍵位置)を受け取る
  3. 仮想鍵盤に候補群を表示する
  4. 文字キーが打鍵されたら、該当する文字列を確定入力する
    (スペースが押された状態なら、確定した文字列をキーにコピーして2へ)
  5. スペースが押されたら、次の候補群に進める(3へ)

 本当は「取り消し」や「前候補群」などの処理も必要だが、細かい説明は省略した。また、候補群の数は仮想鍵盤8面程度、文字列の長さは5文字程度までに制限しておいた方がいいだろう。

(2000-06-12)


付記

 Windows XP が出たころからWindows用のIMEがどんどん減っていき、95~Meとは全く別のXPに「漢ナビ」を移植するのも難しそうだったので、この数年間はJava用のInput Methodをコツコツと作っています。

 もちろん、最初から漢直を前提とした仮名漢字変換方式で、これまで考えてきたような“速記入力”にも対応しています。Input Method本体と仮名漢字変換辞書と“速記入力”辞書を並行して作っているわけですが、まあだいたい「こんなものを作ろうとしています」という感じを伝えるためのサンプル版ができたかな、といった段階です。

 このJava用のInput Methodと“速記入力方式”は、近いうちに公開したいと思っております。

(2007-10-07)


[ 「漢ナビ」 | 漢字直接入力 | m(as)m's home position ]

(2000-06-12)


G-Codeで速記するには

 G-Code(に限らず、2ストローク系漢直)を使うと、漢字の打鍵数が少なくなった分だけ入力速度が上がる。しかし、現状のままでは速記できるほどではない。

 速記するには、漢字仮名交じり文を分速300~350字で入力できる必要がある。これは、全ての文字を2ストロークで入力できると仮定しても、毎分600~700打鍵という超人的な打鍵速度に相当する。超人でない人が2ストローク系の漢直で速記しようとすれば、打鍵数を減らすしかない。

仮名入力が漢直共通の弱点

 漢字が2打鍵で入力できるのはいいけれど、仮名の入力にも2打鍵以上必要になってしまうことが、2ストローク系漢直に共通する弱点だ。G-Codeの仮名配列は他の漢直ほどには最適化していないので、特にこの弱点が目立ってしまう。これは何とかして改善したいところだ。

 また、漢直と仮名漢を併用していると、文節の先頭に変な仮名があってうまく変換できないことがある。例えば「目から鱗が」の「目」を直接入力した後に「からうろこが」をまとめて変換すると「目空鱗が」となってしまうのだ。これを防ぐには「から」を打った後に確定キーを叩けばいいのだが、ついうっかり忘れてしまう。

 もしも「から」のような仮名文字列を2ストロークで“速記的”に直接確定入力できたら、どんなに快適だろう。つまり、漢字だけではなく、変換対象以外の仮名文字列(送り仮名や付属語など)も直接入力できるようにするわけだ。これは、本来の速記とは少し目的が異なるかもしれないが、試してみる価値はある。

利用可能な打鍵パターン

 以前、親指シフトとG-Codeの組み合わせを試したことがある。仮名の入力を楽にしようと思ったからだ。親指シフトは普通通りに(無変換/変換キーを親指シフトキーとして)打鍵し、漢字はG-Codeで(第1打鍵をスペースと同時打鍵して)直接入力する。確かに仮名の入力は楽になったが、漢字の入力が少し重くなることと、G-Codeで仮名と記号を割り当てた中段・上段の左右交互打鍵が遊んでしまうのが難点だった。

 この関係を逆転させて、G-Codeは元のままで、スペースとの同時打鍵を“速記的”な入力に流用してはどうだろうか。スペースとの同時打ちを第1打鍵として、2打鍵目で仮名文字列を直接入力するのだ。この方法ならば、本来のG-Codeを一切変更することなく、新しい2ストロークの打鍵パターンを追加することが可能になる。

割り当てる文字列の選び方

 打鍵パターンが確保できたので、その打鍵パターンで入力する文字列を考える。実際に効果のある割り当て方をするには、使用頻度と入力コストのほかに、話し言葉と聞き打ちに特有の事情も考慮しなくてはならない。そもそも頻度を調べようとしても、どこで区切るのかを決めておかなくては、数えることさえできない。

 例えば「しなければならないだろうというようなことも」というような極端に長い文字列を2ストローク化しても、実際には末尾の「ことも」を聞くまで打つことができず、待期時間が増えるだけだ。むしろ単純に「しなければ」「ならない」「だろう」「という」「ような」「ことも」のように、聞いた端から反射的に打っていった方が入力速度は上がるだろう。人間の作業記憶の容量が「7プラスマイナス2」と言われていることからも、適当な長さに区切ったものを数回に分けて打った方が入力者の負担は少なくなると考えられる。

 たまたま手元に3,887,660文字分の国会の議事録のテキストデータ(漢字含有率は32.9%)があったので、2文字以上の仮名文字列がどの程度入っているかを調べてみた。その結果、90,711種類(テキスト全体の54.0%)の仮名文字列が抽出できた。

 単純に頻度順に並べるだけでは実用的ではない(表1)ので、頻度と文字列の長さの積を基準にして(表2)、さらに別の文字列に含まれる場合を加算した(表3)。ついでに、漢字と仮名の組み合せを抽出したところ、246,078種類(80.0%)だった(表4)。

(表1)(表2)(表3)(表4)
頻度文字列 頻度*長さ 文字列 頻度*長さ 文字列 頻度*長さ文字列
8136その 16272その 1329488その 13192思います
6578この 13156この 1309314して 7830非常に
5201する 13143これは 926888つて 7472思うのであります
4764から 11439います 733534には 5467考えております
4761して 10836につきましては 495912これは 5244私は
4381これは 10585であります 477750という 4940思いますが
3813います 10402する 467584この 4389或いは
3521つて 9528から 452739であり 3948次第であります
2708として 9522して 426082する 3459対して
2526には 9196において 401980において 3327対する
2299において 8922でございます 359284について 3156関する
2117であります 8136それから 329628まして 3116場合には
2034それから 8124として 328431として 3032次第でございます
1912について 7648について 300778これ 2975思つております
1882そういう 7528そういう 299672から 2925思うのです
1873いは 7259におきましては 253464ます 2826先ほど
1660こういう 7042つて 219004そういう 2628思うのでありますが
1598という 6657うのであります 218750では 2582申し
1548につきましては 6640こういう 200103ついて 2472場合に
1487でございます 5788あるいは 191346やはり 2400思うのですが

本当に話す速度で入力できるのか

 大雑把な見積りだが、1文字を平均1打鍵で入力できれば、分速300~350字も無理ではないだろう。

 例えば、「短縮できるように」の「できる」と「ように」を、それぞれ2ストローク化すれば、8文字を8打鍵で入力できる計算になる。これは8文字中6文字(75%)が短縮できる場合だが、漢字が2文字増えて「短縮入力できるように」となると、短縮できるのは10文字中6文字(60%)となるため、「できるように」をまとめて2ストローク化する必要がある。

(表5)
短縮できる
部分の比率
短縮する
文字列の長さ
100.0% 2字
75.0% 3字
66.7% 4字
62.5% 5字
60.0% 6字
58.3% 7字
57.1% 8字
56.3% 9字
55.6%10字
55.0%11字
54.5%12字
54.2%13字
53.8%14字

 表5のように、短縮できる部分が少なくなるほど、長い文字列を2ストローク化しなければならなくなる。前記の議事録のデータのように短縮できる部分が54%しかない場合は、13~14文字を2ストロークで入力しなくてはならない。さらに減って50%以下になると、1文字平均1打鍵で入力するのは不可能になってしまう。

 仮名文字列の長さは、平均すると5.4文字で、10文字以上続くことは滅多にない。本当に話す速さで入力しようとするならば、短縮できる部分を60%以上は確保しなくてはならない。そのためには、漢字を含む文字列(平均5.8文字)も、ある程度は2ストローク化する必要があるだろう。ただし、漢字の使用頻度は仮名に比べて分野や時期によるばらつきが多いと思われるので、注意しなくてはならない。

文字列の割り当て方

 基本的には、「頻度*長さ」が大きいものから、打ちやすい順に割り当てればよい。しかし、共通点のある文字列をグループ化するなどして覚えやすくした方がいいだろう。また、漢字を含む文字列を割り当てる場合には、漢字のストロークとの関係も考えなければならない。

 上・中・下段の30鍵の2ストロークなら900パターン、最上段を加えて40鍵の2ストロークにすれば1,600パターンになる。それでも足りなければ、第2打鍵もシフトして3ストロークに拡張するか、第1打鍵のシフトキーに「変換」や「無変換」も使うことで拡張できる。「だ」「である」「です」のような文体の違いを3個のシフトキーに振り分けるのもいいかもしれない。

 2ストローク方式だけでは足りなかったら、坂元正剛さんの「新ワープロ速記法」のように略語変換を活用する方法もある。語頭や語尾のバリエーションが多いような場合、任意の長さの読みで登録できるのは都合がいい。G-Codeは平仮名と片仮名の打ち分けができるので、片仮名の読みで略語登録すれば、通常の仮名漢字変換に悪影響が出る心配もなくなる。ただし片仮名の入力にも2打鍵を要するため、本来の速さには及ばないだろうけれども。

 今、基本的な900パターンの割り当てに取りかかっているが、これは予想以上に手間のかかる作業だ。最初の「その」にしても、「そのとき」「そのため」「そのような」「そのほか」「そのまま」「そのときに」などとの関連をどうするか、「その結果」のように抽出したデータには含まれていないものをどうするか、こんなことまで考え始めると、なかなか結論が出せない。この調子では、当分完成しそうにない。

(2000-06-10)


漢字だけなら追いつける

 文字列の割り当てもできないうちに練習のことを考えるのも気の早い話だが、練習方法を視野に入れて設計することは悪いことではない。

 ところで、(話し言葉でも書き言葉でも)日本語の文章中の漢字含有率が50%以上になることはほとんどない。普通は30~40%程度だろう。300~350字/分の30~40%といえば90~140字/分だから、通常の2ストローク漢直でも、漢字の部分だけなら話す速度で打てるということだ。

 これは、聴き打ちの練習に応用できる。録音テープを聴きながら、漢字の部分を打てば漢直の練習、仮名の部分を打てば仮名2ストローク速記の練習になる。仮に漢字含有率が40%だとすると、漢字は40%の速度、仮名は60%の速度で打てればよい。これならば目標が高すぎて挫折するおそれも少ないだろう。また、何度も小刻みにテープを「停止→巻き戻し→再生」しなくてもよいし、録音せずに放送などを聴きながら練習することもできる。

打鍵ガイドへの応用

 もっと面白い応用方法も考えられる。打った漢字をキーとして、その漢字の後に続く仮名文字列の候補を仮想鍵盤上に表示するのだ。

 これは、G-Codeの“熟語補完”の延長だと考えれば分かりやすいかもしれない。“熟語補完”と同じように入力ソフトに依存することになるけれども、そういう機能を想定して仮名文字列を割り当てるのも悪くはないと思う。ある漢字を打った後にスペースを押すと、例えば図1や図2のような打鍵ガイドが表示されるようにする(図は説明のために適当に並べたものだが、実際は様々な条件を考えて調整する)。

(図1)「私」を打った後に表示するガイド(左手側)
+―――――+―――――+―――――+―――――+ +―――――+
|     |     |     |     | |     |
+―――――+―――――+―――――+―――――+ +―――――+
|たち   |たちは  |どもも  |としては | |から   |
+―――――+―――――+―――――+―――――+ +―――――+
|からは  |どもと  |どもは  |ども   | |どもの  |
+―――――+―――――+―――――+―――――+ +―――――+
|としても |どもに  |のほう  |には   | |からも  |
+―――――+―――――+―――――+―――――+ +―――――+

(図2)「思」を打った後に表示するガイド(右手側)
+―――――+ +―――――+―――――+―――――+―――――+
|     | |     |     |     |     |
+―――――+ +―――――+―――――+―――――+―――――+
|いまして | |いますから|って   |いましたが|うわけで |
+―――――+ +―――――+―――――+―――――+―――――+
|うのです | |うので  |います  |いますが |いました |
+―――――+ +―――――+―――――+―――――+―――――+
|われるので| |うが   |われます |わない  |えない  |
+―――――+ +―――――+―――――+―――――+―――――+

 ここで(スペースを離して)候補が表示されている位置のキーを打つと、該当する仮名文字列が確定入力されるわけだ。スペースを押したまま打鍵した場合は、その後に続く仮名文字列の候補群が表示されるようにする。

漢直+「風」+「POBox」

 考えているうちに、冨樫雅文さんの「風」と増井俊之さんの「POBox」を合わせたように感じになってきた。この入力方法は、以下の点で、当初考えていたような2ストロークで仮名文字列を入力するやり方よりも優れている。

  • 多様な仮名文字列を限られた打鍵パターンに割り当てる必要がない
  • 候補となる仮名文字列が絞りこまれるため、規則性を導入しやすい
  • スペースの打鍵回数とキーの位置だけを覚えればよい
  • 漢字の2ストローク入力との干渉が起きにくい
  • 打鍵数の削減によって入力速度の上昇が見込める

 文字列とキーの位置の関係は固定するが、スペースの打鍵回数は既入力の文字列によって変わるようにする。例えば単独の「思」と熟語の「意思」とでは全く異なる候補群になるからだ。できるだけ打鍵数を減らすという狙いもある。この点が、本家の「風」とは若干異なっている。

 もう一つの本家「POBox」との主な違いは、キーボード入力を前提にしていること、ユーザーの入力結果を学習しないこと、文節単位で個別に変換することだ。

 ここまでくると、G-Codeを拡張するだけでは勿体ない。そこで、「風」を見習って、前段階の入力方式には依存しないようにする。つまり、G-Codeだけでなく、T-codeTUT-code超絶技巧入力などの2ストローク系漢直と自由に組み合わせて使えるようにするわけだ。

今後の計画

 このようなわけで、辞書データと入力ソフトの開発を同時に進めなくてはならなくなってしまった。詳しいことは、「漢ナビ2」のページで引き続き検討する。

(2000-06-12)


別の方法

 「漢ナビ」のバージョンアップには時間がかかりそうなので、もっと簡単な方式を考えてみた。詳しくは「G-Quick」のページで。

(2001-09-10)


[ (裏話) | (目次) | 錬金術師の実験室 | m(as)m's home position ]

カレンダー

<   2016年12月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近のツイート

最近のコメント

このページについて

このページには、過去に書かれたブログ記事のうち、カテゴリ「高速入力」に属しているものが含まれています。

前のカテゴリは直接入力です。

最近の記事はメインページで、過去の記事はアーカイブで閲覧できます。

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 4.261