小学生にプログラミングに興味を覚えてもらい、遊び感覚であっても汎用性のある学習が出来る教育プランを考えてみた。
【背景】
小学生にとっては子供同士で遊ぶこと(人間関係の実感の第一歩!)、基礎体力、音楽(個人的趣味ですが、、)が一番大切なのではと考えている。周囲の子供が小学校低学年から、塾に行きまくっているのを驚いている。しかし、それだけ学習に時間を費やすなら、プログラミングに触れる機会があっても良いのでは。
一般的な小学校の授業でカバーされていないが大切な教育分野の一つにプログラミングがあると思われる。
これは今後数十年、日本で必要とされる頭脳労働のニーズが先ず間違い無く統計処理を必ず伴う分野であり、恐らく次世代を担う子供たちに必須の技能になるかと思われるから。自分の周りで言えば、Genome Project(ゲノムDNAの解析)に大陸を超えてリクルートされた科学者は自然言語の解析をしていた。両方共「情報」を扱う仕事であり、プログラミングの基礎は必須である。私の本職の一部である分子生物学が今明らかにピークを越し、システムバイオロジー的な考え方が生命科学の理解には必要。医学は生命科学に直結し、この停滞した経済の中、ITと医療産業だけは高齢化と相まって、日本国内で圧倒的な右肩上がりの分野になっている。また、この高齢化に対応する医療という分野では日本は宿命的に世界の先駆けにならざるを得ないが、それは成功すれば長期的に武器になる可能性がある。「膨大な情報をどう意味のある形にするか?」その考え方を身につける日本人が増えることは、日本が世界で生き延びるための頭脳労働の鍵の一つに思える。
小学校中高学年ぐらいからプログラミングに触らせる機会を設けて、興味を持った子にはどんどん機会を与えて良いのではないだろうか。ゲーム機よりもハマれば面白い分野である。
子供に対しての教育は「最低限の基礎知識を与えつつ動機付けをする」ことに尽きるように思える。つまり、「やりたい」と思える機会を与えること。 「やりたい」と思えるためには「それで何が出来るのか」がイメージ出来て「自分でもできそう」と感じることが大切。小学生に対してこの目的を達成することが、この教育プランの目的である。
四則演算が何とかなり始めるのが小学校3−4年。その辺りを対象に。
【プログラミング教育プランの私案】
小学4年ぐらいまで:Scratch
引数と戻り値の概念が明確でないが、オブジェクト指向になっている
次のステップ:Ruby + Shoes + Ruby/SDL
やはり小学校高学年程度では目に見えたり耳に聞こえたりすることが大切に思える
ここではObject Oriented Programing(OOP)とClassについて学ぶ。ついでに実用の面ではMVCについて
次のステップ:Assembler
ここではサンプルコードを書くぐらいで良いのでは。マシン語とアセンブラレベルでのCPUの挙動を何となく頭に入れる。要はポインタの概念が当たり前になるため。
次のステップ:C
何はともあれ、ここが原点。ここでメモリ管理についてを習得する。
ここまで来ればあとはC++、Object-CなどOOPへの移行はRubyでの経験が生きるだろうし、Web方面に走ればPHPが楽だったり、SQL言語が必須になるだろう。Googleのプラットフォームを使いたければPythonとNoSQLについて学ぶだろうし、Javaへの移行もCとRubyを習っていれば大丈夫でしょう。いずれにせよ子供は「やりたい!」と思えば後は勝手に本やWebを漁って自分で学習する。
【補遺】
私は職業プログラマでないし、実際に動くコードを書いて利用しているのはMS-DOSのバッチプログラム、PHP+HTML+JavaScript+CSS+MySQLのWebプログラム程度である。上記プランは主にWeb上で言語仕様と周辺状況を勉強してサンプルコードを書いたぐらいで得た感覚より作成したものである。本来は国が教育プログラムに上げるべきだろうが、早くて数年、遅くて数十年公的なカリキュラムに取り入れられるまでにかかるだろう。それまでは、プライベートの機関、あるいは親がそのレールをある程度引いてあげる必要がある。
実際にScratch, Rubyで興味が湧いた子は他のLightweight Languages (Ruby, Python, PHP, Javascript)やJavaなどをいじりながらCに触れることになりタイミングとしては良いように思うがどうだろうか。
将来的にプログラマーを増やすことが大切だとは感じていない。但し、プログラミングが理解できるSE的な思考回路を持った人材は豊富に必要だと思われる。官僚が分子生物学を理解していないために、日本はかなり国益を損じたと感じているが、同じことがプログラミングにおいて起きやしないか多少心配である。プログラマー、教育者、その他の方々から忌憚ない御意見を伺えれば幸いである。
【次のステップ】
小学生向けの高品質のサンプルプログラムとチュートリアル、つまり「教科書」が欲しい。誰がどこで作るインセンティブがあるだろうか。
【参考】
Scratch: MITで考案された。日本の文科省が今年プログラミンという形でウェブアプリとしてパクったが、英語に馴染めるなら最初からScratchの方が良いし、コンテンツも充実している。
Ruby: 日本人である まつもと ゆきひろ さんにより開発され、世界的に評価を浴びている 。OOPが自然に身につく上、何と言うかバランスが美しい。
Shoes: RubyでのGUI(Graphic User Interface)プログラミング環境。Shoesはマイナーだと思われるし、まだ実際に使用していないので合間を見てやってみようかと思っている。四則演算ぎりぎりの子供に対してScratchの次のステップとしての提供物が難しい。
Ruby/SDL: RubyからSDLを利用できるようにするため、つまりゲームなどを作るためのライブラリ。Shoesよりはこちらの方が小学生には受けそうだが、どうだろうか。ここで速度が欲しくなり、Cに興味を持ってもらえれば思惑通りだが。次のシステムをインストールすれば、テキストファイルを一枚書き換えるだけで簡単にプログラムを作成し、実行ファイルの形で他の人に配布できます(Windows版、Mac版)。
Object Oriented Programing (OOP): ググッてください。分かる人には一行で説明できますが、分からない人への一行はひたすら抽象的な無意味な文になります。一般性が高く、早めに身につけて良い概念だと思え、Rubyというのは自然にそのような考え方をしやすくなる言語に思えます。
MVC (Model-View-Controller): プログラムをModel, View, Controllerという3パートに分けて考え、構築する概念。
Assembler: Assemblerレベルよりももっと原始的なレベルにまで話は落とせると思うが、Cのポインタを理解すれば、それより下部構造に関してはUserではなく、コンピュータの専門家に任せるか必要な際に学べば良いと思います。ここでは義務教育に将来的に取り入れられても良いような教育プランに関して考えています。
C: この言語を素通りは出来ないと思われる。Assemblerというコンピュータに理解しやすく、人間にはまるで理解しにくい言語から、一歩人間側に寄り添った言語。それ故、OS(UNIX)や上記の様々なコンピュータ言語(Ruby, PHP)など、基礎的なプログラムのかなりがこのC言語で記載されている。
インド: 小学校低学年からパソコンを使い始め、小学校の高学年(12歳)になると、プログラミングが出来るようになる。
子ども向けITプログラミング学習機関「TENTO」です。
よろしければウェブサイトみてください!
ご意見もらえたらうれしいです!