2020年からのプログラミング必修化において、お子さんのいる方は、「いったいどんなことを学べばいいんだろう?」、「プログラミングなんてまったく分からないのに、どうやって教えてあげればいいんだろう……」と、不安に思うことも多いと思います。
今回は、小学校のプログラミング必修化で、どんなことを勉強するのか、どんなことを学ぶべきなのかを、分かりやすくまとめました。
プログラミングって、どういうもの?
まず、プログラミングってどういうものなのでしょうか。
少し詳しい方は、「あぁ、黒い画面に英語を爆速で入力していくやつね」と思うかもしれません。
まさにその通りなのですが、まぁ、白い画面を使っている人もいますし、爆速じゃないかもしれません。
それはいいとして……
おそらく、こういったものを想像いただけたのだと思います。
こういうものを作っていくのが、本来のプログラミングというものです。
あまりプログラミングに詳しくない方は、なにがなんだか、といった感じだと思います。
プログラミングとは、コンピュータにたいして「なにをして欲しいのか」を記述していくものです。
パソコンだけではありません。みなさんがよく使っているスマホ、自動車、炊飯器なんかも、プログラミングの技術が使われています。
例えば、自動車にはECUと呼ばれる、エンジン、ブレーキ、カーエアコンなどをコントロールするための装置がついています。
炊飯器では、どんなお米を炊くのか、かたさなど、選んだりできますよね。
こういったものに、「プログラミング」が使われているのです。
ええっ、小学校で、こんなむずかしいことを勉強するの!?
安心するべ。これは本来のプログラミングがどういうものか、っていう説明だべ
さて、まずは本来のプログラミングがどういうものなのかをお伝えしたかったので、よけいに不安な気持ちにさせてしまったかもしれません。
安心してください。小学校で、英語だらけのプログラミグをするわけでも、スマホや炊飯器を作ったりするわけでもありませんよ。
プログラミングの授業があるってこと?
プログラミングの必修化、ということは、学校で「プログラミング」の授業が増える、ということでしょうか。
黒い画面に英語をざざーっと打てなくてはいけないのでしょうか。
答えは「いいえ」で、基本的には、プログラミングの授業が増えるという意味ではありません。
といっても、簡単なプログラミング(ビジュアルプログラミング)に触れることはあるようです。
ビジュアルプログラミングというのは、文字ではなく、図のようなものを組み合わせて、プログラミングができるものです。
例えば、こういったものです。
これはScratchというもので、サイト上でキャラクターを動かしたり、ゲームを作ったりできるものです。
あれ? さきほどの黒い画面とは程遠いですよね……
また、下の画像は文部科学省が出しているpdfの一部です。(小さくて読みにくい場合は、クリックで拡大してください)
引用元:文部科学省 小学校プログラミング教育の手引(第三版)
この表によると、プログラミングの学習は、「社会」「算数」「理科」「音楽」「家庭」、さらには「総合的な学習の時間」、特別活動(クラブ活動)の中で行われ、決して「プログラミング」という授業はないことが分かります。
つまり「国語」や「算数」のように「プログラミング」があるわけではなく、それぞれの教科のなかに「プログラミング」がある、というふうになっています。
例えば、算数の「正多角形の作図(小5)」では、「プログラムで正多角形をかくにはどうすればいいのか」を考えます。
ちょっと分かりにくいので解説すると、例えば正三角形の角度は全て60度ですね。180から60を引くと120ですから、前に100歩移動し、120度右へ曲がって100歩移動し、さらに120度右へ曲がって100歩移動すれば、正三角形をかくことができます。
ならば正六角形はどうでしょう。えっと……正六角形の角度は正三角形が二つ分なので120度で、でも曲がる角度は180から120を引いて60度なので、前に100歩移動し、60度右へ曲がって100歩移動し、さらに60度右へ曲がって100歩移動し、さらに……ああ、もう! ってなりますね。
しかし、プログラミングでは、このように考えます。
「旗マークが押されたとき」のブロックから、下に向かって順番に見ていきます。
この「旗マークが押されたとき」というのは、文字通り「旗マーク」が押されたときに呼び出されます。つまり、画像の中央上の「旗マーク」が押されたときから、作成したプログラムがはじまるのです。
その下は「全部消す」となっていますよね。これで画面にかかれた線を、全部消してくれます。これがないと、前に実行したプログラムの線が、そのまま残ってしまうのです。
その下に「ペンを下ろす」とあります。ペンを下ろしたあとに、プログラミングでキャラクターを移動させると、線をひくことができます。
そしてその下に、「6回繰り返す」とあり、その中に「100歩動かす」、「60度回す」という二つのブロックがあります。これはキャラクターを100歩動かして、60度回転させるのを、6回繰り返していることになります。
これで、正六角形をかくことができるのです。
単純で分かりやすいですね。
こういった学習が、各教科に組み込まれるわけです。
しかし、ここで気になるのが、「総合的な学習の時間」というのと、一番右の「指導例Cー①〜③」です。
総合的な学習の時間
「総合的な学習の時間」では、こんなことを学びます。
- 情報技術が、自分たちの生活を、どんなふうに便利にしているのか
- 生活の身近なところで、どんなプログラミングが、自分たちの生活を便利にしているのか
- プログラミングを通しての、ものづくりの魅力を知る。ものづくりを支える人と関わり、自分らしい生活についてを考える
※以下に文部科学省が挙げている例を載せていますが、あくまで例であり、実際に行われるかどうかは学校によっても違うと思われます。
例えば、「プログラミングで、こんなに生活が便利になるんだよ」ということを勉強します。
文部科学省が挙げている例として……
おもちゃの自動販売機(ガチャガチャ)と、ジュースの自動販売機を比較して、プログラミングが取り入れられた「本物の自動販売機」は、なにが便利になっているのか、を考えます。お金を入れるといくら入れたのかが表示される、などです。
さらに……
「ジュースの自動販売機にお金を入れる」→「硬貨の種類を判別」→「金額の合計を求める」→「ボタンが押せるようになる」→「ボタンを押したとき、ジュースがでてくる」
といった、自動販売機の動きの一部を、プログラミングによって再現してみたりします。
文部科学省は、
ジュースの自動販売機をコンピュータの画面上で疑似的に再現するだけでなく、センサーを用いてスイッチが押されたことを検知したり、モーターを用いて商品を排出したりするなど、自動販売機のモデルを製作することなども考えられます。
https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf
としています。
言われてみれば、どうしてボタンが押されたところのジュースが出てくるんだろうね
そういうふうに作られてるからに決まってるじゃん!
まぁまぁ……まぁ、そうなんだべけど、先生たちは、もうちょっとそういうことに疑問を持って欲しいと思ってるんだべよ
また、「どんなプログラミングが、自分たちの生活を便利にしているのか」ということも学びます。
文部科学省は「タッチパネル式の案内表示」を例に挙げています。
タッチパネル式の案内表示を見に行ったり、その情報が表示される順序を確かめたり、ゲストティーチャーから話を聞いたりして、そして実際に案内表示を作ってみます。
案内表示は、ビジュアルプログラミングで作成します。学校にもよるかもしれませんが、さきほど紹介したScratchなどを使うことが考えられます。
このとき、どうすれば分かりやすい案内表示を作れるのか、ということを考えながら、お子さんたちは頑張ります。
どういった順番に、画像と文章を表示すればいいのか。お年寄りや外国人も使えるようにするにはどうすればいいのか。そういったことを意識しながら作っていくのです。
学校の考えで時間を確保して行うプログラミング
また、上の表の「指導例Cー①〜③」ですが、これは学校の考えで時間を確保して行うものです。
たとえば、ビジュアルプログラミングで、画面上のキャラクターを動かしてみたり、ランダムに降ってくる星を獲得できるようにしたり、といったものがあります。
国語の授業での物語の登場人物などを、動かしたり、言葉を表示させたり、といったものも考えられます。
あ、面白そう!
星を獲得するゲームを作るってことかな
しかし、これは学校の考えによるものなので、あるかどうかは学校次第、あったとしてもほんの僅か、ということになります。
えぇっ!そんな……
つまり上の表からは、おそらく学校の授業では、パソコン(もしくはタブレット)には、あまり触らないと考えられます。触ったとしても黒い画面に触ることはないでしょう。
また、文部科学省はQ&Aで、
プログラミング教育全体において児童がコンピュータをほとんど用いないということは望ましくないことに留意する必要があります。
https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_002.pdf
と、回答しています。
「ほとんど用いないということは望ましくない」ということは、「あまり用いない」ということと思われます。
さて、プログラミングが分からない、プログラミングなんてどうやって教えてあげればいいんだろう、と思っていた方も、安心できたのではないでしょうか。
しかし、もしかすると、こう思った方もいるかもしれません。
「こんなんでプログラミングの能力が身につくの?」
小学校のプログラミングでは、なにを学ぶの?
さて、上のような学習方法で、本当にプログラミングができるようになるのでしょうか。そんな疑問を持つ方も多いと思います。
実は、小学校のプログラミングは、プログラミングの技術を身につけるための授業ではないのです。
プログラミングを学ぶのは、「情報や情報技術を適切に扱えるようになること」、「起こった問題に対してさまざまな情報を照らし合わせて解決していけるようになること」、「情報社会の発展に貢献しようとする態度を身につけること」が目的なのです。
つまり、学校では「プログラミング」を学ぶのではなく、「プログラミングを通して、自分たちの暮らしや社会についてや、物事の考え方についてを学ぶ」のです。
じゃあ、プログラミングの授業じゃないんじゃん
ゲームが作れるようになるのかな、って思ってた
じゃあ、予習とかどうすればいいのかな……
さて、突然ですが、プログラミングにおいて大切なのは「アルゴリズム」です。
いきなり難しい横文字を使ってしまってすみません。アルゴリズムというのは、簡単にいうと「物事を行うときの方法や手順」のことです。
プログラミングでは、この「アルゴリズム」がとても大切なのです。
ここでピンときた人も多いでしょう。
そうです。プログラミングを学ぶことで「物事を筋道を立ててちゃんと考えられる能力」を身につけられる、とされています。
プログラミングを学ぶ目的の一つはそこにあります。
私としても、その意見はもっともだと思います。
では、おうちでできるプログラミングの学習は、どのようなものがあるのでしょうか。
おうちでできる、プログラミングの学習方法
もしもプログラミングを予習しておきたいならば、「ビジュアルプログラミング」を学んでおくといいと思います。
そこでおすすめなのが、Scratchです。
こちらではあらかじめ用意された、たくさんの画像を使って、アニメーションやゲームなどをつくることができます。
無料で使えるので、一度お試しください。
また、Scratchの使い方は、私のサイトでも紹介していますので、ぜひご活用ください。
また、書籍なども多く販売されています。
お子さんのプログラミング学習意欲を引き出すには
さて、小学校で習うプログラミングの例として、算数の時間にプログラミングで多角形を描いてみる、自動販売機の仕組みを知る、タッチパネル式の案内表示を作る、といったものがありました。
実は、私はこの考えに少しばかり疑問を持っています。
これはお子さんが、「心の底から作りたい」と思えるものなのでしょうか。
ここからは大人の話だから、アル君とりこちゃんは、わだずと一緒にScratchやりにいくべよ
はーい
はーい
まず、多くのお子さんは、プログラミングがなんなのか、まだよく分からないと思います。
そこでいきなり「自動販売機のお金を計算するプログラムを作りますよ」と言われて、お子さんは興味を持つことができるのでしょうか。
たしかに、生活の中でのプログラミングの便利さ、は学べるかもしれません。
しかし、「自動販売機にはプログラミングが使われているんだよ」と言って、「へぇ、すごい! プログラミング覚えたい!」ってなるお子さんが、どれだけいるのでしょうか。
もちろん、興味を持つお子さんがいない、とは言っていません。しかし、もっと多くのお子さんが興味を持つような学習の方法があるはずなのです。
ちらっ
こらアル、こっちこっち
ところで、お子さんをお持ちのみなさん。お子さんは、ゲームは好きですか?
というと、勘のいい方は、私がなにを言いたいか察すると思います。ちょっと待ってください、ブラウザの「×」ボタンを押さないで、もうちょっとだけお付き合いください。
私は小学生のころ、ゲームが大好きでした。
特に「ポケモン」や「ドラクエ」が大好きでした。RPGというジャンルのゲームですね。
そんなある日、ゲームがネットから無料でダウンロードできることを知りました。Vectorというサイトで、個人の方が自作ゲームを公開しているのです。
もちろん、ほとんどのゲームは、購入したもののようなクオリティはありませんでした。
(そのころは、今のように基本料金無料でスマホゲームができる、なんて時代ではなく、ゲームをプレイするには購入するのが一般的でした)
しかし、中には当時のドラクエのようなクオリティのゲームもあったのです。
そして私は「個人でこんなゲームが作れるなんてすごい!」と、本当に感動したのです。
同時に「個人でもゲームが作れるのならば、自分もゲームを作れるのではないか」ということに気付きました。というのも、ゲームは天才の人、いわゆる神様が作っていると信じ込んでいたのです。
そこで知ったのは「RPGツクール」という、ロールプレイングゲーム(RPG)を作成できるソフトです。まぁ、これは有料のソフトなのですが……これを使うと、プログラミングの知識がなくてもゲームを作ることができるのです。
そして、私が感動したゲームも、この「RPGツクール」で作られていることが分かりました。
このソフトさえ手に入れれば自分もゲームが作れるんだと、必死にお小遣いを貯めたのを覚えています。
(その頃はScratchなんてものはなかったので、ゲームを作るためのソフトは購入する必要がありました)
そして、念願の「RPGツクール」を手に入れ、私はずっとゲーム制作に熱中していました。
RPGツクールには、あらかじめ素材が用意されているので、とにかくゲーム制作に集中できるのです。そしてその中には、「変数」や「条件分岐」など、プログラミングでよく使われる機能が備わっています。
いまでいう、Scratchのようなものですね。
しかし……しばらくRPGツクールでゲームを作り続け、それを使い倒したころ、RPGツクールで作成したゲームは、どれも似たようなものになるということに不満を持つようになってしまいました。そして、世界に一つだけのゲームを作りたい、と強く思うようになりました。中学生のころだったと思います。
それが、私がプログラミングを始めたきっかけです。
つまり、ゲームが大好きで、ゲームで遊んでいた私がいたからこそ、プログラミングに興味を持ったのです。
さらには「作ったゲームを公開したい」と思うようになり、自分のサイトを持つようになりました。
これも「自分が作成したゲームの、世界に一つだけのサイトが欲しい」という気持ちで、サイトを作る方法を必死に勉強したのです。専門的な話ですと、HTMLとか、CSSとか、JavaScriptといったものです。
実はこのサイトも、WordPressを使ってはいますが、テーマ(デザインやサイトの機能を作ることができる)は、私が0から作ったものだったりします。専門的な話ですと、PHPというのを勉強したのです。
そして今では、プログラミングで作成したゲームをネットで公開し、いろんな方に遊んでいただけるようになりました。
終わった?
アル、ちょろちょろしない! 山田先生のとこ、戻るよ
さて……長々と書いてしまって申し訳ありません。
ここで私が言いたいのは、お子さんの好きなことを、学ぶ意欲に変えてあげることが大切なのではないか、ということです。
私の場合はゲームでしたが、お子さんにはそれぞれ好きなものがあることでしょう。そういったものを、学ぶ意欲に変えてあげるのです。
ゲームが大好きなお子さんのことを「こんなゲームばっかりやってて!」と、叱らないであげてください。ゲームを取り上げないであげてください。
それよりも、「このゲームはプログラミングで作られているんだよ、作ってみる?」と、優しく声をかけてあげてください。
お人形が好きな女の子に、「プログラミングで、お人形とお話できるようになるよ」と教えてあげてください。
画面の中になってしまいますが、写真を撮って、まるでお人形がしゃべっているかのように吹き出しを表示するぐらいなら、Scratchで簡単にできます。条件分岐をつかって、いろんな言葉を発するようにもできます。工夫次第で、その可能性は無限大です。
そして、一緒に学んであげてください。
お子さん一人では、プログラミングはなかなかむずかしいです。必ず、挫折してしまいます。
その挫折を、一緒に味わってあげてください。
そして一緒に乗り越えてください。お子さんにとって、喜びを共有できることが、一番の喜びなのです。
生活の中のプログラミングの便利さとかなんて、そのあとでいいじゃないですか。
まずはプログラミングの楽しさを、お子さんに教えてあげてください。
まとめ
2020年からのプログラミング必修化において、どんなことを学べばいいのか、どんなことを教えてあげればいいのかを、私なりにまとめました。
ちょっと偉そうなことを書いてしまいましたが、つまり私がいいたいことは、お子さんの好きなことを技術に変えられる道標を、考えてあげて欲しいのです。
どうすれば、お子さんが目の前の問題を解決できる方向へ導いてあげられるのか、それを考えるのも「プログラミング的思考」の一つだと思います。