今年からプログラミング教育が必修化となりますが、2020年4月現在、COVID-19の影響で休校になっていて家から出れないお子さんも多いのではないでしょうか。今回はPCかタブレットがあれば家でもできる無料のプログラミング学習を紹介します。
Code.org
Code.orgでは、ブラウザでプログラミングの学習ができます。アクセスしたら言語を日本語にしましょう。日本語にできなくても、ページの左下から日本語に変更することができます。
ホームページにアクセスしたら生徒というところをクリックすると、レッスンに進むことができます。レッスンの種類は4つあります。
- コンピュータサイエンス入門
- Hour of Code (アワーオブコード)
- 全コース一覧 (英語のみ)
- 中学生、高校生向けのツール (英語のみ)
最初の二つはほとんど翻訳されているため、英語ができなくても学習することができます。ただ、対象年齢が低くても、翻訳された文章や動画の字幕は漢字を含むので、難しいかもしれません。
コンピュータサイエンス入門では、基礎からじっくりとプログラミングについて学習することができます。各コース100問以上あり、かなりやりごたえがありそうです(1コース20時間程度?)。Hour of Codeは15問程度で、一時間程度で終わる内容です。アナと雪の女王やマインクラフトなど、いろんなキャラクターのものがあります。
コンピュータサイエンス入門
私はコース1の最初だけやりましたが、最初はスクラッチのブロックの動かし方を学習し、続いて簡単な迷路(ターゲットをゴールまで動かす)を解きました。レッスン一覧を見ると、未終了のレッスンは白背景に黒字になっています。
緑背景に黒字のものは、終了したもののブロックが多すぎるものです。ワークスペースと書いているところに使うブロック数があります。このブロック数より多い数のブロックを使っていると、ブロックが多すぎるという扱いになります。下の図の例では、4つのブロックでよいところ、5つのブロックを使ってしまっています(最後の西←ブロックが余計)。
Hour of Code
こちらはアナと雪の女王、マインクラフト(4つ中2つ)、フラッピーバードをやりました。
アナと雪の女王は図形を描くものでした。角度を変えながら何ピクセルか動かし、いろんな図形を書きます。繰り返しや関数の考え方も出てきます。
MinecraftはVoyage Aquaticと主人公の旅をやりました。Voyage Aquaticは主人公をプログラムで動かし、ゴールに導くものでした。繰り返しや条件分岐も出てきます。主人公の旅ではエージェントをプログラムで動かし、主人公はキー操作で動かして目的地に移動します。ボーナスとしてダイヤモンドがおいてあり、ダイヤモンドをすべて集めながらクリアするのは結構難しいです。
フラッピーバードでは実際に「フラッピーバード」というゲームを作ることができます。障害物に当たらないように鳥を羽ばたかせてハイスコアを目指すゲームです。全てのレッスンを終了すると自分なりにカスタマイズしたフラッピーバードを作ることができます。
コード
コードの表示ボタンを押すと、JavaScriptのコードが表示されます。moveForward()
やplaceBlcok("netherrack")
等の関数は普通のJavaScriptにはありませんが、for文や関数の書き方はそのままなので、なんとなく雰囲気をつかむことはできます。
上記画像のJavaScriptは以下のようになります。
function build_short_bridge() {
for (var count = 0; count < 2; count++) {
moveForward();
placeBlock("netherrack");
}
}
function build_long_bridge() {
for (var count2 = 0; count2 < 5; count2++) {
moveForward();
placeBlock("netherrack");
}
}
build_short_bridge();
turnRight();
moveForward();
placeBlock("netherrack");
turnLeft();
build_long_bridge();
turnRight();
build_short_bridge();
ちなみに、日本語のままコードを見ると関数名がひどいことになりますが、本質はおなじです。
function _E7_9F_AD_E3_81_84_E6_A9_8B_E3_82_92_E3_81_8B_E3_81_91_E3_82_8B() {
for (var count = 0; count < 2; count++) {
moveForward();
placeBlock("netherrack");
}
}
function _E9_95_B7_E3_81_84_E6_A9_8B_E3_82_92_E3_81_8B_E3_81_91_E3_82_8B() {
for (var count2 = 0; count2 < 5; count2++) {
moveForward();
placeBlock("netherrack");
}
}
_E7_9F_AD_E3_81_84_E6_A9_8B_E3_82_92_E3_81_8B_E3_81_91_E3_82_8B();
turnRight();
moveForward();
placeBlock("netherrack");
turnLeft();
_E9_95_B7_E3_81_84_E6_A9_8B_E3_82_92_E3_81_8B_E3_81_91_E3_82_8B();
turnRight();
_E9_95_B7_E3_81_84_E6_A9_8B_E3_82_92_E3_81_8B_E3_81_91_E3_82_8B();
終了賞の発行
隠れコースやレッスンを終わらせると、終了賞が発行されます。下の画像のようなものなので、発行して名前を書いてを楽しそうです。
ほかのHour of Code
こちら(https://hourofcode.com/jp/learn)にはCode.org以外のHour of Codeが載っています。私はモアナと伝説の海とMinecraft Hour of Code:人を助けるAIをやりました。モアナは敵を倒してゴールを目指す形で、繰り返しや条件分岐が出てきます。これまでの例だとVoyage Aquaticと似ています。Minecraft Hour of Code:人を助けるAIはブラウザ上ではなく、教育版Minecraftをダウンロードして学習しました。公式の説明からダウンロードできます。私の環境はWindows Desktopなので、Windows版をダウンロードしました。ほかにMacやiPadでもできるようです。こちらは製品版のMinecraftの中でプログラミングをする感覚で楽しく学ぶことができると思います。