多くの人にコンピュータサイエンスを知ってもらおうという「13才からのコンピュータサイエンス」シリーズ。今回は「そもそもコンピュータって何?」というお話しです。これは2017年6月に「吉祥寺白熱教室」で講演した内容を4回に分けて公開するうちの第1回です。
コンピュータサイエンスへの関心の高まり
今回はコンピュータサイエンスの根本についてのお話しです。コンピュータサイエンスって、言葉として日本ではまだそんなに定着していないですが、最近は「コンピュータサイエンス」というキーワードで検索してこの「かながわグローバルIT研究所」のサイトを見つけて、訪問される読者の方がとても増えています。コンピュータサイエンスへの関心は着実に高まっていると感じます。
「コンピュータサイエンス」と似た学問分野の名前としては、日本では「情報科学」、「情報工学」、「情報学」など色々あります。それらとコンピュータサイエンスがどう違うのか?今回はそういう分類にはたちいりません。わたしはコンピュータサイエンスの教育を受けてきたし、コンピュータサイエンスが大好きです。いまだにコンピュータサイエンスに関する記事や文献を大量に読んで暮らしている人間です。あまり本質が知られていない感のあるコンピュータサイエンスですが、その楽しさを多くの人に知ってもらいたい。今回はコンピュータサイエンスの基本のき、「コンピュータって何か?」というお話しから始めようと思います。
コンピュータを知り、コンピュータサイエンスを知ろう
上は、講演資料のページを画像化したものです。この記事ではこんなふうに、講演の話の流れに沿って、講演資料を使いながらお話ししていこうと思います。ちなみに、このページに登場しているオレンジ色のロボットっぽいキャラクターは「シイ」というオリジナルキャラクターです。「シイ」、「ピイ」、「ユウ」の三人組の一人です。ペンギンのほうは「ペン」。もう一人、「グイン」というペンギンもいます。
さて、そもそもコンピュータサイエンスって一体何のことか?と普通の方は思われていると思います。一言で言うと、「コンピュータに関する学問」ということになります。その範囲には「コンピュータはどういう仕組みでできているのか、どのようにしてよりよいコンピュータを作るのか」という観点からの取り組みも当然含まれていますが、それだけではありません。「どうやったらコンピュータをもっとうまく活用できるのか」という観点からの取り組み、例えばアルゴリズムやプログラミング言語から、コンピュータによってどうやってよりよい社会を創り出すのか、といったことも全部含んだ、とても幅広い学問分野です。
コンピュータが出現してまだ数十年。その短い歴史でも、コンピュータの仕組みや使われ方は大きく高度化しました。数十年前と今では、コンピュータの仕組みや機能も、使われ方も全然違います。言えることは、社会の中でコンピュータが果たす役割はどんどん広がってきましたし、これからももっともっと広がっていくだろう、ということです。
コンピュータの仕組みや使われ方が大きく変わり続けてきたのと同じように、コンピュータサイエンスも変化し続けてきました。ですので、コンピュータサイエンスは何を解決しようとしているのか、というもの時代によって変わってきましたし、これからも変わっていくでしょう。
ですが、コンピュータサイエンスの根本は、常に「コンピュータ」です。ですので、まずはコンピュータが何なのかを理解することが、コンピュータサイエンスの第一歩ということになります。
わたしたちの日常生活とコンピュータ

わたしたちの日常生活の隅々に、コンピュータが普及しています。パソコン、スマートフォン、タブレット。それだけではありません。お仕事の場面、コンビニのATM、駅の改札口。天気予報や自動車エンジンの中。地図アプリやデジカメの中。
それでは、わたしたちの日常生活には、どんなコンピュータが関わっているのでしょうか。
まず思い浮かぶのは、図の一番上にあようなノートパソコンやスマホ、タブレットだと思います。一般家庭でも、それらは色々な使い方をされていますし、お仕事でも、みんなでわいわいやりながらパソコンなどを使って作業する、というのはよくあることだと思います。
それ以外にも、例えばコンビニに行って、店内のATMでお金おろした時。そのATMの中にもコンピュータは入っていますし、ATMの中にあるコンピュータは、遠く離れたところにあるコンピュータと、ネットワークを経由してやりとりをして、お客さんの大事な口座のお金を管理しています。
例えば、駅の改札口。自動改札があって、その上には行き先表示板があって時刻などが色々書いてあります。この写真の中にもたくさんのコンピュータがお仕事をしています。
皆さんが毎日見る天気予報。そこでは、人工衛星から撮った画像だとか、人口衛星からのデータに基づく気象シミュレーションで作った予報を使っています。
あまり知られていないことの例ですが、自動車のエンジンでもコンピュータが仕事をしています。今では、排気ガスの環境基準をクリアするためには、エンジンのシリンダーの中に、どういうタイミングで、どれくらいの燃料入れるかって、全部コンピュータで制御しないと不可能です。そういういろんな制御のためのプログラムの開発コストが、自動車を開発するコストの大きな部分を占めるようにもなっています。
ほかには、皆さんがスマホで日常的に使うような地図アプリです。GPSというのは、人工衛星からの信号を受信しながら自分の位置を割り出す仕組みですが、その結果を画面上でわかりやすく見せてくれるのが地図アプリです。
コンピュータはスマホだけでなくていろんな機器の中で仕事をしています。例えばデジカメの中にもコンピュータは入っていますし、ほかにも家電や電子機器など、色々なところにもコンピュータがあります。
こんなにいろんな使い方をされているコンピュータですので、「結局、コンピュータって何なのか?」というのは、逆にわかりにくくなってるとも言えます。
コンピュータといえば、ネット、2進数、電気?電子計算機?
もし中学生や高校生に、「コンピュータってなんだと思う?」と聞くと、上のスライドのような答えが返ってくるかもしれません。コンピュータって電子計算機だよね、電気で動いててネットも使えるんだよね、それからコンピュータといえば、0と1なんでしょ、とか。あとはプログラミングなんかカッコイイよね。
それらは確かに外れではないんですけど、「プログラミング」というところ以外は、本質ではないことばかりです。身の回りにあるコンピュータを考えると、確かにそれぞれ当てはまってはいるんですが、それらが当てはまらないコンピュータもたくさんあります。特に、今のコンピュータだけでなく、昔のコンピュータも含めて考えると、こういう特徴はほとんど当てはまりません。
蒸気機関のコンピュータ、10進数を使うコンピュータ

インターネットが普及する以前からコンピュータはありました。ゼロとイチ以外の数字を使うコンピュータもありました。さらに昔には、電気ではなく蒸気機関を動力にするコンピュータも設計されていたのです。 (※1)解析機関(Analytical Engine)作者 Science Museum London / Science and Society Picture Library [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)],ウィキメディア・コモンズ経由で
スライドの右の大きな写真ですが、これは教科書などにも載っていますので、わかる人にはわかるENIAC(エニアック)ですね。1940年代のコンピュータですが、重要なのはENIACに内部は0と1だけじゃなくて、23456789も使っていました。二進数ではなく、十進数を使うコンピュータでした。つまり、0と1だけじゃないコンピュータも十分可能なのであって、今のコンピュータのように0と1で動くというのは必須ではありません。
さらに、スライド左下ですが、これはまだ電気が普及していない1830年代に設計されたコンピュータ「解析機関(Analytical Engine)」です。当時のイギリスの著名な科学者・発明家・数学者であるチャールズ・バベッジが提案して、設計したもので、当時の大英帝国政府はこれに巡洋艦が一隻造れるくらいの莫大な予算を投じました。動力は蒸気機関なのですが、ちゃんとプログラムを使って計算することができますし、なんとプリンタも備えていました。残念ながら、設計当時はいろいろあって実際には完成しなかったのですが、その時の設定図を当時の技術を使って再現したものがイギリスの博物館においてあるそうです。ちゃんと動くそうです、何が言いたいかというと、電気がなくてもコンピュータは可能だ、ということです。
ほんとうにあった「人間コンピュータ」
そもそも、英語の「コンピュータ computer」という言葉は、1640年頃から使われていました。日本ではまだ江戸時代のことです。当然、その当時のコンピュータは今のものとは全く違っていまして、当時は「計算するのがお仕事の人」、つまり計算する職業のことをコンピュータと呼んでいました。
図の下の写真は17世紀よりももっと最近の、20世紀の写真で、宇宙開発で有名なあのNASA(アメリカ航空宇宙局)にいらっしゃった人間コンピュータの方々です。これ1940年代の写真なんですが、この人間コンピュータたちの毎日のお仕事というのは、宇宙開発に必要なさまざまな数値を計算するというものでした。
ちなみに日本でも、こういう職業は当然あったのですが、「コンピュータ」ではなく「計算手(けいさんしゅ)」と呼ばれていたそうです。
コンピュータは「電子計算機」ではない!
それでは結局、コンピュータって何なんでしょうか、
最近はあまり使われなくなったようですが、昔はよく「電子計算機」という言葉で説明されていました。この「電子計算機」ですが、わたしはずっと前から違和感を感じていました。コンピュータを電子計算機というのは、ちょっと違う。でも、もっといい言葉を私も思いつかないです。
「電子」については、電子や電気を使わないコンピュータもあるので本質ではありません。
「計算機」というと、思い浮かぶのはそろばんとか電卓です。確かにコンピュータは計算もできるんですが、計算っぽくないこともやっています。例えば最近は、メールするよりもスマホでLINEやSlackという方も多くなりました。LINEはコンピュータによって実現されているサービスですが、コンピュータがLINEを実現するためにやっていることが「計算」であるというのは違うと思います。
「電子計算機」という呼び名がコンピュータの特徴を表してないのが問題です。ただ、日本語でほかにいい言葉はみあたりません。
最近、子ども向けにプログラミングとか、コンピュータが流行っていますが、「そもそもコンピュータとは、〇〇な機器のことです」という根本的な定義から始まる本は見ないです。コンピュータが社会のあちこちに広まったことで逆に、「コンピュータとは何なのか」がとてもわかりにくくなっていると思います。
コンピュータは「情報機械」
それでは、コンピュータは何なのか?
まず、コンピュータは電気で動かなくてもいいし、ネットにつながらなくてもいいし、0と1以外の数字を使っても構わないし、人間であってもいいです。
しかし、今まで紹介したいろいろなコンピュータに共通することがあります。それは、「情報を作っている」ということ。さらに言うと、「情報を作る」というコンピュータの働きは、プログラムという「情報」によってコントロールされているということです。
つまり、プログラムという情報を与えると、それに従って情報を作る。プログラムを変えると、違う動きをして、違う情報を作り出す。このような特徴を持ったものがコンピュータであると言えます。
人間コンピュータも実はこのような働きをしていますし、いままで紹介したコンピュータは全て、この2つの条件を満たしています。
これが、コンピュータサイエンティストにとってのコンピュータです。コンピュータは、機械であっても、人間のような生き物であってもよい。ただ、「情報を作っていて、情報によって動いているもの」は何であってもコンピュータとして考える。いろいろなコンピュータがありますが、それらを原理的に同じものとして扱うという点が、コンピュータサイエンスの面白いところだと思っています。
それでは「情報」とは何でしょうか?次回「コンピュータって何だろう編(2)」に続きます。
(かながわグローバルIT研究所 森岡剛)