少し前に書店をブラブラしていたら,なんと!小学生の学習書コーナーに「プログラミング」をテーマにした「学習ドリル」が追加されていて,とても驚いた.2020年からプログラミング教育が小学校の必修科目になることは知っていたけど,まさかもう学習ドリルまで出版されているとは!学習指導要領など,詳しくは文部科学省のウェブサイトから確認できる.
僕自身は過去にプログラミング講師の仕事を約2年していて,主に「プログラミング初学者に教えた経験(成人教育)」はあるけど,小学生にはどのように教えるのだろうか?という強い興味があり,以下の3冊を購入し,実際に解いてみた.
プログラミング的思考
本書にも書いてある通り,「プログラミング」を学ぶのではなく「プログラミング的思考」を学ぶ.よって Scratch を使ったりするのではなく「どのように考えるか?」という観点で学ぶ.具体的には「順序」や「繰り返し」や「分岐」など,実際にプログラミングをするときに必要になる思考を学ぶことができる.学習指導要領(第2版)にも書いてある通り,小学校のプログラミング教育では「プログラミングを体験すること」を推奨しているため,Scratch などのビジュアル型プログラミング言語を使った授業もあると思う.よって,本書(学習ドリル)は,実際にプログラミングを体験するときに必要になる「プログラミング的思考」を学ぶためにあるという背景を理解しておくと良さそう.
3冊を実際に解いてみた個人的な感想として,非常によく考えられていると感じた.特に本書は小学生に限らず,例えば以下など,幅広い層に役立つ内容になっている点が素晴らしいと感じた.ようするに「誰でも読める」と言える.小学生の学習ドリルを侮るなかれ!
- 小学生
- 小学生の子供に「プログラミング的思考」を教える保護者
- 現役のプログラミング講師
- エンジニアと会話ができるようになりたい営業職や経営陣
- などなど
学習範囲
ザッと3冊に載っている学習範囲を整理してみた.非常に幅広い内容になっていることがわかる.なお,実際には「じゅんじょ」や「順序」など,表記は年次によって異なり,適切に「学年別漢字配当表」に沿っている.本記事では読者層を考慮し,通常通り,漢字表記に統一する.
学習範囲 | 小学1,2年 | 小学3,4年 | 小学5,6年 |
---|---|---|---|
順序 | ○ | ○ | ○ |
繰り返し | ○ | ○ | ○ |
分岐 | ○ | ○ | ○ |
イベント処理 | ○ | - | - |
コンピュータの考え方 | ○ | ○ | ○ |
変数 | ○ | ○ | ○ |
関数 | - | ○ | ○ |
配列 | - | - | ○ |
アルゴリズム | - | ○ | ○ |
データ活用 | - | - | ○ |
移り変わり図 | - | - | ○ |
小学1,2年
出題範囲「順序」では,積み木を並べたり,図形を組み合わせたり,順番を考える問題になっている.途中から「フローチャート」を使った問題もあり,「フローチャート」を読み解きながら図を描いたり,ロボットを動かしたりする.正確には問題文には「フローチャート」という言葉は記載されてなく,答え(保護者向け)に載っている.
出題範囲「分岐」では,if-else
を連想させる「分かれ道でどっちに進む?」というテーマや「○だったら図形 A,△だったら図形 B」というテーマなど,小学生でも考えやすい内容になっている.出題範囲「分岐」の後半では「フローチャート」を使って「クッキーは丸い?」という命令を読み解く内容になっている.
出題範囲「イベント処理」では,「大型ロボットが迷路を進む」というテーマで「壁にぶつかったら,左を向く」など「壁にぶつかったら〇〇」という点にフォーカスして読み解く.客観的には出題範囲「分岐」と似ている部分もある.
小学3,4年
「順序」や「繰り返し」や「分岐」など,学習範囲は小学1,2年と同じで,問題の複雑さが違ってくる.例えば,出題範囲「繰り返し」では「秘密の暗号を読み解く」というテーマで,文字列を数文字ごと(鍵という前提)にスキップしながら読み解く問題になっている.例えば以下のように,プログラミング的には For Step
を連想させる内容になっている.
鍵 = 2 暗号 = ぶあろいぐう メッセージ = ぶろぐ
小学1,2年にも出てくる出題範囲「変数」では,「ロボットに1個だけ言葉を教えることができる」というテーマで「変数の代入」を表現していて参考になる.特にロボットに言葉を教えるだけではなく,ロボット同士でも言葉を教える問題があり,これは「変数同士の代入」のことを連想させている.
そして,最後に出題範囲「アルゴリズム」も出てくる.問題文には記載されていないけど,答え(保護者向け)を読むと,以下の代表的なアルゴリズムを前提にした問題が並んでいる.ここまで理解した小学生強すぎる!
- 交換アルゴリズム
- 探索アルゴリズム
- 線形探索
- 二分探索
- 深さ優先探索
- ソートアルゴリズム
- 選択ソート
小学5,6年
小学1,2,3,4年でも学ぶ学習範囲はさらに問題が複雑になってくる.特に学習範囲「変数」に関しては「変数同士の代入」の延長線として「変数を計算した結果を変数に代入する」という問題もある.
そして,学習範囲「関数」では,以下のように命令を読み解く内容もある.後半には「関数の中に関数を定義した」問題もあり,非常に実践的な「プログラミング的思考」を学べる.学習指導要領(第2版)に書いてある通り,プログラミング教育では「プログラミングによって正多角形を作図する」ことを目標の1個にしているため,学習範囲「関数」の内容と似ていると感じた.
進む (1) 左回り () 進む (5)
学習範囲「アルゴリズム」では,小学3,4年で学んだ内容に加えて,以下の内容を前提にした問題が出てくる.そして,学習範囲「データ活用」では RDB を連想させるデータ表を読み解く問題になっている.学習範囲「移り変わり図」では「アクティビティ図」と「状態遷移図」を学ぶ.小学5,6年でここまで学べるのは本当に驚き!
- ソートアルゴリズム
- バブルソート
- 最短経路問題
- ダイクストラ法
- ナップサック問題
まとめ
- ドリルの王様「たのしいプログラミング」を3冊解いた
- 本書では「プログラミング」ではなく「プログラミング的思考」を学ぶ
- 小学生に限らず,幅広い層に役立つ内容になっていた
関連記事
経営陣にエンジニアリングをもっと知ってもらうために「SAO 本」を使ってプログラムを写経してもらう取り組みを数年前に実施したけど,当時このドリルがあったら是非活用したかった!「開発組織の変革を支えた実践的アプローチ」に関しては以下に資料を公開している.