子供に教えるコンピュータ

## はじめに

2015年元日、新年明けましておめでとうございます。
一児の父親として、息子にどうやってコンピュータを教えようかあれこれ模索しているところです。今年はそんな思いをより具体的な行動へと移していく1年にしたいという思いから投稿しました。あまりまとまっていない文章で恐縮ですが、日本の未来を担っていく子供達をしっかり育てていきたい。その出発点として、まずは一番近くにいる息子に自分が専門としているITを教えることからはじめていきたいと考えています。

私がはじめて[PC-8001](http://ja.wikipedia.org/wiki/PC-8000%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA#PC-8001)というパーソナルコンピュータに触れて、『はるみのゲームライブラリー』という本に書かれたプログラムを意味も分からず打ち込んでいたのが息子と同じ歳のときでしたので、そろそろ息子にもコンピュータについて教える時期がやってきたと考えています。

ただ、自分達が生まれ育った時代と違い、今の子供達は生まれたときからインターネットにつながる環境があり、小さい頃からiPadやAndroidなどのタブレットを使って、YouTubeで動画を見たり分からないことをGoogle先生にも聞いたりできます。昔に比べ身近に詳しい人もたくさんいますし、お父さんやお母さんから教えてもらえる子供も少なくないでしょう。

息子にコンピュータの専門家になってほしいと特に思っているわけではありませんが、あらゆるところでコンピュータが使われているこの時代、たとえ専門家ではなくなても、それなりに使いこなせる素養を身につけてほしいと考えています。

『コンピュータを使いこなせるように』といっても、その意味は多岐に渡ります。コンピュータには便利なアプリケーションが豊富にあり、WordやExcelのように学校や仕事で使うアプリケーションを上手に使うことも『使いこなす』ですし、今後、3Dプリンターが産業を大きく変えていくことを見据えてコンピュータを使った3D設計に慣れ親しんで使いこなせるようになることも有益かもしれません。

そうした中でも、やはりプログラミングを教えたいと私が考えているのは、コンピュータやその上で動くアプリケーションがどのように動いているかを理解してほしいと考えるからです。アプリケーションを設計する側の考え方が分かれば、どのようにアプリケーションが動くかが分かるようになりますし、必要に応じて自分でアプリケーションをつくれるようになります。

## 子供に教えたいプログラミング言語

自分がはじめて触れた言語はBASICでした。コンピュータの電源を入れたらすぐにプログラムをはじめることができ、LOCATE文やPRINT文など簡単な命令で文字や記号を画面に表示したり、LINE文で図形を描いたりすることができ、プログラミングを学ぶには手軽なものでした。

それでは、今の時代の子供達に教えるにはどのプログラミング言語がよいでしょうか。
賛否両論色々とあるかと思いますが、私は『JavaScript』がよいと考えています。

その理由として、何よりJavaScriptはブラウザ一つあればすぐにはじめられる点があります。JavaやC/C++はコンパイル等の開発環境が必要ですし、RubyやPythonも環境によってインストールが必要になるでしょう。JavaScriptで図を描いたり絵を表示することもHTMLを使って簡単にできて、なんというか、昔BASICを学んだときのあの手軽さを感じます。
そして、何より注目すべきはJavaScriptの将来性です。JavaScriptが出てきた当時はフォームの入力チェックや動的にHTMLページを飾ったりする程度の認識しかありませんでしたが、Ajax技術を用いたWebアプリケーションの登場とjQueryをはじめJavaScriptライブラリの充実化、それらに対応すべく大幅に改善された実行速度には目を見張るものがあります。また、スマートフォンやタブレット上で動作することや、[Node.js](http://nodejs.org/)の登場によってサーバ上で動作するようになるなどJavaScriptの使用用途が広がっている点も気になるところです。

2014年は、[『息子に教えるJavaScript』(js4son)](http://js4son.blogspot.jp/)と題して、ちょっとしたプログラム例を挙げて、息子に少しずつJavaScriptを教えようと試みました。キーボードのタイピングにもまだ慣れておらず、人差し指で一文字ずつ入れているような状態でしたが、習うより慣れろ式に継続的に続けていけば、そのうちにプログラムを組めるようになるだろうと考えています。2015年も引き続き試行錯誤を繰り返しながら、記事を執筆していきたいと思いますので、よろしくお願いします。

## Hour of Code

本当に教えたいことは『プログラミング言語』そのものというよりは、コンピュータをどのように動かすかという考え方です。

その点において、MITが開発した[Scratch](http://scratch.mit.edu/)やGoogleの[Blockly](https://developers.google.com/blockly/)のように、制御ブロックを組合せることでプログラミングができる子供向けの学習環境は学びやすいかもしれません。

子供が継続してして学んでいくうえで何より重要なのは『おもしろさ』です。この冬、楽しみながら学べる良い方法はないかと思い、息子とはじめたのが[Hour of Code](http://code.org/)です。パズルゲームを解く感覚で楽しみながらプログラミングの制御構造である繰返しや条件分岐の使い方を、Blocklyを使って学ぶことができるサイトです。

![Hour Of Code](http://1.bp.blogspot.com/-Bfr82L7xK4w/VI1cYOdkyHI/AAAAAAAAhaA/EMy909MbcLg/s1600/frozen.png)

## Khan Academy

[Khan Academy](https://www.khanacademy.org/)は、創始者のサルマン・カーン (Salman Khan)氏が、いとこに家庭教師として数学を教えることからはじまったオンラインの学習サイトです。数学だけでなく、コンピュータ、科学など様々な分野の授業を無償で受講することができます。大学の講義を受講できる[edX](https://www.edx.org/)や[Coursera](https://www.coursera.org/)と同じく、今や世界中の子供から大人まで学習に活用しています。
![Khan Academy](http://1.bp.blogspot.com/-FV4kpW5AawQ/VKTlu0SxvsI/AAAAAAAAhao/aFI6fiSCdvE/s1600/khanAcademy.png)

## おわりに

この記事が同じ思いを持つお父さん方、お母さん方の何らかのヒントになればさいわいです。そして、10年後、20年後の日本が引き続きIT先進国であり続けるために、日本の未来を担っていく子供達にどのようにIT教育をしていくかを考えるきっかけになればと考えております。

昔と違って今の時代は学習する環境が整っています。学びたいという気持ちがあれば、年齢や住んでいる場所に関係なく、ほとんどお金をかけることなく様々なことを学ぶことができる時代です。いかに子供達の自発性をどのように育んでいくかがとても重要で、子供達には学べるときにたくさんのことを学んでいってほしいと願っています。

今の時代に生まれた子供達は、私達とは生きている世界がまるで違います。子供が親よりも賢くなるのはある意味で当然なのかもしれません。ですから、この年齢でこの内容は難しすぎるから・・・といった私達が経験してきたこれまでの常識にとらわれるすぎることなく、まずは自分達が知っている知識をできるかぎり子供に伝えていくことが大切です。そして、子供達には、私達のはるか先を目指していってほしいと思っています。

ここ半世紀のあいだに目覚ましい進化を遂げたコンピュータ。今から30年後の2045年には人工知能が人間の知能を越える『技術的特異点』が訪れるとも言われており、コンピュータが人間世界を支配するという設定のSF映画もよく目にします。
ある点において、人工知能が私達人類の知能を凌駕していくことは間違いないでしょう。しかし、人類が生まれながらに持っている脳や人類の文明も驚くべき速さで進化・発展を遂げ、私達人類がこれから先もずっとコンピュータを上手に使いこなしていくだろうと考えています。

そのような将来、コンピュータを動かすのはもはやプログラミングという命令語のかたまりではなく、『コンピュータ心理学』ともいうべき新しい学問なのかもしれません。