パチン、パチンと。

唐突ですが、
「そろばん」のユーザインターフェースって、優れてますよね。
いや、厳密には何かを仲介しているわけではないから
インターフェースとは言えないけどさ。
操作性と応答性に読み替えてくださいな。


といっても、仲介しているのではないのですから、
操作は直接だし、応答も瞬時ですよね。
そろぼんの操作性や応答性がいいなんて、
至極当たり前のことを言ってますよね、きっと。


ただ、今一度そろばんの操作性や応答性を見直してみると、
操作性の観点から見れば、珠を弾く時のスピード感は爽快ですし、
リセットも一瞬ですよね。傾けるだけ。
応答性と言うところで言えば、珠の移動速度は前述の通り、
計算結果は珠の並びから一目で瞬時に判別できますし*1
特に、珠を弾いた時のパチンパチンとなる音は、
入力完了を示す素晴らしいリアクションですね。


欠点としては、どうやって使うのか、特に乗除算をどうするのかが、
見ただけではわかりにくいことですね。
これさえなんとかできれば、文句なしのインターフェースになりますよ。
インターフェースじゃないんだけど。


そんなわけで、ちょっぴり乗除算の覚書を。
本格的に習ったのではない素人の方法なので、速さは保証できません。


先ずは乗算。
例として4096×16を、片落としと呼ばれる方法でやってみますね。
三桁ずつ打たれている点は、定位点と呼ぶそうですが、
それほど気にする必要はないようです。
ひとまず適当に、ある程度左側に、4096を置いてみましょう。


000,409,600,000,000


16のほうは、自分で覚えている必要があります*2
ではまず、4096の右側二桁以上空けたところを左手の指で指しておきましょう。
これは、指しておくことで桁間違いを防ぐためです。
もちろん、慣れれば必要のないことだと思いますが。
記事中では赤色にしておきますね。


000,409,600,000,000


ではその位置に、4×1をします。
4096と16の、それぞれの頭の数です。
ただ、結果が一桁の場合は、04と考えたほうが便利かもしれません。
指差した位置に04を置きます。


000,409,600,400,000



次は4×6、つまり4096の頭と16のしっぽですね。
24を、指のあるところの一つ右に足します。


000,409,600,640,000


これで、4096の4の桁は計算が終わりました。
じゃあ、一番左の4は消しちゃいましょう。
それと同時に、指の位置も右に一つ移動です。


000,009,600,640,000


あ、次は0なので、計算不要ですね。
指の位置をもう一桁移動しましょう。


000,009,600,640,000


ここで、今度は9×1ですね。4096の三つ目の数字です。
計算結果が一桁なので09と考えて、足していきましょう。


000,009,600,649,000


続けて9×6=54を、指より一つ右に加算。


000,009,600,654,400


9の桁も終わりましたね。では9を消して右に移動します。


000,000,600,654,400


4096の最後の一つ、6を計算しますよ。
6×1=6、念のため06としておいてから加えましょう。


000,000,600,655,000


最後の最後、6×6=36を指の位置の右に加えれば終了です!


000,000,600,655,360


左端の6を消すと、65536が答えとして現れました!


000,000,000,655,360


本当は、ここで右端の6が定位点に合うとわかりやすいです。
ま、結果は出てるんだしいいか、というのがぼくのスタンスということで。
では、一連の流れをおさらいしておきますね。


乗算手順のおさらい:4096×16
000,409,600,000,000:4096を置く
000,409,600,000,000:二桁右に空けて指差す
000,409,600,400,000:4×1を足す
000,409,600,640,000:4×6を一桁右に足す
000,009,600,640,000:4を消して指の位置を一桁右へ
000,009,600,640,000:0なので指の位置を一桁右へ
000,009,600,649,000:9×1を足す
000,009,600,654,400:9×6を一桁右に足す
000,000,600,654,400:9を消して指の位置を一桁右へ
000,000,600,655,000:6×1を足す
000,000,600,655,360:6×6を一桁右に足す
000,000,000,655,360:6を消して65536を得る


ま、これはあくまでも素人の一例で、
もっと効率を上げることもできると思います。たぶん。
というわけで、次は除算にチャレンジしましょう。
今度の例は、さっきの計算の逆を使いますね。


65536÷16をします。
さっきと同じように65536を置きますが、
今度は気持ち右側に置いておきましょう。


000,000,006,553,600


で、さっきみたいに左手の指を置くんですが、
少し意味が変わります。
今度は、1の位のところを指し続けますよ。
割り算は場合によっては、永遠に割り切れませんもんね。
今回は割り切れるとわかってますけど。


さて、指す場所ですが、
65536の1の位から16の桁数分とさらに一つ左を指します。
16は二桁の数なので、三桁分左ということで、
65536の四桁目の部分ですね。
記事では青で表すことします。


000,000,006,553,600


さあでは割り算開始!
考え方としては筆算と同じで、65536のうち65を16で割りたいんです。
が、それを求めるために複雑な掛け算をしては本末転倒ですよね*3
そこで概算をするのですが、通常より少々回りくどいけど確実な方法でやります。
割る数は16ですが、これを大きく見積もって20にし、2を使います。
そして65536の頭である6を割れる数をみると、3ですね。
その3を盤上の65536の二桁左に置いてみましょう。


000,000,306,553,600


同時に、3×1をその二桁右、つまり6の桁から引きます。
1ってのは16の頭のことですよ。
例によって3×1は03と考えたほうが、桁間違いしにくいと思います。


000,000,303,553,600


もう一つ、3×6=18をもう一つ右の桁から引きましょう。


000,000,301,753,600


ここで、割られる数のほうは17536になりましたね。
ってあれ? まだ17は16で割れるじゃないか!
つまるところ、さっきの割り算は4で行うべきだったのですね。
なら、3の部分に1加算して、17は16で引きましょう。


000,000,400,153,600


少々回りくどいと言うのは、この操作のことです。
割る数の桁数が小さければ、いきなり4を出したほうが速いですが、
桁が大きくなると見つけにくいと思うのでこうしてます。
ちなみに当然のことながら、5や6で割ろうとすると数が不足しますね。


では同じように続けましょう。
残った数1536の上二桁15を16で……割れませんね。
では153を16で割りましょう。
例によって概算で、15を2で割ると7.5、切り捨てて7を得ました。
今回は15を7で割ろうとしているので、
7を置くのは5の桁の二桁左ですね。


000,000,407,153,600


そして7×1を引き、その右の桁で7×6を引くと。


000,000,407,083,600
000,000,407,041,600


41はまだ16で割れますね。32が引けそうです。
では7に2を加算して、32を引きましょう。


000,000,409,009,600


コンティニュー。96を16で割ります。
暗算できそうですが、ここは忠実に概算しまして、
9を2で割って切り捨てた4をとればいいですね。


000,000,409,409,600


4×1を二桁目から引いて、4×6を一桁目から引きます。


000,000,409,405,600
000,000,409,403,200


さあ最後。さっきと同様32を引けますよね。
ならば、4に2を加算して、32を引けば……


000,000,409,600,000


青い数字は一桁目と決めていたので、
結果は4096になりました!
掛け算の時の逆算なので、ちゃんと答えが合ってますね。
では流れをおさらいしておきましょう。


除算手順のおさらい:65536÷16
000,000,006,553,600:65536を置く
000,000,006,553,600:1の位を決める
000,000,306,553,600:二桁左に3を立てる
000,000,303,553,600:3×1を引く
000,000,301,753,600:3×6を一桁右から引く
000,000,400,153,600:4を立て直して16を引く
000,000,407,153,600:二桁右に7を立てる
000,000,407,083,600:7×1を引く
000,000,407,041,600:7×6を一桁右から引く
000,000,409,009,600:9を立て直して32を引く
000,000,409,409,600:二桁右に4を立てる
000,000,409,405,600:4×1を引く
000,000,409,403,200:4×6を一桁右から引く
000,000,409,600,000:6を立て直して32を引く
000,000,409,600,000:4096を得る


文字におこすと長ったらしく見えますが、
実際に弾くとチャチャッと終わってしまうんですよね。
ところで、今回は割り切れる例でしたが、割り切れない場合は、
余りを出すなら指差した桁が終わった時の残りを余りとします。
小数まで行くなら、そのまま延々と続けていけばいいだけですね。
1の位さえ正しく決めれば計算はできる、はずです。
あと、掛け算で小数を扱う場合も同じように位取りが必要となるらしいです。
ま、自分で考えても見つけられそうですけどね。


さて、そんなところで、おまけが本編みたいになりましたが、
今回の話はそろばんの操作性と応答性についてでした。
そして、扱い方に関しては不親切かもしれないと書いたわけです。
確かに、慣れないと この手順はややこしいですよね。


どうにかしてもっとユーザビリティにできないものか。
あるいは、そろばんをインターフェースとしたデバイスを作れないだろうか。
話題は変な方向へ進もうとしてますが、実はこれが本題でした。
さらに結論も見えぬまま、唐突に記事は終わるのでした。

*1:いや、ぼくはまだまだスキルが足りません……

*2:片方だけを覚えるから「片落とし」なんですね。そろばん上に数字を置かず、両方とも覚える場合は「両落とし」だそうです。

*3:これも慣れれば暗算できるんでしょうけど、いかんせん記憶力がなあ……