最近ようやく、コンピュータサイエンスへの関心が日本においても高まってきたようです。米国では「コンピュータサイエンス学科」が出来たのは1960年代のことですが、日本はながらく、モノ作りのための工学の枠組みでコンピュータを捉えることが多く、もっと広い学問領域である「コンピュータサイエンス」が存在したことは長らくありませんでした。

今回は、日本にありがちな「コンピュータサイエンスへの10の誤解」を通して、コンピュータサイエンスとは何か、を考えてみたいと思います。

コンピュータサイエンスへの関心が高まっていますが、日本に定着していないこの学問分野への誤解もあるようです。

今回取り上げるその「10の誤解」とは以下です:

  1. コンピュータサイエンスとはコンピュータの作り方の学問である。
  2. コンピュータサイエンスとはコンピュータの使い方の学問である。
  3. コンピュータサイエンスとはアプリの作り方の学問である。
  4. プログラミングを教えればコンピュータサイエンスも身に付く。
  5. コンピュータサイエンスは一般人の日常には影響を与えない。
  6. コンピュータサイエンスは「情報工学」と同じものだ。
  7. コンピュータサイエンスは理系オタク男子の領域だ。
  8. コンピュータサイエンスはロボットとか電子工作が好きでないとできない。
  9. コンピュータサイエンスを勉強すると金持ちになれる。
  10. コンピュータサイエンスは難しい。

 

誤解1:コンピュータサイエンスとはコンピュータの作り方の学問である。

これ、本当によくある誤解です。名前から素直に考えた結果生まれる誤解だと思いますが、確かにそう考えてしまうのも仕方ないですね。実は「コンピュータサイエンスとは何か?」というのは、コンピュータサイエンスの専門家の間でも統一見解がありません。まだ生まれて数十年しかたっていない若い分野ですし、その短い期間に途方もない技術革新を生んで社会そのものを変えてしまうくらいのすごい学問領域ですので、その過去・現在・未来を全て含むいい名前が無いのが現状なんです。「コンピュータサイエンス」もアメリカとカナダなど北米での主な呼び名で、欧州では「インフォマティクス infomatics」と呼ばれることも多いですし。

「コンピュータサイエンスとは何なのか」について統一見解が無いことについては、以下に詳しいです:

  • Matti Tedre. 2014. The Science of Computing: Shaping a Discipline. Chapman & Hall/CRC.

しかし、「コンピュータサイエンス=コンピュータの作り方」と言ってしまうことは、

  • 「天文学=望遠鏡の作り方」
  • 「素粒子物理学=粒子加速器の作り方」
  • 「料理研究家=料理道具の研究家」

と言ってしまうくらいの大誤解です。

コンピュータの作り方も、確かにコンピュータサイエンスの一部と言えます。(欧米の大学ですと「コンピュータ工学」(computer engineering)としてコンピュータサイエンスとは別の学科にしているところもありますが。)

しかし、コンピュータサイエンスの全てがコンピュータの作り方に関するというのは大きな誤解です。

コンピュータサイエンスとは、

  • 世の中の現象を「情報の流れ」として表現し、
  • その「情報の流れ」の理解、改善、または創造に関する学問

と考えることができます。「情報の流れ」を担うのはコンピュータだけでなく、人間もその要素として機能します。コンピュータサイエンスが作るのは、コンピュータだけでなく、「情報の流れ」の仕組みである、というほうがその本質に近いでしょう。

こちらもどうぞ:

 

誤解2:コンピュータサイエンスとはコンピュータの使い方の学問である。

これもよくありますね。コンピュータサイエンス教育としてWORDとかEXCELとかデータベースの使い方、スマートフォンやタブレットの操作方法を教える、などもありそうです。

誤解1で使った例えを流用すると、「コンピュータサイエンス=コンピュータの使い方」と言うことは、

  • 「天文学=望遠鏡の使い方」
  • 「素粒子物理学=粒子加速器の使い方」
  • 「料理研究=料理道具の使い方」

という誤解と同じ種類です。

ちなみに、コンピュータサイエンス研究者がコンピュータのベテランユーザかというとそうではありません。世界的に有名なコンピュータサイエンティンストで、Eメールを一切使わず秘書に対応させていた方もいますし、GUIが苦手でテキストベースのUIばかり使う方も知っています。

ツールとしてコンピュータを自分で使いこなすことは、コンピュータサイエンスとは一切関係ないと言って間違いないでしょう。

例えば、科学の分野でのコンピュータの使い方を、コンピュータサイエンスの立場で紹介した記事:

 

誤解3:コンピュータサイエンスとはアプリの作り方の学問である。

プログラミング教育への関心が高まっていますが、プログラミングとコンピュータサイエンスは全く別物です。というか、プログラミングはコンピュータサイエンスの中の小さな一部に過ぎません。

アプリやソフトウェアを作るスキルはもちろん大事ですし、それらをうまく作れるようになるには訓練と研鑽が必要です。多様な開発ツールやプログラミング言語、ミドルウェアやクラウドサービスなどを組み合わせて、新しいアプリを作ることは社会にとっても個人にとっても大事なスキルです。

しかしそれは、料理を作る人が料理研究をしているとは言えないように、アプリを作るからといってそれはコンピュータサイエンスではありません。

ただ、「アプリを作る」「ソフトウェアを作る」という作業自体を「情報の流れ」として捉えて研究する「ソフトウェア工学」は、コンピュータサイエンスの重要な構成要素の一つです。

なぜ「アプリを作る」という作業が「情報の流れ」かというと、「こういうアプリが欲しい」という情報が、「コンピュータで実行可能なプログラム」という情報に変換されていくプロセスだからです。このプロセスにおいては、開発者は情報変換を行うエージェントですし、開発者が使うツールも同様に情報変換のエージェントということになります。

 

皆さんのよく知るソフトウェアとアプリについては以下をどうぞ:

 

誤解4:プログラミングを教えればコンピュータサイエンスも身に付く。

誤解3と合わせて考えれば、答えは明らかですね。プログラミングをいくら教えても、コンピュータサイエンスは身に付きません。また、コンピュータサイエンスのエキスパートになるために、プログラミングのエキスパートである必要はありません。

建築家が、エキスパート大工である必要が無いのと同じです。建築家は、建物を建てる方法を知っておく必要はありますが、自分でそれができる必要はないですね。

コンピュータサイエンティストも、プログラミングを知っておくことは必要ですが、そのエキスパートである必要はないのです。

 

誤解5:コンピュータサイエンスは一般人の日常には影響を与えない。

日本では特にコンピュータサイエンスの認知度が低いので、このような誤解もよくあります。

皆さんが毎日ように使っているインターネット、HTTP、ブラウザ。これらはコンピュータサイエンスの大きな成果です。

ネットで買い物するときに、カード情報を安全に送信するための暗号。これもコンピュータサイエンスです。

まだまだありますが、このように、あまり知られていないコンピュータサイエンスが、私たちの生活を縁の下の力持ちとして支えてくれているのです。

 

具体例を知るには以下の記事もどうぞ:

 

誤解6:コンピュータサイエンスは「情報工学」と同じものだ。

うーん、ちょっと難しいですね。わたしは日本で高等専門学校の情報工学科を出て、カナダでコンピュータサイエンスに進みました。その経験から言うと、

  • 日本の「情報工学」は電気工学から派生した側面が強い
  • 北米の「コンピュータサイエンス」は数学から派生した側面が強い

です。日本の各分野で見られる、「モノ作り重視」「モノ作りへの偏重」ですね。

コンピュータサイエンスも、作りますよ。でもそれは手で触れるものではないことが多いです。「情報の流れ」の仕組みを作るのですから。例えばアルゴリズム。暗号化アルゴリズムなどはわたしたちの日常に不可欠ですが、アルゴリズムも「入力データを出力データに変えるための、情報の流れ」を記述したもの。「情報の流れ」の仕組みです。

かといって、情報工学とコンピュータサイエンスが全く別物かというとそうではなく、相当な部分が重複しています。

コンピュータサイエンスとは、

  • 自然界に存在する情報の流れの仕組みを解き明かす、自然科学
  • 自然法則を用いて情報の流れの仕組みを構築する、工学
  • 情報の流れの仕組みの法則を解明する、数学

のそれぞれの要素を兼ね備えているからです。日本の「モノ作り重視」ですと、工学的要素が強調されてしまうのですが、外国でいうコンピュータサイエンスはもっともっと広い分野をカバーしているのです。

関連記事です:

 

誤解7:コンピュータサイエンスは理系オタク男子の領域だ。

まず、人間を「理系」「文系」に分ける悪習は日本独特のものですので忘れましょう。

好きなことを追及するのが「オタク」であるとすると、コンピュータサイエンスだけでなく、全ての学問はオタクの領域ですね。

「男子の領域」というのは、否定できません。コンピュータサイエンスで活躍する女性も世界には数多いですが、男性と比べると少数派です。これについては、海外でも様々な取り組みがなされているところです。

わたしとしては、コンピュータサイエンスの楽しさを知らないままの食わず嫌いの方が多いのがもったいないと思っています。一度しかない人生ですから、楽しく生きたいじゃないですか。コンピュータサイエンスを知ったほうが楽しく生きられる人は多いと思いますので、できるだけ多くの人にコンピュータサイエンスの楽しさを届けたいと思っています。

 

誤解8:コンピュータサイエンスはロボットとか電子工作が好きでないとできない。

ロボットや電子機器は、見てわかりやすいのでニュースなどになりやすいですね。人工知能(AI])の成果としても、よくロボットが取り上げられるようです。

しかしこの記事をここまで読んできた読者にはおわかりと思います。ロボットや電子機器の中を流れる情報の仕組みはコンピュータサイエンスの領域ですが、それ以上でもそれ以下でもありません。

ロボットや電子工作が好きな人は、コンピュータサイエンスもやっていると思います。しかし、ロボットや電子工作と無縁で、コンピュータサイエンスを楽しむことは十分可能です。(わたしもその一人です。)

 

誤解9:コンピュータサイエンスを勉強すると金持ちになれる。

最近のプログラミング教育フィーバーでは「プログラミングを子どもに教えると金持ちになれる、なぜならば米国のITベンチャー創業者の多くがコンピュータサイエンス学科出身だからだ」的なよくわからない売り文句に出会うこともあります。

日本ではコンピュータサイエンスが根付いていないので、こういう売り文句が出てきてしまうのですね。「日本の社長の多くは経済学部出身だ、だから経済学を教えるとあなたの子どもは成功者になれる」と言われて納得しますか?しないですよね。(社長の出身学科が経済学部が多いかどうかは知りません。ただのたとえです。)

1960年からの伝統を持つ北米のコンピュータサイエンス。卒業者や博士もたくさんいますが、その全員が金持ちではありません。当たり前のことですね。

 

誤解10:コンピュータサイエンスは難しい。

世の中に簡単なことって、ないのではないでしょうか。それが好きな人には簡単に感じられる、好きでない人には難しく感じられる。それだけのように思います。

コンピュータサイエンスは、数ある問題解決スキルの一つである、とも言えます。コンピュータサイエンティストは、問題を情報の流れとして捉えたうえで、その理解・改善・構築のためにコンピュータサイエンスのスキルを使います。他の分野と比べて難しいか簡単か、という問いには意味がなく、物の見かたが違うだけです。

いかがでしたでしょうか。今後もコンピュータサイエンスの本質を伝えていけるような情報発信と、おもちゃ開発で、日本におけるコンピュータサイエンスの発展に貢献していきたいと思っています。

(かながわグローバルIT研究所 森岡剛)