子どものIT教育に本当に必要なのはプログラミングではない


あ、ども。よく初対面の人に「お子さんはおいくつですか?」と聞かれる独身のrintaです。

インターネットが流行りだしてもうすぐ20年、ようやくIT教育が注目されるようになってきました。
すでに海外では義務教育にプログラミング教育を導入している国もあります。[1][2]
日本でも2012年から中学校の技術家庭科でプログラミングの授業が行われているそうです。[3]

今回は義務教育までを対象とした子どものIT教育について私見を書いてみます。

具体的に何を学ぶべきか

インターネット技術はまだ発展段階ですが、すでに様々な技術があり多様化しています。
すべてを知っている人はもういないでしょう。
子どもたち全員が将来エンジニアになるわけではないので、極端に専門的な知識は必要ありません。

授業として教えるべき内容や、どのレベルまでを目標にするかは人によって異なると思いますが、

「パソコンやインターネットの仕組みを理解し、OS・サーバ・プログラミング言語等を使って簡単なシステムやサービスが作れるようになること」

と、とりあえず定義してみます。
どのレベルまで理解するかも意見が分かれそうですが、概要を人に説明できるレベルで良いのではないかと。

ハードウェアも教えるべき

ソフトウェアはパソコンだけ使えばできますが、ハードウェアはいろいろと部品が必要になります。
導入の敷居は高いかもしれませんがハードウェアも授業で教えるべきです。
ハードウェアとソフトウェアは両方できて一人前です。

CPU、メモリ、ハードディスク等について教科書で説明されても、おそらく多くの人は興味を示さないと思います。
実際にパソコンを自分で組み立てて、OSをインストールして動かしてみる方が理解が深まります。

最近はKanoのような子ども向けPCキットもあります。[4]
学校でパソコンを自作する授業があっても良いのではないでしょうか。

子ども向けではないかもしれませんが、複数のPCを使ってLANを構築したり、WEB・DNS・DBサーバ等を構築したり、ゲートウェイやブリッジを作ったりすることも一度は経験して欲しいです。
(家のルータの設定ぐらいは誰でもできるようになって欲しい)

プログラミングは英語と一緒

どちらも言語です。
英語は人とコミュニケーションするためのものですが、プログラミングはコンピュータとコミュニケーションするためのものです。こちらから一方的に命令するだけですが。
時間をかければ誰でもできます。そしてどちらも使ってないと忘れます。

子どものうちから授業でプログラミングの経験を積んでおくことは良いことだと思います。
ただ導入方法を間違えると、日本の英語教育のように「単語と文法はわかるけど英会話はできない」と同じことになりそうです。

プログラムを書く上でプログラミング言語の仕様を学ぶ必要はありますが、それを使って何を作るかの方が大事です。
まずはHTMLでホームページを作るとか、JavaScriptで動的なページを作るとかで良いと思います。
今ならUnityからでも良いかもしれません。個人的にはC言語から学んで欲しいですが! [5]

最近のプログラミング言語はライブラリが充実していて、簡単な四則演算だけでたいていのプログラムが書けます。
例えばどのプログラミング言語にもあるRandom()みたいな関数は、最小値と最大値を入れるだけで乱数を返してくれますが、どうやって擬似乱数を生成しているのか全員が理解して使っているでしょうか?[6]

道具を使うだけではなく、道具の仕組みを理解して使うように教えるべきです。
プログラミングに限らず、道具や言語はたくさん使って慣れることと、その仕組みを理解して使うことが大事だと思います。

教える先生がいない

という話もよく見かけます。
教える先生も事前に同じ課題に取り組むぐらいは必要あると思いますが、エンジニアスキルはほとんど必要ありません。

わからないことがあれば検索させれば良いです。先生も一緒に検索しても良いかと。
子ども向けにフィルターは必要かもしれませんが、一般的なスキルとして、検索に慣れることも必要です。
検索の仕方も最初に授業で教えた方が良さそうです。[7]

10年後にプログラミングは不要になる

ここまで書いておいてアレですが、たぶん10年後にプログラミングはほとんどの人が書く必要がなくなっていると思います。
Unityみたいなコードを書かなくても簡単に作れる開発環境が進化していくと、テキストエディタを編集してコードを書くことは時代遅れになっている可能性が高いです。

それでも基本的な仕組みを知ってることは大事ですし、考えてモノを作ることは必要なことです。
10年後に何が主流になっているかはわかりませんが、より便利な道具があればみんなそれを使っているはずなので、また使い方を覚えれば良いだけです。

本当に必要なのは適応力

基本的なことを知っていれば、新しい道具や言語にも対応できるはずです。
一番大事なのは新しいものに適応していく力だと思います。

新しいものに対する知的好奇心と、今持ってる知識で何かを作ったり問題を解決したりする経験が必要です。
そして知識や経験が増えれば全体を俯瞰して考えられるようになり、プログラミングに限らず様々な問題に対して応用することができます。

プログラミングの書き方を覚えることは重要ではありません。
自分で考えて何かを作ること、問題を解決することが重要なのです。
そのためには自分で考える癖を子どもの頃からつけさせる必要があります。
答えだけ教えて丸暗記させるのは良くない教育手法です。
自分で考える力を養うためにプログラミングを教育に使うのは大賛成ですが、ソースコードをコピペして動かすだけの授業ならやらない方が良いです。

子どもの適応力を育てるには、以下の2点が大切だと考えています。

・わからないことをそのままにさせないこと
・基本だけ教えたら自分で考えて解決するような課題を与えること

大人になってから適応力を伸ばす方法

よく年を経ると新しいことが覚えられないと言いますが、そんなことはありません。
若い頃より効率は落ちますが、適応力を伸ばすことは大人になってからでもできます。

エンジニアの場合、デスマーチとか障害対応とかを経験すれば適応力が上がります。その代わり寿命が縮まりますが。
これらはできれば避けたいことなので、適応力を伸ばす別の方法を私の経験則でいくつか挙げてみます。

1. 一人旅に出る

・異文化に適応することが良い訓練になります。
・言葉が通じない国に行くべきです。英語圏は甘え。
・治安が悪すぎる国はオススメできませんが、経験値は多く稼げると思います。
・10代後半にスペイン語の辞書だけ持ってメキシコに一ヶ月程行きました。なんとかなるものです。

2. 量子力学を学ぶ

・新しいものへの抵抗はなくなると思います。
・ついでにたいていのことには驚かなくなります。
・個人的には砂川重信さんの量子力学がわかりやすかったです。[8]

3. リアルタイムストラテジーゲーム(RTS)をやる

・操作が忙しいので疲れますが、戦略性のあるゲームをやるのは良いと思います。
・並列作業の訓練にもなります。
・おもしろいのですが時間を吸い取られます。やり過ぎると後悔します。[9]

まとめ

義務教育でIT技術を教えることには大賛成です。
プログラミングだけでなくハードウェアも教えて欲しい。検索の仕方も教えて欲しい。

自分で考えて作るような授業であれば、プログラミング教育はやるべきです。
10年後にプログラミングが不要になる可能性もありますが、それでもやる価値はあります。

本当に必要なのはプログラミングではなく適応力、知的好奇心、自分で考える力です。
子どもにはわからないことをそのままにさせず、自分で考えて問題を解決するような訓練をさせるべきです。
プログラミング教育は導入の仕方によってはその手段になり得ます。

ここで言う適応力が弊社が掲げる「いきる力」に近いのではないかと思います。

リファレンス

[1] 小学校でプログラミング必修に 使うツールは教師が選び、国はシェアを促進――フィンランドの教育現場の「責任と自由」
[2] イギリスは義務教育(5-16歳)公式カリキュラムにプログラミング教育を導入–9月施行にさきがけYear Of Codeキャンペーンを助成
[3] プログラミングが義務教育に!政府の成長戦略素案に盛り込まれたプログラミング教育の内容とは
[4] Kano
[5] 私はFORTRANからでしたが!
[6] 知らない人は「モンテカルロ法」で検索!
[7] と書いてみたものの、小学生に検索させるのはちょっと厳しいかも。
[8] 量子力学 砂川重信著
[9] Age of EmpiresStarCraftが好きでした。最近はやってないです。