無料で使えるプログラミング学習ソフト「Scratch」を使ったプログラミング学習が抱える問題点が、Scratchの「その先」の学習のこと。
Scratchはブロックを組み合わせるビジュアルプログラミングで、プログラムを見た目でわかりやすく作成することができます。
未だにScratch以上に小・中学生がプログラミングを簡単に学べる教材はありません。
皮肉なことに、最高の教材であるがゆえにScratchの「次」が見つからないのが、プログラミング学習の問題点となっています。
私たちが運営する教室「プログラミング教室 フーコ」では、Scratchで一通り学習した後は、「Python」というプログラミング言語を用いてScratchを動かすカリキュラムを採用しています。
最初はScratchのブロックをコードに置き換えたりしつつ、慣れてきたら図形描画などをPython単体で行うようにしてScratch濃度を薄めていきます。
ポイントは、できるだけ実行結果が「見た目」でわかるようにすること。子ども達にとってプログラムの実行結果が見た目でわかることはとても重要です。
以前、Scratchでの学習を終えてPythonを学びはじめた途端に教室をやめてしまった子がいました。
せっかくScratchを使った学習が楽しかったのに、本格的なプログラミング言語の学習は楽しくないとのこと。
きっとその子にとってプログラミングとは、ブロックを組み合わせて遊ぶ玩具のようなものだったのだと思います。
ここにプログラミング学習の「目的」に応じた分岐点があります。
もしプログラミング学習の未来に、本格的なプログラミング言語を見据えないのであれば、その子には飽きるまでScratchを使ったプログラミングを楽しませれば良かったのだと思います。Scratchはプログラミング学習用ソフトというものの、高度なプログラムを組むこともできます。
私たちも、やろうと思えばScratchのカリキュラムの引き伸ばしはいくらでもできます。
しかし私たちの教室では、Scratchを使ったプログラミング学習はあくまでも前段階という位置づけです。
私たちにとってプログラミング学習の目的とは、本格的なプログラミング言語を使って成果物を作れるようになること。これからは、プログラマーでない人でもプログラミングスキルが求められると考えているからです。
まだ人々の識字率が低かった時代に代書屋という職業があったそうです。これが今でいうところのプログラマーなのではないかと。プログラミングわからない人に代わってプログラミングをする人がプログラマーなのです。
その後、識字率が向上するにつれて代書屋は減っていったわけですが、プログラマーという職業も同じような行く末をたどっていくのではないかと思っています。
そんな未来を見据えての本格的なプログラミング言語の学習ですが、子ども達はScratchとの落差に戸惑うことが多いです。最悪の場合は先述のように教室をやめてしまう子が出てしまい、頭の痛い問題となっています。
Scratchの次のプログラミング学習としてよくあげられるのが、ホームページなどを作るときに使われるWeb開発言語のHTML+CSSです。
プログラミング学習におけるHTML+CSSは、コーディングの結果が「見た目」としてわかりやすいのが良いところ。
Scratchのように動かすことはできないものの、ホームページを自分で作れるというのは子どもにとっては楽しいようです。
しかしこのHTMLにはひとつ大きな問題点があります。
HTMLはプログラミング言語と誤解されていることが多いのですが、厳密にはプログラミング言語ではありません。「マークアップ言語」といいます。
決められた書式に従ってコーディング(マークアップ)をすることで、決まった結果が表示されるだけなのです。
HTMLを使ったプログラミング学習では、プログラムに必要なはずのアルゴリズムに触れることが一切ありません。
せっかくScratchで学んできたプログラミングの知識景観が、HTMLではまったく活かせません。必要がないのです。
先ほど「HTMLを使ったプログラミング学習」といいましたが、そもそもこれをプログラミング学習といっていいものかどうか悩ましい言語なのです。
さらに話をややこしくすると、今日、世界で最もニーズがある言語はHTML+CSSではないかと思います。
インターネットが隅々までいきわたった結果、ホームページやWebサービスのニーズは増える一方です。最近ではスマホアプリ内でHTML+CSSが使われることも増えてきており、幅広く応用できる言語になってきています。
つまりHTML+CSSはプログラミング言語ではありませんが、社会的なニーズのある言語なのです。
個人的にはHTML+CSSをプログラミング学習としてScratchの「次」にするのは良いのではないかと考えています。
確かにScratchの知識経験は活かせませんが、マークアップ言語を通じてScratchとは違った知識経験を得ることも良いのではないでしょうか。
HTML+CSSの先には、JavaScriptやPHPといった、Scratchの知識経験が活かせるプログラミング言語もありますから。
Scratchのその先は?
未だに模索中ですが、現状ではHTML+CSSが最適解なのかもしれませんね。