今年(2020年)より小学生でのプログラミング教育が必修化されます。
既に2012年から新学習指導要領に基づき、中学校での「プログラムによる計測・制御」が必修化されています。
【課題】
- 小学校段階における論理的思考力や創造性、問題解決能力等を育成すること
- 第4次産業革命やグローバル化に対応する人材を育てること
【施策】
- 小学生でのプログラミング教育の必修化
笑えるよね
「課題」に対する「施策」がオカシイよね
[参考] 「課題」とは何?(問題・施策との違いとイシューの関係)
そもそも「グローバル化に対応する人材」って・・・・それで「英語」導入したんじゃないの?
未だに、オッサンになっても英語で苦労してるから!
社会人になって何百万円費やしたと思ってるの!!
[参考] NOVA で200万円失った被害者の嘆き
プログラミング能力に長けていても、論理的に説明できない社会人は多いから!
グローバル人材・プログラミング人材育成とは何か?
文部科学省の「グローバル人材」の定義
グローバル化が進展している世界の中で、主体的に物事を考え、多様なバックグラウンドをもつ同僚、取引先、顧客等に自分の考えを分かりやすく伝え、文化的・歴史的なバックグラウンドに由来する価値観や特性の差異を乗り越えて、相手の立場に立って互いを理解し、更にはそうした差異からそれぞれの強みを引き出して活用し、相乗効果を生み出して、新しい価値を生み出すことができる人材
句点がなく、説明文が相手に理解される文章じゃない。
歴史的背景もあるかもしれないが、令和時代に時代錯誤も甚だしい。
【結論】
文部科学省が自分の考えを分かりやすく伝えてない
この文章を直訳して英語で取引先に説明したら「意味不明」と叱られるだろう。
総務省の「グローバル人材」の定義
日本人としてのアイデンティティや日本の文化に対する深い理解を前提として、豊かな語学力・コミュニケーション能力、主体性・積極性、異文化理解の精神等を身に付けて様々な分野で活躍できる人材
こっちも句点が無いが、さきほどの文書と比較すると、随分わかりやすい。
で、わかったことは、プログラミング関係ないじゃん・・・。
プログラミング人材育成の在り方に関する調査研究報告書
クソな文部科学省の文書でなく、総務省の「プログラミング人材育成」文書を確認してみる。
総務省の「プログラミング人材育成の在り方に関する調査研究報告書」の41ページに次のように書いてある。
IF-THEN型の論理構成は9歳10歳まで理解できない。また、論理的思考は、11歳以降でなければ理解するのは難しい。
フローチャートの学習は小学校5年生以上になってからでないと難しい。よほど優秀な場合は小学校4年生でもできる場合もあるが、小学校3年生以下にはまず不可能である。
そんな状態で小学生に何を教えるの?
中には気づかない才能を見つける人もいるかもしれないので、教えること自体は否定しない。
ただし指導時間は有限だよね。
何かを得るということは何かを失うこと。
最近は「道徳」の時間が、これらの教育に充てられているとも聞きます。
※一応、文部科学省は「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」で次のように追加説明してます。
プログラミング教育とは、子供たちに、コンピュータに意図した処理を行うよう指示することができるということを体験させながら、将来どのような職業に就くとしても、時代を超えて普遍的に求められる力としての「プログラミング的思考」などを育むことであり、コーディングを覚えることが目的ではない。
ゆとり教育の制度もそうたが、本末転倒。
どんなプログラミングを学習するのか先取りしてみる
プログラミングと言っても、社会人のようにCやJavaやJavaScriptでガシガシ書くわけではない。
私も中学校時代にはBasicでスロットゲームを作らされた記憶があります、楽しくなかったね。
プログラミング | 説明 |
---|---|
アンプラグドプログラミング | パソコンやタブレット端末を使わず、カードなどで学習する。パソコンを必要としないため、設備がそろっていない学校でも、小学校低学年向けに導入しやすいという利点はありますが、最終的には、これからの時代に必須となるコンピューターに触れ、その仕組みを知る機会も必要 |
ビジュアルプログラミング | 画面上で命令文をブロックのように組み合わせる。命令がブロック型になっているため「ブロックプログラミング」とも呼ばれている。小学校低学年の児童でも簡単に取り組むことができ、日本でも30万人以上の登録ユーザーがいる「Scratch(スクラッチ)」が代表格 |
フィジカルプログラミング | ロボットやブロックなどをプログラミングで動かす |
最近の流行りは「ビジュアルプログラミング」で、その代表として「マインクラフト」「スクラッチ」「micro:bit」「MESH」などがあります。
※ 小学校4年生で「micro:bit」を用いるプログラミング体験を通じた「電気をコントロールして『おもちゃライト』を作ろう」を実施
今回は、プログラミング教育で一番使われていると言っても過言ではないツール「Scratch(スクラッチ)」を体験してみます。
Scratch (スクラッチ) とは何か?
Scratch (スクラッチ) は、MITメディアラボが開発したプログラミング言語学習環境です。
Scratch1.4は、SmallTalk(スモールトーク)というプログラミング言語を利用して作成されたアプリケーションになります。
バージョンに対する違い
まとまったページが見つからなかったので、間違った部分があるかもしれません。
スクラッチの機能 | バージョン1.4 | バージョン2.0 | バージョン3.0 |
---|---|---|---|
パソコンへのダウンロード | 必要 | 必要/必要ない | 必要/必要ない |
インターネットへの接続 | 必要ない | 必要/必要ない | 必要(タブレット端末でも利用可能)/必要ない |
主な作品の保存先 | インターネット上/自分のパソコン | インターネット上/自分のパソコン | インターネット上/自分のパソコン |
低スペックマシンでの動作 | ◯ | △ | ☓ |
ラズペリーパイでの動作 | ◯ | ◯ | ◯(RAM2GB推奨) |
現在時刻の取得 | ☓ | ◯ | ◯ |
ビデオ映像の取得 | ☓ | ◯ | ◯ |
オブジェクトの複製(**のクローンを作る) | ☓ | ◯ | ◯ |
ブロック(関数)の作成 | ☓ | ◯ | ◯ |
その他 | 全画面モードで背景「黒」 | Scratch1.4で保存したデータが使える | “にほんご”では起動せず Raspberry Pi3ではScratch1.4で保存したデータは使えない |
インストール
「Raspberry pi 3」を使う場合はデフォルトでScratch1.4が入っています。
私はOSを「Ubuntu 16」に変えてますが、そちらでもデフォルトで入っていました。
Windowsの方は次のページからダウンロードしてください(2.0以降はAbode AIRが必要)
【1.4】
【2.0】
【3.0】
「ひらがな」表記に変更
日本語は漢字だけでなくひらがな表記にも対応しています。
「言語設定(赤丸)」から「More…(もっと)」を選択して「にほんご」「日本語」で「にほんご」を選択します。
サンプルゲームを作ってみる
「ねこ(名前はまだない)」と「かに」を使った簡単なサンプルを作ってみます。
基本的にマウスだけの実装で完了するゲームを作りたかったのですが、次の部分はキーボード入力を利用しています。
- 「10ぽほどうごかす」→「100ぽほどうごかす」
- 「『こんちには!』と2びょういう」→「『ニャー!』と2びょういう」
- 「おおきさを100%にする」→「おおきさを50%にする」
ですが、マウスで回避可能です。
因みに、今年から一年生になる娘にScrachを使う前に紙を切って工作でプログラムをした場合は正しいプログラミングができました。
が、パソコン使って作らせると、選択肢の量やマウスの使い方に思考が向いてしまい、書き写すだけのプログラミングが困難でした。
紙で練習した後で、本物のソフトを初めて見たときの子供の驚きは、なんか嬉しい。
実行方法
右上の「みどりの旗」をクリックするとスクリプトが実行できます。
背景を変える
幾つかサンプルが入っているようです。
「パッ」と背景が変わるので子供には楽しく感じる瞬間です。
ねこを「スペース」押したらジャンプさせてみる
では、プログラミングしてみましょう。
100ぽと文字を入力したくない場合には「10ぽ」を複数くっつけます。
ねこを走らせる事を経験した後に、
- ジャンプするには?
- 繰り返すには?
- キーイベンドで操作するには?
のように子供には機能分解して考えさせる&作らせる必要があります。
一気に作らせると、パズル間隔で目的含めて見失います。
先にカニから作った方がよいかもしれません。
ねこの向きを変えない
これはTips的なものですが、ネコの向きが変わらないようにボタンをクリックしておきましょう。
キャラ(カニ)を増やす
キャラクターを選べると一気に楽しさが増えます。
カニを自動的に動かしてみる
カニは「はし」に行くと、自動的に折り返して歩くようにしました。
大きさ指定に「100%→50%」とキーボード入力していますが、次のように画像をマウスで縮小設定も可能です。
シンプルなプログラムを学んでいると、もっと難しく考えてしまいますがシンプルです。
そしてマルチスレッドとか何も考える必要がありません。
ねこがカニにふれたら「ニャー」という
あたり判定を作ります。
これもScratchでは簡単に実現できます。
完成品
オンライン上にアカウントを作れば、Web上にスクリプトを公開でき、Web上で動かすことも可能のようです。
すごい時代になったなぁ・・・。
まとめ
大学生時代にC言語を学んでゲームが作りたくてコンソール上でシューティングゲームなどを必死で作っていました。
JavaやVisual C++を学んだり、JavaScriptでWebゲームを作ったり・・・と、ゲーム要素以外の部分で苦労が多かった記憶があります。
今は本当に簡単になったなぁ・・・。
肝心の、論理的思考が身につくか・・・・?は「カリキュラム次第」かな。
授業の中で「学生自身に機能分解を考えさせる」事ができ、日常的に身につくようになれば成功と言えるかな・・・と思います。
とはいえ、私自身が50代になった頃は(今でも役に立たないが)若者についていけずお荷物だろうね。
ゲームの拡張
アイデア次第で拡張できるが、「ゲームバランス」を考慮した上でゲームを作成するのは小学生低学年には難しい。
カーソルで左右に移動できるようにする
例えば、ジャンプだけでなくて左右にも動けるようにするには次のように記述できる。
ねこが走っているようにする
スプライトのコスチュームで「あたらしいコスチューム」で読み込み「cat1-b」を選びます。
スコアをつける
これは「変数」の概念が入ります。
スコアが表示されるようになります。
応用編完成
各種エラー
folder may be locked or read only
デスクトップでもUSBでも「Raspberry pi3」で起動したScrach1.4は保存が出来ませんでした・・・・。
これは致命的すぎる・・・・。
因みにEmacsなどで作成したファイルは保存できるので意味が不明・・・・。
※ Raspberry Pi3の再起動で治りました。データは消えてしまいましたが。