【プログラミング教育の基礎2】思考の要素を「粉ふきいも」から考える…関西大・黒上晴夫教授
リセマム2018年8月15日(水)13時15分
次期学習指導要領で注目される、小学校での2020年からのプログラミング教育の導入。その第一人者である関西大学総合情報学部・黒上晴夫教授が「プログラミング教育」の基礎をわかりやすく解説。
本書(*1)におけるプログラミング的思考
*1 「プログラミング教育導入の前に知っておきたい思考のアイディア (教育技術MOOK)」発行:小学館
学習指導要領を作成するに当たって、プログラミングについて検討する会議が設置された(「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」)。その議論の取りまとめ(*2)で用いられた言葉が、プログラミング的思考である。
*2「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」2017.6(http://www.mext.go.jp/b_menu/shingi/chousa/shotou/122/attach/1372525.htm)
「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、1つ1つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」がその定義にあたる。
同時に、小学校でのプログラミング教育は、プログラムの書き方を覚えることが目的ではないとも強調されており、また、求められる知識・技能としては、身近な生活でコンピューターが活用されていることや、問題の解決には必要な手順があることに気付くことだと記されていることを受けると、ただ体験としてプログラムを介してモノを動かしてみる体験をするだけでは十分だとは言えない。
大事なのは、その背景に、どのような指令(自分の意図)があり、それが何を操作しているのかについての感覚であり、それを思ったとおりに操る思考である。そして、それを教科の学習や日常生活とつなげることも欠かせない。
むしろ、教科の学習や日常生活におけるさまざまな思考を、より論理的にしながら、それがプログラミングにも活かせるようにすることを考えたい。このような考え方をもとに、本書をつくった。
プログラミング的思考の要素
では、どのような思考を扱えば、プログラミングにつながるのか。以下の3つが基本となる。
1. 順序(順次):ものごとを手順としてとらえて実行すること(プログラムは、上から下に順序よく処理を進める)
2. 場合分け(分岐):状況によって次の行動を変えること(プログラムは条件が揃ったときに該当する処理を進める)
3. 繰り返し(反復):目標が達成されるまで同じ動作を続けること(プログラムは、条件が揃うまで処理を繰り返す)
これら3つの要素は、日常生活の中にいくらでもある。あまり意識してはいないが。
たとえば、じゃがいもをゆでるときは、まずじゃがいもを洗う。次に皮をむく。料理によっては皮のままゆでる。切ってからゆでたり、ゆでてからつぶしたり切ったりする。何をつくるかにあわせて、手順を決めて実行する。
この中に、すでに分岐が含まれていた。その料理は皮が付いているままか、皮をむいた料理か、これは分岐である。ゆでる前に切るか、後から処理するかも分岐である。
そして、ゆでているときには反復がある。柔らかくなっているかどうかを、竹串を刺して確かめる。まだ固ければ、ゆでる処理を続ける(たとえば図2)。
こんなことを、料理をしながら考えたりはしない。自動的にやっている。しかし、レシピを書くことになると、この手順を意識しなければならなくなる。それがうまい人のレシピは、わかりやすい。そう、レシピはある種のプログラムなのだ。
もちろん、このようなことは教科内容についても当てはまる。
さらに、プログラミングに関わる学習では、プログラムを実行することが欠かせない。実際にプログラムを実行してみて、想定どおりの流れになっていることを確かめたり、逆に想定していないことが起こって修正したりすることで、プログラムの質が高まる。本書の事例では、日常的な出来事を作業の流れや考える手順として捉えて、それを図やフローチャートに表すものが多い。そのような学習では、それがその作業や手順を正しく表しているか、よりよい表し方はないか、その流れで実際に正しく結果が出せるか、などを検討する。つまり、考え出した流れや手順を、自分たち自身で実際にたどるのである。その意味で、プログラミング的思考においても、「実行」はとても重要だ。
もう1つ、要素がある。「相互作用」とでも言おうか。それは、誰かが何かをすることが別の何かに影響を与えるという感覚である。本の紹介文をつくって下学年に読んでもらう活動を考えよう。それによって、本の貸し出し数が変わるかもしれない。通常は、紹介文をつくるところまでしか授業では扱わない。しかし、その結果を追跡すると、自分の活動がほかの人の活動に影響を与えることが実感できる。
このような見方は、これからのプログラミングには不可欠な要素だろう。これは、本書の事例では、バスケットボールの作戦がそれに近い。自分や他者の動きが次の動きに影響を与えることを知り、「柔軟性が必要なことを学ぶことができた」とある。
本書(*1)におけるプログラミング的思考
*1 「プログラミング教育導入の前に知っておきたい思考のアイディア (教育技術MOOK)」発行:小学館
学習指導要領を作成するに当たって、プログラミングについて検討する会議が設置された(「小学校段階における論理的思考力や創造性、問題解決能力等の育成とプログラミング教育に関する有識者会議」)。その議論の取りまとめ(*2)で用いられた言葉が、プログラミング的思考である。
*2「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」2017.6(http://www.mext.go.jp/b_menu/shingi/chousa/shotou/122/attach/1372525.htm)
「自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、1つ1つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力」がその定義にあたる。
同時に、小学校でのプログラミング教育は、プログラムの書き方を覚えることが目的ではないとも強調されており、また、求められる知識・技能としては、身近な生活でコンピューターが活用されていることや、問題の解決には必要な手順があることに気付くことだと記されていることを受けると、ただ体験としてプログラムを介してモノを動かしてみる体験をするだけでは十分だとは言えない。
大事なのは、その背景に、どのような指令(自分の意図)があり、それが何を操作しているのかについての感覚であり、それを思ったとおりに操る思考である。そして、それを教科の学習や日常生活とつなげることも欠かせない。
むしろ、教科の学習や日常生活におけるさまざまな思考を、より論理的にしながら、それがプログラミングにも活かせるようにすることを考えたい。このような考え方をもとに、本書をつくった。
プログラミング的思考の要素
では、どのような思考を扱えば、プログラミングにつながるのか。以下の3つが基本となる。
1. 順序(順次):ものごとを手順としてとらえて実行すること(プログラムは、上から下に順序よく処理を進める)
2. 場合分け(分岐):状況によって次の行動を変えること(プログラムは条件が揃ったときに該当する処理を進める)
3. 繰り返し(反復):目標が達成されるまで同じ動作を続けること(プログラムは、条件が揃うまで処理を繰り返す)
これら3つの要素は、日常生活の中にいくらでもある。あまり意識してはいないが。
たとえば、じゃがいもをゆでるときは、まずじゃがいもを洗う。次に皮をむく。料理によっては皮のままゆでる。切ってからゆでたり、ゆでてからつぶしたり切ったりする。何をつくるかにあわせて、手順を決めて実行する。
この中に、すでに分岐が含まれていた。その料理は皮が付いているままか、皮をむいた料理か、これは分岐である。ゆでる前に切るか、後から処理するかも分岐である。
そして、ゆでているときには反復がある。柔らかくなっているかどうかを、竹串を刺して確かめる。まだ固ければ、ゆでる処理を続ける(たとえば図2)。
こんなことを、料理をしながら考えたりはしない。自動的にやっている。しかし、レシピを書くことになると、この手順を意識しなければならなくなる。それがうまい人のレシピは、わかりやすい。そう、レシピはある種のプログラムなのだ。
もちろん、このようなことは教科内容についても当てはまる。
さらに、プログラミングに関わる学習では、プログラムを実行することが欠かせない。実際にプログラムを実行してみて、想定どおりの流れになっていることを確かめたり、逆に想定していないことが起こって修正したりすることで、プログラムの質が高まる。本書の事例では、日常的な出来事を作業の流れや考える手順として捉えて、それを図やフローチャートに表すものが多い。そのような学習では、それがその作業や手順を正しく表しているか、よりよい表し方はないか、その流れで実際に正しく結果が出せるか、などを検討する。つまり、考え出した流れや手順を、自分たち自身で実際にたどるのである。その意味で、プログラミング的思考においても、「実行」はとても重要だ。
もう1つ、要素がある。「相互作用」とでも言おうか。それは、誰かが何かをすることが別の何かに影響を与えるという感覚である。本の紹介文をつくって下学年に読んでもらう活動を考えよう。それによって、本の貸し出し数が変わるかもしれない。通常は、紹介文をつくるところまでしか授業では扱わない。しかし、その結果を追跡すると、自分の活動がほかの人の活動に影響を与えることが実感できる。
このような見方は、これからのプログラミングには不可欠な要素だろう。これは、本書の事例では、バスケットボールの作戦がそれに近い。自分や他者の動きが次の動きに影響を与えることを知り、「柔軟性が必要なことを学ぶことができた」とある。
Copyright (c) 2018 IID, Inc. All rights reserved.
「プログラミング」をもっと詳しく
「プログラミング」のニュース
-
プログラミング言語「R」に脆弱性、任意のコード実行の可能性5月3日18時37分
-
【夏休み2024】ライフイズテック、10コース以上のAIキャンプ参加者募集5月2日16時45分
-
Pythonがサイバーセキュリティ分野で人気がある5つの理由5月2日11時10分
-
【年収1,308万円】Kotlinエンジニア2024年最新|フリーランス副業調査5月2日10時46分
-
『L-WAVEデジタルアカデミー』が「札幌 初心者でも安心のプログラミングスクール」で第1位を獲得!5月1日10時46分
-
人材紹介のワークポート 東京都の「女性ITエンジニア育成事業」を受託 プログラミングコース、インフラコースの訓練を実施4月30日16時16分
-
【平均1,362万円】プログラミング言語の年収ランキング1位「Goエンジニア」の年収調査4月28日7時5分
-
EMI抑制の簡略化や消費電力削減に貢献する車載用DCモータ向けゲート・ドライバICを発表4月26日18時16分
-
鹿児島県教育委員会とライフイズテック、「誰一人取り残さない」ICT教育の実現に向け、連携協定を締結4月26日15時46分
-
【5日間限定】受講料が最大15%OFF!プログラミングのオンライン学習『忍者CODE』がGW直前キャンペーンを開催!|ラグザス・クリエイト4月26日11時46分