WirelessWire News Technology to implement the future

by Category

コンピュータ バイナリ データ イメージ

コンピュータを理解するためのたった一つのこと、そして情報学

2019.10.28

Updated by Ryo Shimizu on October 28, 2019, 09:38 am JST

toioの田中章愛さんが、8421キーボードという面白いものを作っていた(写真使用は田中さん本人の承諾を得ています)。

4つのボタンにそれぞれ、8と4と2と1が割り当てられた「だけ」のキーボードだ。
Arduinoを使うと自作のキーボードがこんなにかんたんに作れるのかということにも驚かされたし、なによりアイデアが良いと思った。

実際のところ、コンピュータとはなにか、ということを理解するためにこれほど素晴らしい教材があるだろうか。
教材としてはもちろん、アートとしても素晴らしい。

「コンピュータってなんだか分かりますか?」と今の時代に聞けば、バカにしているのか、と怒られそうだが、実際にはコンピュータとは本質的になんであるのか理解している人は、プログラマーの中でも驚くほど少ない。なにしろ筆者自身がそうだった。

「理解していないのに使うことができる」こと自体が(そのように設計した先人たちが)凄いのだが、もっと凄いのは「理解してないのに理解したような気持ちになっている」ということでもある。これがユーザーイリュージョンだ。

では、コンピュータを「理解する」というのはどういうことかというと、本質的にはこの4つのボタンのキーボードに全て込められている。
つまりは2進法だ。

コンピュータに関するどんな雑な説明でも、「コンピュータはスイッチのオンとオフを束ねた2進法で情報を表現する」という意味の一文があるはずだ。

しかしこれは普通の人にはあまりにもピンと来ない。普通の人どころか、プログラミングを始めてから10年くらい経った時の筆者ですら、全くピンと来なかった。

というのも、ExcelやWord、ウェブを使っている段階ではもちろん二進法など意識しないし、それどころかプログラミングをしている最中でさえ二進法を意識することは滅多に無い。一生を通じて二進法に縁がないプログラマーさえ少なくないかもしれない。

そのコンピュータの原理にとって、二進法がいかに重要なのか見事に表現したのが、この8421キーボードだと、筆者は感じたのだ。

まず、このキーボードには4つのスイッチがついている。つまり、「スイッチのオンとオフ」という説明に対応する。
そして見てわかるように、このキーボードのスイッチは、どのスイッチも同時に押すことができる。つまり、1だけ、2だけ、4だけ、8だけと一つづつキーを押すだけでなく、1と2、1と4、1と8など、組み合わせて押すこともできる。もちろんこの組み合わせは、1と2と4と8のすべてを同時に押すこともできる。

こうすると、このキーボードで入力可能な組み合わせは

すべてのキーを押さない = 0
1のキーを押す= 1
2のキーを押す = 2
2と1のキーを押す = 3
4のキーを押す = 4
4と1のキーを押す = 5
4と2のキーを押す = 6
4と2と1のキーを押す = 7
8のキーを押す = 8
8と1のキーを押す = 9
8と2のキーを押す = 10
8と2と1のキーを押す = 11
8と4のキーを押す = 12
8と4と1のキーを押す = 13
8と4と2のキーを押す = 14
8と4と2と1のキーを押す = 15

と、0から15までの数字が表現できることになる。
これは、4桁の2進数に対応している。

しかも、数の上がり方には法則性があることにすぐ気づくだろう。

2進数を直感的に学ぶには、こうしたキーボードはとても良い教材だ。

そして、本質的には、スイッチはスイッチでしかないのである。
たかがスイッチのオンとオフの組み合わせに「これは1の位、これは2の位、これは4の位、これは8の位」と割り当てているのは人間の勝手な都合に過ぎない。
「思い込み」「錯覚」と言っても良い。

これこそがコンピュータの原理の根幹である。
少し前に本欄で、「数学そのものよりも情報学が重要(=プログラミング教育が重要)」と主張したのは、情報学はスイッチのオンとオフを「2進数の桁に見立てる」という行為そのものを意味するからだ。つまり、数学の大部分はルールの運用であるが、情報学の大部分はルールの創造にあるという正反対の性質を持っている。

数学のごく僅かな領域に情報学と被る部分があり、それが「新しい数学ルールの導入(ルールの創造)」だ。たとえば位取り記数法、虚数、複素数、微積分の発明などだが、これはただし既存の数学的ルールと矛盾しないという前提があるため、ルールの完全なる創造とは少しニュアンスが異なる。

情報学にも数学的な「ルールの運用」があるが、これは現在、むしろコンピュータが内部的に処理することであって、情報学の使い手が行うのはプログラミング、すなわちルールの創造に他ならない。プログラマーは既存の公理系(すなわちプログラミング言語)を使うこともできるが、使わないこともでき、コンピュータを使うこともできるが、使わないこともできる。この点が根本的に異なる。

どちらがより優れているとか、どちらがより難しいかという議論は無意味で、数学はルールの運用を繰り返しながら全く新しい事実の発見や確認(証明)を行っていく厳格な学問なのに対し、情報学はルールを破壊的に創造し、雲のように霞がかったイメージを現実のものとして具現化(ルール化=プログラム化)する。

ラブレース伯爵夫人エイダ・バイロンが数学と詩は本質的に同じだと語り、父の愛した詩文とは全く無関係に思える数学に没頭していった結果、実際には情報学の近代化を行っていた現象を思い出してほしい。数学を詩的に解釈しようとすれば、自然と情報学に近づいていくからだ。

たとえば虚数の発明について考えてみよう。虚数以前の数学では、「自乗してマイナスになる数は存在しない」というルールが厳格に運用されていた。あるとき、とある数学者は思った。「では、もし存在したらどうだろうか」これは既存のルールに対する詩的な問いかけである。そして彼は虚数を発明した。この部分だけは数学でありながら情報学的である。

虚数が発明された16世紀においては、負の数すら必要性が理解されなかったそうで、当然、負の平方根である虚数に注目が行くことはまったくなかった。しかしたった一つ、虚数が発明され数百年の研究を経たことで、実は虚数が非常に強力な道具と成り得ることが認識され、今では何気ないゲームキャラクターの動きでさえも、相異なる3つの虚数単位からなる複素数(四元数)による計算が不可欠となっている。

閑話休題。そういうわけだから、数学が苦手なプログラマー(筆者もその一人だ)というのが少なくなく、プログラミングができない数学者が少なくないのも、当然だ。この2つは全く関係ないことだからだ。実際、高校時代の筆者は雑誌でプロのテクニカルライターとして活動しながらも、数学はずっと赤点のままだった。

プログラマーが扱うのは情報学であって、数学そのものではない。ただ、スイッチのオンとオフに「二進数」という情報を当てはめる、見立てることでコンピュータが作られた。ほとんどこのワンアイデアからすべてが始まっている。

コンピュータの成立段階で数学者が活躍したことも情報学と数学の混乱に拍車をかけたが、本質的にはコンピュータは数学的なものではなく、情報学的なものなのである。

実際に数学者がコンピュータを発展させた例は時代を追うごとにどんどん少なくなり、かわりに情報学を専門にする人々が活躍していった。現代のコンピュータは明らかに情報学の成果であって数学の成果そのものではない。もちろん数学と情報学は相補的に共進化する関係にあるが、情報学が発達しなければコンピュータはこれほど便利なものにはならなかったのは間違いない。

従来的な教育の区分では、数に関することは数学や算数で取り扱うという慣習に従うと、コンピュータも数学的なものと見られがちだが、数学とは別にプログラミング教育が必要だという機運が高まってきた。

情報学とは、「なにかをなにかに見立てる」ことで情報を整理し、役立てる方法論であり、図書館で生まれた。現在、我々が当たり前のように使っている「検索」その語源である「情報検索」という言葉は、ほんの半世紀前まではもっぱら図書館で使う用語だった

我々が単に「検索」という言葉を使うようになったのは、2003年頃からで、それまではブックマーク(これも図書で使う用語である)を多用していた。

Googleが普及し、情報検索が0.5秒以下で終了するようになった結果、情報の手がかりとしてのブックマークは廃れていき、情報検索は単にWebサイトを探すために毎回使われることになった。それ以前の世界は、「ポータルサイト」がしのぎを削っていたが、今はポータルサイトというのは昔のような機能を失っている。URL入力窓やソーシャルメディアがポータル化しているからだ。

ポータルサイトは、日本で言えば新聞の一面がWeb化したもののように捉えられ、様々なニュースや話題を編集した状態で掲示した。ポータルサイトがWebの主役だった頃は、人々はこれまでと同様にプロの記者が取材し、書いた記事をプロの編集者が編集し、掲載したものを読むのだと強く信じられていた。ポータルサイトに何をどの順番で掲出するかは重大な決定事項であり、最高権限を持つ責任者が決定していた。たとえば、最初期のYahoo!のモバイルサイトのトップページは孫正義さんが直接口を出していたという噂もある。

ところが実際にネットが進化してくると、人々はもっと重要なことに興味を移した。すなわち、自分たちはもともともっと重要な情報源を持っていたことに全員がほとんど同時に気づくのである。それは自分の友達や家族、好きなタレントや著名人たちから直接ニュースを受取るほうが、どこかの偉い人が決めたニュースよりも面白いということだ。

だからソーシャルメディアはポータル化した。2004年頃にソーシャルトラストネットワーク(STN)を研究していた鈴木健はスマートニュースを作った。口コミの起点となるためだ。

不思議なことに、LINEでもニュースを見ることができるが、ニュースの起点はスマートニュースとFacebookが一番多い。次にTwitterか。この順序は、世代や交友関係によっても変化するだろう。

Facebookではニュースにコメントしている人が多いが、LINEでニュースにコメントしてる人は個人的にはあまり見かけない。
井戸端会議がWeb化し、仲間内だけの気楽なコミュニケーションがとれるFacebookに比べると、家族や友人と面と向かってコミュニケーションをとるスタンスのLINEでは、あまりニュースを見たり共有したりしようという意欲が起きない。

こうしてみると、やっぱり、コンピュータは情報学の産物であって数学とはほとんど関係ないことがわかる。
情報学は貪欲かつ恥知らずに堂々と、他の学術分野の成果を利用する。それが数学であれ、哲学や社会学であれ、使えそうなものはなんでも使う。組み合わせて新しい性質を生み出す能力こそが情報学であり、これは人間のあらゆる思考に対して作用する根本原理でもある。

マクルーハンが「話された言葉」と「書かれた言葉」を分け、「数」や「衣服」を「メディアである」と断じたのは慧眼だった。
つまり、人間が想像し認識しうるあらゆるものを情報学では「メディア」として扱うことになる。これほどふてぶてしい学問があるだろうか。

マクルーハンがそうした本を出版した当初は、「デタラメな戯言だ」と批判もされたそうだが、それがデタラメではなかったことはもはやインターネットの普及が証明した。

情報学にとって、AIもメディアに過ぎない。たぶんAIそのものも複数のメディアに分けて考えることができるだろう。

新しい技術が出てきた時、それが結局どういうことを意味するのか、分かる人はほとんどいない。
たとえばAIもそうだし、5Gも、ARもVRも、およそたいていのバズワードがそうだし、YouTubeもYouTuberも、それぞれ別のメディアとして捉えることができるはずだ。

技術というのは偶然と気まぐれによって進歩を遂げてしまう。技術を進歩させてしまう科学者たちの根本にあるのは、個人的な興味だけで、それが社会にどのような影響を与えるかどうかは本人たちにもわからない。発明された新技術はそれぞれが新しいメディアとして捉えることができ、メディアは大なり小なり人類の進歩に影響を与える。そのプロセスを経てまた別の新しい技術(=メディア)が開発される。

でも根本にあるのは、たかがスイッチのオンとオフを、2進数に「見立てる」というアイデアと同じく、「このモノは、どう見立てることができるか」「どんな幻想(イリュージョン)を作ることができるか」というメディア的な見方であり、情報学の本質はおそらくそういうところにある。

そもそも文字の発明だって同じだ。「A」の形に「エー」という音を割り当てようというのも、昔の人間が勝手に決めたルールに過ぎない。ルールを作り、運用させる(たいがいはルールを作るのは情報学によるもので、運用するのは違う人や機械である)ことがメディアの本質だとすると、プログラマーの職能というのはまさしくそれそのものだ。

自動化によって単純労働が減っていき、反対に既存の権威が弱体化し民主化していくと、残る人間の創造性は、まさしくすべての事象をメディア的に捉えて運用する、または新しい幻想を作り出すことになっていくのかもしれない。

おそらくそんな時代の空気を敏感に感じ取った何人かが、プログラミング教育やSTEM教育の必要性に気づき、推進することになったのだろう。推進する本人たちはプログラミング教育の必要性を感じつつも、ほとんど誤解しているか、理解することをやめてしまっている可能性もある。筆者もその一人かもしれない。しかしそれはそれで別に構わない。マクルーハンの時代にも、人々は誤解しながらもメディアや情報学を受け入れていった。したがって、大抵の人に「プログラミング教育がなぜ必要か」がわからないのは、当たり前で、わからなくても、なにかを感じ取ったら、とりあえずやってみるしかない。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG