こんにちは。 VOYAGE GROUP でエンジニアをしています tatenosystem です。
最近は本ブログで「ネタ担当ポジション」を期待され、地味なプレッシャーをシステムの偉い人から受けながらホソボソと生きています。
先日知人から「うちの子供にプログラミングを教えて欲しい」という変わった依頼がやってきました。
小学4年生のゲーム好きな子で、「将来ゲームを作ってみたいからプログラムをやってみたい!」という理由とのこと。
いちおう私もプログラマなので、面白そうなので引き受けました。
そんなわけで プログラム初心者小学生でも勉強できるツール を調べてみました。
そこで、「前田ブロック」を使って実際に教えて見ました。が、
簡単なゲームを作ってもらおうと思ったのですが、プログラム初心者の小学4年生にはゲーム制作は敷居が高い。
そんなわけで プログラム初心者小学生でも勉強できるツール を調べてみました。
そこで、「前田ブロック」を使って実際に教えて見ました。が、
簡単なゲームを作ってもらおうと思ったのですが、プログラム初心者の小学4年生にはゲーム制作は敷居が高い。
むしろ 私が 「前田ブロック」にハマりました。
「もっとゲーム感覚でプログラミングが学べるもの無いかなぁ。。。」
「わかりやすいといえば、ぴゅう太の日本語BASICか? しかし今更どこで、ぴゅう太を売っているんだ?」
みたいなことを本気でいろいろ考えてましたが、
そういえばアメリカでは(日本でも) 教育系のスタートアップ がひとつのトレンドとして注目されることを思い出しました。
EdTech(エドテック) とも呼ばれて、なかなかのトレンドぶり。
日本でも、政府の成長戦略素案に「プログラミング教育」が盛り込まれたりと、今後の注目トレンド間違いなし!
ビジネスチャンス キタコレ!!!
そんな訳で作ってみました。
ゲーム感覚で学べる「子供向けブロックプログラミング学習ツール」、
ツール名は、「前田ブロック」の パク リスペクト です。ネーミングセンスに感嘆しました。
JavaScriptフレームワークの enchant.jsで作成しました。
キーボード入力は一切使わない学習ツールを目指しました。iPad(タブレット)でも動作します。
ブロックを配置しクマを動かすプログラムを作ります。
クマが全ての「りんご」を取ったらゲームクリアとなります。
ブロックは「ドラッグ&ドロップ」で左のプログラムエリアに配置できます。
配置したブロックは、クリックで「チェックを行う向き」や「クマの移動方向」を変えることができます。
ループブロック が実行されると、再び左上からプログラムが実行されます。
プログラム実行ボタンを押すと、赤い四角(「実行」)が左上から下に落ちてきて、赤い四角のブロックが実行されることになります。
IFブロックや「実行」を左の列に移動させとこが出来ます。
制御ブロックを置くと、「実行」を右や左の列に移動させとこが出来ます。
(例)クマの上に障害物があったら、クマを左に動かす
■ この学習ツールで教えたいこと
- プログラムって凄そうだけど、所詮は1つずつ順番に処理しているだけなんだよ-。ね、簡単でしょ?(*1)
- IF処理。なにかをチェックして、そのチェック結果で処理を変えることが出来るんだよ(*2)
- ループ処理。同じ処理を何度もグルグルまわして処理ができるんだよ(*3)
(*1) マルチスレッド的な処理は除く
(*2) たてのブロックでは、障害物の有無、リンゴ・毒りんごの有無、フラグの有無をチェックできます
(*3) たてのブロックでは、プログラムエリア全体が大きなループ処理の中に入っているイメージです
では、見て行きましょう。
while(true) {kuma.y--;}
while(true) {kuma.y--;if (MAP[kuma.x][kuma.y - 1] == WALL) kuma.x++;}
while(true) {kuma.y--;if (MAP[kuma.x + 1][kuma.y] == APPLE) kuma.x++;}
while(true) {kuma.y--;if (MAP[kuma.x + 1][kuma.y] == APPLE) kuma.x = kuma.x + 2;if (MAP[kuma.x][kuma.y - 1] == WALL) kuma.x++;}
while(true) {if ( FLAG[1] ) {kuma.x++;if (MAP[kuma.x + 1][kuma.y] == WALL) kuma.y--;continue;}kuma.y--;if (MAP[kuma.x + 1][kuma.y] == APPLE) {kuma.x++;continue;}if (MAP[kuma.x][kuma.y - 1] == WALL) FLAG[1] = true;}
これはまったく同じ処理をするプログラムですが、こっちのプロック配置のほうがわかりやいかも知れませんね。
(FLAG[1] == true 時の処理を上に持ってきました)
具体的な遊び方(プログラミングのやり方)は、下記ページを参考にしてください。
ブロックの種類の説明は、下記ページになります。
さらに自由にゲームを作成できるエディタも用意しました。
ゲーム作成後、作成したゲームを遊べるURLが出力されます。
そんな訳で、来月この「たてのブロック」を持って、知人の子供にリベンジしに行ってきます ( ー`дー´)ゞ
カリキュラム的なゲームを充実させて、これを使って近い将来「子供向けのプログラミングセミナー」とか開催出来たら面白いですね。
「たてのブロック」の今後にご期待ください!オレはようやく登りはじめたばかりだからな
このはてしなく遠いプログラミング学習ツール開発道をよ…
未完