ビスケットのあれこれ

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

相対アドレスを思いついたきっかけの事件

2015-06-04 10:21:34 | 1
僕がコンピュータ上の名前について興味を持つようになったのは,博士課程1年くらいの時に受けたいたずら電話事件でした.これは中々面白い事件なので書いてみます.

当時,大学の近くで一人暮らしをしてまして,家には電話が引いてます.大学で研究者同士の連絡に電子メールは使えましたけど,まだまだ一般の人とのやりとりは電話の時代でした.インターネットはあったけど,まだWebはありませんでした.ネットのアプリというのは電子メール,ネットニュースくらいでしたかね.

電話といえば,丁度ダイヤルQ2というサービスが始まったころです.これまでの通話料だけじゃなく,情報量を代行して情報提供者へ支払らうというものでした.株価とか競馬とか星占いとか,今だったらWebで提供されそうな情報だけじゃなくて,音声掲示板というサービスを提供している会社も現れました.今の出会い系掲示板みたいなものですが,暗証番号がかかっているところとか,オープンな掲示板とか.で,雑誌にはそのサービスの電話番号の広告がガンガン載りだしたような時代です.

ある日,夜中に家に帰ると,僕の電話機に留守電のランプが点灯していました.再生してみると「100件」くらいのメッセージが吹き込まれています.当時の留守電はテープ式なのでそれくらいの数のメッセージは全部録音可能でした.びっくりして聞いてみると,ほとんどが無言で切られるのですが,ときどき,「なんだ,男かよ」といった声が入っていたりします.それも全員違う人のようです.

もう,お分かりでしょうが,僕の家の電話番号がどこかにバレたらしいのです.対策を立てようがなくて,3日くらい続きました.300件くらい.寝てても鳴るので,ベルの音は止めました.

当時のNTTのサービスで迷惑電話を防ぐのがあったのかどうかは覚えていません.でもその手のサービスは特定の番号からの通話を防ぐものであって,この事件のように不特定からの通話には無防備です.あと,ナンバーディスプレイというのもまだ始まっていません.

もう,これは自分の電話番号を変更するしかないですよね.まるで年金番号流出と同じ解決法ですよ.

困っているところに,また丁度電話がかかってきます.つい,その電話に出てしまいました.そうしたら,弱々しい声の男の人が「もしもし」と言っているので,こちらは怖そうな声で「おまえ,この番号はどこで知った」と言うと「ダイヤルQ2の掲示板です」やっぱり.僕はそんなの使った覚えがないけれど,誰かが僕に成り済まして掲示板に僕の番号を入れたに違いない.それで,その掲示板の番号を教えてもらって,アクセスしてみました.

ほとんどろくなメッセージが入っていなくて,数件目で僕の番号がでてきました.実は引っ越したばかりで,当時は引っ越しをすると番号が変わっちゃうので,前の番号に掛けると,新しい番号はXX番ですという,女性の合成音が流れるようにしてもらってたのですが,その声でした.誰かに恨まれるような覚えはないのだけれど,その番号アナウンスを録音して,勝手に掲示板に入れた奴がいると.

雑誌で,女の子に出会えると思って,情報量を払ってダイヤルQ2に掛けて来た人が最初に見つけた番号が僕の番号で,それが女性の合成音で.きっと恥ずかしがり屋で自分の声は隠したいんだなと勝手に想像して,期待して掛けてきますよね.


その掲示板は作りがひどくて,登録したメッセージを消すことができません.もしかしたら登録した人が暗証番号を設定して,とかあるのかもしれませんが,たぶんそれすら無かったと思う.僕は暗証番号を知らないし.というか,サービスの入り口の番号はわかったけれど,その業者がどこかも知りません.

で,NTTに電話して,このQ2の業者の番号を教えてくれと頼みましたが,それはまた簡単には教えてくれません.で,被害の状況を説明して.折り返しかかって来て,あなたの番号が掲示板から確認できたので,ということでやっと業者を教えてもらって.

僕は北海道に住んでましたが,業者は横浜の方でした.当時の電話料金というのは横浜だと2.5秒で10円というとんでもない高額なんですが,それも自腹で電話しまして,やっと消してもらえたと.それで恐怖の電話は止まりました.

トイレの落書きにもいろんな電話番号がかかれていますが,それを見て電話する奴がいるかもしれませんけれど,これほど短時間に集中していたずらされることは無いですよね.なので,被害者はトイレに書かれていることは気がつかないかもしれませんね.

僕に電話をかけて来た300人以上の人たちは,全員悪意はないんですよね.女の子に声をかけられない弱々しい男子たちなんですよ.でも,システムが悪いとすごいひどいことになっちゃう.僕の番号を掲示板に載せた犯人も,どれくらいの悪意があってやったんでしょう.ここまでひどいことになるとは想像できないですよね.そもそもその犯人は僕のことを知っている人なのかどうかもわからないですし.

ということで,今インターネットで置きているいろんな問題は,電話の世界でもとっくにあったと.番号ってダメじゃん,なんです.

自分の研究テーマは,オブジェクト指向から入って,分散オブジェクト,マルチエージェントと進みつつあって.これからの世の中はオープンシステムだと息巻いていた時期です.

で,インターネットの仕組みを勉強したら電話番号と本質的に何も変わっていなくて,基本的には悪人を想定しない設計ですよね.小さい悪でも,システムが悪いとそれを増幅してしまうシステムというか.

そんなこんなで「相対アドレス」というのを思いついたのでした.自分の中ではインターネットがこれほどインフラになるとは思っていませんでしたから,どうやってもっとマシなネットを作るか,という,それはそれは大それたことを考えられたのでした.今の時代に,インターネットを根本から置き換える研究なんて始めたら,その人はマッド扱いされますよね.

ちなみに相対アドレスだとこれがなぜ解決できるかというと,電話番号は相対名になるので,彼らからは「XX掲示板にかかれた,3番目の投稿の人」という番号で呼び出されるからです.なので,こちらのフィルタは「XX掲示板」経由のアクセスは禁止,とすれば全部止められます.

======
とても楽しいと評判の,プログラミングを知らない大人向けの講座をやります.

コンピュータの本質を新規開発に活かす

年金番号の流出の話

2015-06-02 00:18:10 | 1
プログラミングから脱線すると色々と言いたくなるという.

年金番号がウイルスにかかって流出してしまって,想定される被害は年金番号の成り済ましが怖いので,流出してしまった人たちに番号を再発行して郵送するとかニュースで言ってました.

実は,僕の学位論文の一部で,オープンシステムにおける名前付けの問題について議論しています.ちゃんと論文にもなっています.そのときの議論の延長線上に今回の年金番号流出もからんでいるので,その話をしましょう.

当時の話題の中心は,インターネットでした.世界のコンピュータにそれぞれ一意の番号をつけて(つまり,全部のコンピュータが違う番号をもっている),その上で,ある番号のコンピュータにメッセージを送りたければ,どうやってそのコンピュータを探すか(ルーティング)という問題を解けば良い,ということにしていました.その後に出てきたIPv6も色々と修正してますが同じです.

ルーティングはきちんとアルゴリズムを作ることができましたが,このシステムの最大の問題は,世界のコンピュータがそれぞれに一意の番号をつける,ということです.同じ番号を名乗るコンピュータが2つ以上あるとシステムはちゃんと動きません.アルゴリズムではそこは保証できていません.社会がそれを保証するしかないのです.つまり,インターネットに接続しようとする人は,団体から与えられたIPアドレスの範囲で名前をつけて,それで接続する.そのルールを破った人はつないではいけない.

当たり前だと思うかもしれませんが,これはオープンシステムではありません.集中的な組織があって(それが木構造で分散管理されていたとしても,最終的にルートが1つなら同じことです)そこからの管理に従わなければちゃんと動かない.その中で決めた社会のルールに従ったものだけが通信ができる,というシステムです.

オープンシステムというのは,こういう集中的なルール・組織を一切仮定しないで成立するシステムのことです.局所的な,つまり隣り合ったもの同士の約束を守るだけで,全体の整合性がちゃんと取れているというシステムです.そして,それは作れるのですよ.

僕が提案した解は,相対アドレスだけを使ってすべての計算を行うというものです.相対アドレスというのはまず,そのアドレスの起点があります.起点が変わると相対アドレスの中身が変わります.何を起点にしてそのアドレスを言っているか,というのがすべてです.

「居酒屋の隣に座った親父問題」というので説明します.あるおじさんと居酒屋で,偶然隣りに座って,話が盛り上がったとします.その時点で,2015年6月1日の「ゆかり」という居酒屋に20:00-21:00の間にカウンターの3番目の席に座っていたおじさん,という名前がつきます.自分の中では飲み屋であった美空ひばりの話をしていたおもしろいおじさん,という言い方でその人のことを思い出せるならば,それでもよいです.けっして,おじさんのDNA番号といった世界の人間を明確に区別できる番号でその人を指し示してはいません.その人のDNA番号を必要もありません.

話が進んでいるうちに,実は同郷だということがわかりました.さらに年齢を言い合うと,なんと僕の中学の同級生,中村君のお父さんだったということがわかりました.この瞬間に,このおじさんの名前はおもしろいおじさんから,中村君のお父さんという言い方にかわります.どっちの言い方も,相対的なものです.僕の言う「中村君のお父さん」という言葉は,「中村君」で同じ人間を思い出せる僕の中学の同級生の間でしか使えません.それ以外の人には「原田の中学の同級生の中村君」と言い換えないとダメです.

相対的な名前は,周囲の情報によって変わる可能性があり,伝えた相手にとっても相対的な名前でなければなりません.名前の変換が主の計算になります.

相対的な名前でも,インターネットで実現できているどんな相手とも通信ができる,ということは作れます.それを示したのが僕の論文です.名前の変換を全員がちゃんとやれば繋がるよということです.

話が大幅にそれましたが,年金番号が秘密の番号である,という社会のルール自体が脆弱すぎます.そんなのに頼らなければ上手く行かないシステムはいずれ破綻します.これは,この後導入されるマイナンバーでも同じです.

僕らコンピュータ屋が考えているのは,どんなにダメな人たちが管理しても絶対大丈夫というシステムを作ることです.そして,それは作れます.とっくに出来ているものもあります.

ところが,コンピュータの本当の意味の専門家じゃない人たちが色々と勝手に決めちゃうので,彼らはそういうことができることも知らないし,社会のルールとか法律でそれを守ればよいという極めて脆弱な解決方法しか知らないので.こんな風に社会が動いているうちは,こういう事件が多発します.

ウィルスに感染したメールを開いてしまったのが原因ではないです.人間はミスをします.そのミスによる損害は,そのミスと同じレベルの損害で抑えられるようなシステムでなければなりません.誰でもついクリックするじゃないですか.そのミスはそんなレベルですよ.ウィルスチェックをしなかったなんて大した問題じゃないんですよ.

一番の問題は,脆弱なシステムの上に大事なシステムを構築したことなんです.どんなにダメな人間が関わっていても大丈夫なシステムを作ってそれに乗ればいいんですよ.

ーー追記
最後の文章はちょっと筆が滑りました.半分眠りながら書いていたものですから.すみません.


今月末にこういうイベントをやります.この相対アドレスの話はしませんけれど,ぜひ.
コンピュータの本質を新規開発に活かす

文字の入力の問題

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だからデジタルではありません.

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