小中学校にプログラミング教育が必修化されることになり、これからプログラミング学習が行われるようになります。
ニュースなどでも、教育界ではプログラミング学習が話題になっています。
しかしこれだけプログラミングについて話題が挙がっていても、コンピュータの活用全般を取り扱っている学問分野、「コンピュータサイエンス」の関心度はイマイチのようです。
同じコンピュータ関係なのに、どうしてここまで差がついているのでしょうか?
プログラミングとコンピュータサイエンス、それぞれについて紹介します。
プログラミング学習とコンピュータサイエンス
日本では2020年から、小中学校でプログラミング学習が行われることが決まっています。
学校の現場はもちろん、これからプログラミング学習を受ける生徒や保護者については、今から色々な準備に追われているのではないかと思います。
日本中でプログラミング教育に対する関心度が高まっていて、これは社会全体に対するコンピュータへの重要度が高まっている、と考えることもできるでしょう。
ただ活性化を見せているプログラミング学習に対して、関心がイマイチなのが「コンピュータサイエンス」です。コンピュータサイエンスとは、コンピュータの活用全般を扱っている学問の分野なのですが、プログラミング学習とは裏腹に関心度はあまり高くはないようです。
プログラミングというのは、様々なコンピュータを稼働させるための手段であり、コンピュータサイエンスについても、プログラミングスキルのひとつになります。そのためこちらも、同じように盛り上がりを見せてもいいはずです。
例えば、ルンバなどの電化製品の重要性が高まっています。
この電化製品が故障した時に、修理に必要な工具や使い方、管理方法などを学習するものです。そもそもルンバを動かすために必要な部品や、全体的な構成についての教育は何一つ考えている人はいないと思います。コンピュータとは、何もゲーム機だけに入っているわけではありません。
もちろん全く関心がないわけではないかもしれませんが、人間が生活をするためには、とても大切な部分です。
プログラミング学習と同じとは言いませんが、それに近いほど関心度があってもいいのではないかと思います。
コンピュータサイエンスの歴史や内容
コンピュータサイエンスはアメリカの学問であり、1962年にPurdue大学で誕生しました。
アメリカでも初めてとなる学科で、コンピュータサイエンスという学問は誕生してから、主としてアメリカやカナダといった、北アメリカの大学でよく使われるようになりました。
コンピュータサイエンスと同じ分野の学問は、ヨーロッパではインフォマティクスと呼ばれることもあります。コンピュータサイエンスには「サイエンス」という言葉が使われていますが、コンピュータのサイエンスとはどういうものなのでしょうか?
サイエンスは英語で科学のことですが、コンピュータサイエンスと聞くとコンピュータの科学、すなわち理学系の分野をイメージする人もいるかと思います。確かにそういった面もあるのですが、必ずしもそうとは言えない面もあります。
理学は自然法則の発見が主な目的になっていて、実際のところコンピュータサイエンスは情報に関係した自然法則を探求する面を持っています。
ただ、それだけではないのです。
理学には自然法則を探求する以外に、より便利なものを創造する、という工学の面も持っています。また実験だけでなく、数学のように法則を論理的に導き出すような性質もあるのです。コンピュータサイエンスは理学を始めとして、工学や数学という3つの分野を持った学問になり、一般的なサイエンスとは言えない側面も持ち合わせています。
コンピュータサイエンスの本質とは
プログラミング学習のように、イマイチ盛り上がりに欠けているコンピュータサイエンスですが、その名前とは裏腹にコンピュータに関係したものではない、つまりコンピュータを学ぶ分野ではありません。
ここで疑問が出てきますが、そもそもコンピュータとはどういうものなのでしょうか?
コンピュータというのは、身近な存在でもあるパソコンをイメージすれば分かりやすいと思います。
パソコンは「様々な情報を動かしている」、「情報によって稼働している」といった特徴を持つ機械であり、情報機械でもあるのです。コンピュータは、社会はもちろん私たちの日常生活の中でも活躍しています。
家庭やオフィスなど、様々なところでコンピュータは活躍していて、コンピュータなしの企業や全く扱っていないような学術研究は皆無と言っていいでしょう。
以下のように、コンピュータの活躍が分かると思います。
「インターネットを通じた安全通信の実現」
「新しい飛行機や自動車などを稼働する前に、コンピュータによってシミュレーションして安全性や妥当性などを確認する」
「TwitterやFacebookなどの SNSを利用して、世界中の人と情報を共有する」
「ICカードを利用してバスや電車を利用できる」
「センサーや無線通信などを組み合わせることで様々な調査を行う」
「天体の重力波の痕跡などを検知する」などです。
コンピュータは様々なことに使われていて、それぞれの関連性が薄いようにも見えますが、コンピュータの性質として共通しているのは「情報を動かす」、「情報によって動く」という特性です。
それを利用して人間の生活が快適になるように、様々なことを実現しているのです。
人間の社会を大きく変えることができるのが、コンピュータサイエンスという分野なのです。
コンピュータサイエンスの専門分野とは
コンピュータサイエンスは様々な役割を持っていますが、その中には以下のように、確立されている専門分野がいくつかあります。
◆科学技術計算「scientific computing」
科学技術計算は、航空機にある翼の流体力学的特性のシミュレーションや金融工学のリスク分析、さらに天文物理学の観測データの解析などを行っています。
◆人工知能「artificial intelligence」
経験や蓄積などのデータを基に学習できる、コンピュータシステムを構築します。
◆計算言語学と自然言語処理「computational linguistics and natural language processing」
日頃使用している言語(自然言語)で、コミュニケーションが可能なコンピュータシステムを構築します。
◆コンピュータグラフィクス「computer graphics」
コンピュータを使用して画像を作ったり、コンピュータ内にカメラを配置して画像を撮影したりします。
◆コンピュータビジョン「computer vision」
見るという視覚で、周囲の環境を理解できるコンピュータシステムを構築します。
◆コンピュータシステム「computer systems」
コンピュータシステムを構成してくれる、ハードウェアとソフトウェアを構築します。
◆ソフトウェア工学「software engineering」
最も複雑な工芸品、artefactと呼ばれるソフトウェアを製作しています。
プログラミング学習とコンピュータサイエンスはそれぞれに特徴がありますが、コンピュータサイエンスの盛り上りが今一歩のようです。
コンピュータサイエンスはプログラミング学習と同じように、人間の社会生活にとっては、なくてはならない大切な学問と言えます。
コンピュータサイエンスには、いくつか確立されている専門分野があり、様々な役割を担っています。
今後の日本の未来を担えるのは、実はコンピュータサイエンスのエキスパートかもしれません。