ビスケットのあれこれ

ビジュアル言語ビスケット(Viscuit)に関するあれこれを書いてゆきます.

文字の入力の問題

2015-06-01 10:00:44 | 1
今回はプログラミングの話題からちょっとズレて,コンピュータへの文字の入力の問題について書いてみます.

日本の小学校の教育では手書きが中心ですが,海外では手書きはマイナーで,普通にコンピュータで作文やレポートを書かせているのだそうです.どうしてここまで差がついたのか.これは日本の教育界が古き良き伝統を重んじるとか(そういう傾向はあるのかもしれませんが)それだけではないと思います.

アルファベットを言語としてもつ国はアジア以外はほとんどだと思いますが,彼らにとってのキーボードというのは入力したい文字とキーが1対1に対応している,直接入力デバイスです.彼らが手書きを捨てて,キーボードを選ぶというのは,本が活字を使っているというのと同じくらい自然なテクノロジーへの対応です.

日本語でそれに対応しているのが漢字タイプライターというものです.すべての漢字がずらーっと2000個くらい並んでいて,それを選んでガシガシと打って行きます.コンピュータがまだ漢字を使えなかった時代にはよく使われていました.僕の父は国語の教師でしたが,漢字タイプライターは得意だと言ってました.これをそのままコンピュータの入力とする方向性もあったと思いますが,コストとか入力効率とかの問題で消えて行きました.

そこで出てきた技術が「かな漢字変換」というものです.かなを入力してそれを読みから漢字に変換する.でもそもそも漢字というのは見た目に意味・情報が詰まっている文字であるにも関わらず,その特徴を捨てて,音で入力します.漢字はいろんな読み方ができますからそこはさらに複雑になります.同じ音でもいろんな種類の漢字がありますし.

でも,さらにまずいのが,英語教育やプログラミングとの親和性を考えるようになると,かなキーボードではなく英字キーボードを直接覚えるということが主流になって,「ローマ字かな変換」というこれまた変な方法が使われるようになりました.

予測変換とか,全文変換とか,いろんな技術でこれらを支えて,現在では相当ストレスがなく使えています.でも,2段階の変換「ローマ字→かな→漢字」というのが入っているのはどうしようもありません.そもそも日本語というリッチな文字体系に対して,キーボードという非常にプアな入力装置で対応するというのは根本的に難しい問題なんですね.

僕が期待を寄せているのは,タブレットのペン入力です.これも研究の歴史はとても長く,少しずつではありますが進化しています.最近で素晴らしいのはiPadでのmazecという手書き入力ですね.キーボード入力はどうしても1次元的な操作になってしまいますが,mazecでは2次元を非常に上手く使っています.候補と確定が2次元的にそれぞれに書いた文字の上に出てくる.

僕はタブレットやスマホでの日本語入力は手書きを愛用しているのですが,こうしてPCでローマ字入力している速度にはかないませんが,スマホのキーボード入力と比べると,心地よさは断然手書きです.

でもまだまだ改良の余地があって,たとえば,手書きで予測入力というのが出来ていません.今の予測入力は文字として確定してからの,単語の予測ですとか.あとなんと平仮名で書いたら漢字にしてくれるという,「ローマ字→かな」の部分のを手書きにすることですか.

ところが,手書きで予測入力ができるようになると,たとえば手偏を書いたら,手偏で始まる漢字がずらっと出てくるということになります.それらを選択してもいいし,無視して書いて行くと候補が狭まって行く.このやりかたの良さは,漢字をちゃんと覚えていなくても書けるようになるということですかね.予測だけじゃなくて,曖昧入力も入れて,手偏で書いて行ったけど実は木偏だったみたいなのが候補で出てくるというのもありですね.当然,前の文や過去の頻度なども学習しますし,これが学校でつかわれる入力法なら,その学年で覚える漢字に限定した辞書を使うようにすればよいですね.

指かペンかという議論ですが,これは断然ペンです.指で文字を書くということは,腕の筋肉を使うということですが,ペンで文字を書くのは指先の繊細な筋肉を使えることになるので,小さいストロークを正確に書けるようになると思います.それと画面を指で邪魔しないという利点もありますし.なんせタブレット上のボタンの大きさを小さく出来ますから,画面設計上の制約もすくないです.

iOSは最近やっとIMEを開放したとかそういう不幸なことが続いていたわけですが,制約もなくなりましたから,ちゃんとした入力法を子供用に(大人用にも)作ってあげて,小1の作文教育からストレスのない環境を提供して上げたいですよねぇ.

十進法の計算

2015-06-01 00:32:50 | 1
ビスケットで二進法の計算をさせるのプログラムはこれまでにもご紹介してきました.

2進数のカウンター(その1)


で,十進法の計算を作ってみました.つくるのに2時間くらいかかりましたよ.



まず,数字の部品を10個つくります.0から9までですね.数字を重ねるとそれを足したということにします.3+2=5という計算は3と2を重ねておくと,5に変わるというものです.数字の場所がズレないように置くのがミソです.結果が二桁になる計算の場合は1の位10の位を考えて置かなければなりません.たとえば,7+8=15の場合はメガネの左側に7と8を重ねて置いて,右側には7と8があった場所に5を,その左となりに1を置きます.

1を生成するパクパクと,3を生成するパクパクがあります.本当は残りの数を生成するパクパクも作った方がよいですが,ここでは2つだけ作りました.

で,それらを横に並べておいてるので,13ずつ足すプログラムになっています.ここで表示されているのは13の倍数です.


二進法の計算は,0+0, 0+1, 1+1 の3つのメガネがあればよいですが(0+0はめったに使わないので省略できます),十進法の計算では,50個以上のメガネが必要です.足し算の九九の表ですね.

これがどういう説明になるかってことですけれど.

うまく動かない1つに,メガネの中の数字の置き方が上手くない場合があります.桁というのをきちんと考えなければならないということです.計算ということを改めて考えさせられます.桁の発明というのは偉大です.桁を発明できたので,どんな大きな数の計算でも,たった50個程度のメガネでできるのです.

簡単とはいえ二進法と比べたら十進法は複雑な計算ですね.

コンピュータは0と1で動いています.これは知識として広く知られています.ところがなぜ0と1で動いているのかはそれほど知られていません.なぜかというと0と1の計算は簡単だからです.コンピュータは電子回路で動いていますが,簡単な計算ということは回路が簡単ということです.ただそれだけのことです.

知識でしか知られていないと間違った解釈が広まります.たとえば0と1で動いていると言えば,正しいか間違っているかしか無い,なんとも柔軟じゃない印象がありますね.デジタルかアナログかという議論の元も,0と1の印象の悪さから来ているのではないでしょうか.もし,コンピュータも人間と同じように十進法で計算していたらデジタルがこれほど悪く言われなかったかもしれません.

デジタルとアナログの違いと言っても,人間でもデジタルとアナログを使い分けていますよね.身長や体重はアナログですけれど,お金や人数はデジタルです.0と1だからデジタルではありません.

こんなことは,知っている人には知っているけれど,知らない人には知らないという,いつものことなんですけれどもね.