実は、同時打鍵よりも逐次打鍵的に打つ方が速い?@親指シフト
親指ひゅんQの同時打鍵ステートマシン解説を読んでいて、どうしても引っかかったことがあります。
(とはいっても、「E48とE43」の遷移先を「文字キー親指キー押下中状態」にすればとりあえずは…ってゆーネタではなく。)
今までは「親指シフトはロールオーバー(文字キーを離す前に、次の文字キーを押す)に対応していない」とゆー風に思っていたのですが、これってbemuさんがかつて(というか、アレって私がAZIKを始める前だから…もう5年くらい前ですね)掲示し始めた話から来ているのですが、このコメントを含めて「親指同時打鍵に対する疑問の説いろいろ」にまとめられていていました。
思えば当時は、これを理由にしてNICOLAへの移行を思いとどまっていたんですよね…。
で、すっかり「親指シフト=ロールオーバーできない=ドタバタした打鍵」だと思いこんでしまった、というのが今までの話。
(ってゆーか、実際に親指シフトで叩いている人を見たとき*1にも、まさにドタバタとした感じで打鍵してました)
翻って「同時打鍵ステートマシン」解説を読むと…ふつーにロールオーバーに対応していますね。
というか、「文字キー→親指キー→文字キーと連続押下し、結果として3キーが同時に打鍵されている状態となった場合、前後のどちらに親指シフト修飾を付加するか」という事についてのタイムチャートが載っています。
しかもこの解釈方法が「古典ロジック(厳密に2キー間の打鍵時間を計る)」と「簡易ロジック(250ms程度に固定)」に分かれていて、当然古典ロジックは「実機としてのOASYSに載っていたロジック」だったりします。
(この辺はNICOLAフォーラムに該当資料があります。)
不思議ですよね。
どうして「同時打鍵」なのに、ロールオーバー時の挙動が定義されているのか…。
そこで単純に考えてみました。つまりは
「現状では多くの人が、純粋な同時打鍵をしている…と思いこんでいる。」
とゆー事なのではないかと。
少なくとも、感覚的には同時打鍵をして、毎回キーを離している。
ところが、ソフトウェア的に見ると、たまにロールオーバーが掛かっていたりする。
そこで、ロールオーバーが発生してしまった場合であっても、きちんとシフトが意図するとおりに掛かるようにと組まれている。
こう考えると、親指シフトを使いつつ毎秒8カナとか言う速度を出すために必要な要素は、単に「親指シフト=同時打鍵、という考えを捨てて」ロジックの挙動を読みつつシフトを操作することなのではないかと。
逐次打鍵と比べて見ると「タイミング」が非常にシビアになってしまいますが、「原理的には」高速打鍵も可能かもしれない…などと妄想してみたわけです。
もっとも、Windows上でタイミングを計測しているエミュレータ類で、こういうトリッキーな方法論が通用するかどうかは微妙ですけど(この点では、専用機に分があるのは間違いないと思う)。
…と、可能性だけを追い求めてもしょうがないですな。
ここまでタイミングに拘っても、結局は人と機械の両方にネックがあるから、結局は逐次式打鍵の方が「高速化しやすい」のかもしれない気がします。こっちは順序の問題だけであって、タイミングを考える必要はないですからね。
NICOLAについてはここまで。
明日は飛鳥…とはいっても、シフトの挙動に関するアレな問題などが山積しているから、現状では纏めようがない気もしますが。
しかし、ここまで書いてふと思ったことが。
親指シフトで言うところの「シフト」ってゆーのは、車で言うところの「シフト」によく似ている気がしますな。
NICOLAのシフトはまさに「オートマチック・トランスミッション」の様なもので、古典ロジック・簡易ロジックがうまく働くことで、特定の文字キー一つだけをシフトしてゆくわけです。
飛鳥の場合は逆に「マニュアル・トランスミッション」の様なもので、慣れれば低燃費で走れるけど、慣れるまではローギアで40km/hを出すような不自然さが生じてしまうわけです。
本来ならば、マニュアルモード付きCVTの様に、好きなタイミングで比較的自由に、かつ狙ったキーにのみ的確なシフトがかけられれば…言うことはない気もするのですが。
…あっ、ここはたとえ話なので、誤解を生む可能性がありましたらご指摘下さいませ。