計算配列のメモ

計算配列

キーボードの配列には、計算機による最適化で求められたものがある。

定まった呼称が無いので、検索で見つけづらい。以下に代表例を示したが、他にもあるかも。
日本語入力用キー配列(指に宿る記憶)に関するリンク集にオリジナルキー配列が多く紹介されている。

打鍵数・指の負担・移動距離など、何らかの指標でキー配列を数値的に評価し、その数値が最適となる配列を求める。

指標が適切に設定されていれば「これが最適!」と言える客観的な根拠になるが、「楽さ」という指標は数値的な表現が難しい。本格的にやるなら統計学、人間工学、情報工学あたりを勉強すべきだろう。そこまでしても、キーの打ちやすさ、入力する文章スタイルなどの個人差による誤差は大きく、万人にとって良いものを作るというよりは、自分に特化したものを見つける目的の方が適している。これは計算配列に限らず、キー配列全般に言えることかも知れないが。

試打を通じて最終的な人的評価は必要だろうが、それでも全く無の状態から最適な形を描くよりは楽になるし、安心感がある。

文章サンプル

計算によって配列を評価するには、日本語の文章サンプルが必要。実際に使う日本語を解析して、各文字の頻度や入力する際の運指を評価する。

偏りがないように様々な文体を万遍なく集める方法もあれば、あるいは仕事用のメール例文集から、論文から、自分の過去の日記から、と特定の文章スタイルに特化する集め方もある。どんな文章であれ、その文章で言及されている内容に関連した単語が多く出てくることは避けられない。バラツキを平準化するため、計算時間とのトレードオフになるがサンプル文字数は多いに越したことはない。

アルゴリズム

総当たりによる探索は、限界がある。例えばアルファベット+記号30文字を30箇所のキーに当てはめるとして、組み合わせは30!=265252859812191058636308480000000、一つの配列の評価に1秒でも8.41𥝱(1024)年かかる。そのため、過去に計算した配列の評価を参考にして次に評価する配列を決定する手法が必要になる。

  • 山登り法
    • 花配列、ぶな配列、ミズナラ配列など
  • 焼きなまし法
    • Corplexなど
  • 遺伝的アルゴリズム
    • ○配列など
  • 蟻コロニー最適化

指標

花配列

花のくに

  • 1文字当たりの平均入力速度が最も速い
  • 各指にかかる負荷があらかじめ指定したものに最も近い

を評価基準として、以下のデータから計算している。

  • 仮名文字使用頻度
  • 打鍵速度(キーからキーへの移動時間)
  • 指使用頻度分布(自由に打鍵したときの各指の使用瀕度)

○配列(月配列4-698/幸花配列)

遺伝的アルゴリズムで求めた口語に適した中指シフトかな配列 ○配列

手法の解説が詳しくまとめられている。以下の2点を評価に使っている。

  • 打鍵速度
    • 全ての2キーの組み合わせについて打鍵にかかる時間を計測し、サンプル文章の入力にかかる時間をシミュレートしている
    • a(右手)→b(左手)→c(右手)と打つとして、a→b:50ms、b→c:70msでも単純に120msとせず、a→c:200msならボトルネックとして合計時間を200msとしている(厳密にはさらにホームポジションからaの移動なども考慮している)
  • 各指使用率
    • 各指1本で料理はかりを押し下げ、指の筋力を測定。その比をそのまま理想的な使用率としている

ぶな配列、ミズナラ配列

ぶな配列とミズナラ配列の作り方 その1その6

2文字連接頻度・2打鍵所要時間を使って、「2連接の、1文字目を打ち切ってから2文字目を打つまでの時間」を指標としている。

月見草配列

最適化計算によるかな配列『月見草』

「月見草」では「打鍵四連接」、具体的には「最近の打鍵三つ」を考慮した「今からの打鍵負荷」を唯一の評価基準としています。

配置候補を32箇所とすると打鍵4連接の組み合わせは324=104万8576通りで、評価値を1byteとすると約1MB。4という数字は、これがCPUのキャッシュが働く限度であるからのようだ。

しかし、『実測と計算の都合、また主観的な評価を交えて設定する。』とのことらしいが、100万個の評価値をどうやって作ったのだろう。

ローマ字(行段系)の計算配列

調査中・・・

keyboard_layout/summary/optimized_calculation.txt · 最終更新: 2016/08/01 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0