どうプログラミング学習を始めるのか
では、ようやくと本題となります。「どうプログラミング学習を始めるのか?」
小学校で論理的思考を学ぶということはわかりましたが、論理的思考は実際にプログラミングをやっていくことでこそ身につくもので、実際にプログラミング言語を選んで、プログラムを書き動かしてみて、あれ動かないぞ、なんでだと頭を悩ませ何度もTry&Errorを繰り替えす中でロジカルに考えるという癖がつきます。
数多く存在するプログラミング言語
では、どのようなプログラミング言語を選べばいいのでしょうか? 先にも書いた通りプログラミング言語は数多く存在します。そして、それらのプログラミング言語は英語や中国語、スペイン語のようにそれぞれ特徴があり、それは同時にクセでもあります。あなたが、これを作りたいという明確な意思があれば、その言語を覚えるのがいいのですが、そうでない場合は最初にどれを選んでよいか悩んでしまいますよね。以下は代表的な本格的なプログラミング言語と、それが主に使われる分野にカテゴリ化したものです。(今後はこの本格的なプログラミング言語を大人のプログラミング言語とよぶことにしましょう)
まずは教育用プログラミングから
そのため、まずは教育用プログラミング言語と呼ばれるものから始めるのがよいです。大人のプログラミング言語と教育用のプログラミング言語の違いは、後者の方は機能は制限されていますが、エラーを起こさないように細かな設定が不要であるということです。
例えばブロックプログラミングというものが教育用プログラミングの代表的なものなのですが、これは用意されたブロックを組み合わせるだけでプログラムが作れます。一方、大人のプログラミング言語は基本文字を打ってプログラミングをしてくのですが、スペルが間違っていたり、文末に;(セミコロン)がついていない、カッコの数が間違っているなどの細かなことで違うよと怒られます。
そして、教育用プログラミング言語はとてもビジュアライズです。大人のプログラミング言語を学ぼうと書籍を買って、そこに書いてある基本的なプログラムを書いてでてくるのは、1+1=2になりましたとかの四則演算や「あいうえお」が「あいえうお」になりましたと文字の並び替えができましたといった基本文字中心のアウトプットでほんと面白くありません。
一方、教育用プログラミング言語は、最初から画像や音声が用意されており、それを組み合わせることでアウトプットもきれいなものができあがります。これは子供は喜びます。その為、最初にプログラミングを学ぶのなら教育用プログラミング言語からやるべきです。
教育用プログラミング言語で学ぶのはどんな言語でも使える論理思考
どうせ最終的には本格的プログラムを使わなければいけないのに、教育用プログラミングではなく最初から大人のプログラミング言語を学ぶ方が手っ取り早いのではないの?という意見もあるかと思います。確かにそれもありです。実際、教育用プログラミング言語では本格的なスマホアプリや高度なゲームを作ることができません。就職で「僕、(教育用言語の)Scratchができます」と履歴書に書いても、はぁ?と面接官から言われてしまいます。
もし、あなたがもう数年後に就職を控えている高校・専門学校や大学生であるのであれば、教育用プログラミングはやらずに直接、大人のプログラミング言語から始めるべきです。でも、まだ小学生、中学生という年齢であるなら、あえて難しい大人のプログラミング言語ではなく、まずは教育用プログラミング言語で「プログラミングの楽しさ」を覚え、その中でどのプログラミング言語にも共通する「論理思考」や「アルゴリズム」を学ぶのがよいかと思います。
それは、自転車のようなものかと思います。小さい時はストライダーや補助輪などをつけてバランス感覚やブレーキの使い方を学ぶ、その時には親の補助があり大人がサポートする。そうやって、自転車の乗り方を覚えてから、本格的なスポーツ自転車やMTBなどの自転車に移行するといったものです。子供向けの自転車は子供の身長に合わせて低く軽くなっており、また楽しさを強調するためアンパンマンなどのキャラクターでLEDでキラキラと楽しいものです。
そうやって自転車って楽しい、自転車ってこうやって乗るんだと覚えこむのが小さい年齢におけるプログラミングの始め方だと思っています。
おすすめの教育用プログラミング言語
さて、ここからは具体的におすすめの教育用プログラミング言語を紹介したいと思います。
クリエイト型かドリル型か
教育用プログラミング言語を学習するやり方として大きくわけると、設問に1つ1つ答えてコードを覚えていくドリル型を提供しているものと、自分でいちからコードを組み立てて自由に表現するクリエイト型に大きく分けられると思います。
どちらが取っ掛かりがよいかといえばドリル型であると思います。まずはドリル型をいくつかこなしてみて、その上でクリエイト型に取り組んでいくのがいいかと思います。正直、ドリル型の代表でもあるCord of Hour(Cord.org)だけでもかなりの量があるので、ドリル型をひとおりやるだけでもプログラミング基礎がかなり身につくと思います。
簡単操作で楽しさ中心(ストライダー相当)
最初に紹介するのは簡単操作で楽しさ中心のプログラミング言語です。このレベルでは主にスマホやタブレットを使ってプログラムを体験するもので、マウスやキーボードを使わず指だけで操作するので小さい子供でも直観的に取り組めます。後で述べますが、このキーボード操作がうまくできないことが子供にとって大きなストレスになります。そこを取り除くタブレットによるプログラミングは、かなりハードルが下がります。
グリコ―ド [無料][ドリル型]
みんなが知っている大好きなポッキーを並べてスマホのカメラで撮るAR機能を使ってプログラムの基本(順次・反復・分岐)を勉強します。実際に並べたポッキーでスマホの中のキャラクターが動くというのがとても楽しいです。
Lightbot [無料] [ドリル型]
こちらはキャラクターに指示を出して同じく基本(順次・反復・分岐)を勉強します。一部、関数の概念も入ってきますので、キャラクターは可愛いですが途中から本格的になるので、なかなか侮れないですよ。
Viscuit [無料][クリエイト型]
プログラムは粘土ということをコンセプトに、プログラムのコードを意識させないで指やペンで描いた絵が画面の中で動くというプログラムです。これは純粋にプログラムの楽しさを体感してもらうものですが、本格的に迷路ゲームやシューティングゲーム、パズルゲームも作れます。クリエイト型なので、どんなプログラムを作るかは自分で考えなければいけないですが、公式サイトにあるお手本ビデオを3本ほどみたら、だいたい仕組は理解できます。
さらに踏み込んでやりたいのであれば市販のテキストがありますので、こちらを購入してみてください。
Scratch Jr [無料][クリエイト型]
クリエイト型の教育用プログラミング言語の本命は何かと言ってしまうとScrachなのですが、そのScratchのジュニア版になります。これもクリエイト型なのですが、操作方法はシンプルなので、触っているうちに間隔で覚えることができます。
同じようにしっかりと覚えたい人は市販のテキストを購入しましょう。
ブロック言語で論理的思考(補助輪付き自転車相当)
さて最初がストライダーでプログラミングの楽しさを体験するという段階であれば次は補助輪付き自転車、または公園で親に押されながら自転車の乗り方を覚えるような段階です。ここでは、ちゃんとコードを自分で書いて、プログラムが書けるという自信をつけるような段階です。
Cord of Hour (Cord.org) [無料][ドリル型]
Code of HourはCode.orgという非営利団体がカリキュラムに計算機が世界的に主唱するプログラミング教育活動のサイトで、無料で優良なプログラミング勉強用のコンテンツを提供しています。無料とはいえ品質はものすごく高く、この活動に共感したMicrosoftのビルゲイツやFacebookのマーク・ザッカーバーグなどの大手ITの創業者も活動を支援すると表明し、オバマ元アメリカ大統領もこの活動を通じてプログラミングを学ぶ重要性を説いているほどです。このサイトに集まるコンテンツにはアングリーバードやDisney、MineCraftなど多数ありとても楽しくプログラミングが学べます。
Code Monkey [一部有料][ドリル型]
サルのモンタと一緒に旅をしながらバナナをゲットするためにプログラミングコードを書くというもので30ステージまで無料で体験できます。これはブロック言語ではなく、CoffeeScriptというJavaScriptを簡単にしたようなスクリプト言語で、文字でプログラミングしていくのですがコードの入力も補助があり、またゲーム感覚で扱え、絵もかわいいので、そんなに抵抗はありません。無料の範囲では順次処理、反復処理(ループ)までが試せて、条件分岐は出てませんでしたが、有料プランでは条件分岐が加わりデータ構造の変数、配列や関数などが勉強できるようで、「コードの冒険」では全420ステージがチャレンジできます。有料プランは3000円~6000円/年程度ですので、月500円ちょっとで利用できるのもありがたいですね。
Scratch [無料][クリエイト型]
教育用プログラミングの大本命といえば、マサチューセッツ工科大学(MIT)メディアラボが開発したブロック型プログラミングのScratchです。教育用プログラミング選びで迷ったら、とりあえずこれを選んでおいたら間違いはないでしょう。
こちらの記事ではそのScratchの特徴と勉強の仕方を詳しく書いています
Scratchでおすすめする教本テキストはこちらです。
ロボットや電子工作で表現力アップ(一人で近所をサイクリング相当)
さて、最後は一人で自転車に乗れるようになったので近所までサイクリングするというような段階です。これは電子工作やロボットを動かすプログラミングです。正直なところ電子工作やロボットプログラミングがそんなにハードルが高いのかといえばそういうわけではないのですが、ロボット+教育用プログラミングという2つの要素が絡むので少し位置づけを高くしてみました。このフェーズでは、実際に書いたプログラムのコードが画面の中だけではなく、リアルに動く・光るということで、ますますプログラミングの楽しさを感じることができます。本当に目の前でロボットが動くのは楽しいですよ。ネックは機械という部分で少しお金がかかってしまうことですね。
micro:bit [有料][クリエイト型]
micro:bitは、情報教育のためにイギリス公共放送のBBCが中心となって開発した教育用の小型コンピュータ基盤です。とてもシンプルなのですがLEDに加速度/地磁気センサー、Bluetoothなどが標準に備わり、また拡張させることで音を鳴らしたりロボットにも変身させることができます。何よりも本体が2500円程度、基本となる電池BOXを組み合わせても3000円ちょっとでプログラミング+電子工作ができる気軽さが特徴です。シンプルな分、アイディア次第でなんでもできます。
こちらについてはこの本に工作例がでていますよ。段ボールと組み合わせることで手作り感満載のおもちゃができ、子供の創作力も同時に高めることになるでしょう。
Mircro:bitについての市販テキストはこちらなど、段ボール作品が沢山のってますよ。
micro:bitについて書いた記事はこちら
mbot [有料][クリエイト型]
こちらはロボットロボットプログラミングです。ロボットもいろんな種類があるのですが、比較的有名なのがこのmbotだと思います。パソコンで作ったプログラムをBluetoothでこのロボットに転送することで動き出します。標準で超音波センターも搭載しているので、壁に近づいたら自動で止まる車もつくれますよ。
mbotに関してはこちらの教本はいかがでしょう
Minecraft+α [有料][クリエイト型]
こちらはロボット・電子工作とは違うのですが、ゲームにプログラミングを追加(アドオン)するという意味では似ているかとおもいこのジャンルにくくりました。Minecraft(マイクラ)はゲーム世界内で自由に穴をほったりブロックを配置したりして自分好みに建築物を建てることができるサンドボックスゲームというジャンルで、子供の愛読書コロコロコミックやYoutubeでも多数とりあげられており小学生を中心にとても人気のあるゲームです。そのマイクラでブロックを組み上げたり、レッドストーンと呼ばれる特殊な回路をつくるのにプログラミングを使うことができます。つまりプログラミングで書いた内容が、マイクラの中で建築物といった形でアプトプットされるというものです。これは、あらかじめ子供が興味があるものからプログラミングの世界に引き込むという作戦です。
Minecraftのソフトはこちらのライセンスで
プログラミングアドオンのやり方はこちらのDVDが参考
なお、ロボット・電子工作やMinecraftでは本格的プログラミングのJavaScriptやPythonを扱えたりするものもあります。これらの文字入力中心のプログラミング言語では画面だけではScratchのようにきらびやかなアウトプットをつくるのに一苦労ですが、アウトプットがロボットの動きという形になると成果が見やすくなって効果的です。そのためロボットプログラミング・電子工作に取り組む際にはブロック型プログラミング言語から一歩踏み込んで実践的プログラミングを一足早くつかってみるというのもありだとおもいます。
以上がおすすめする教育用プログラミング言語です。次は何歳からプログラミングを始めるの?という疑問にこたえたいと思います。