探究型プログラミング学習(探プロ)

プログラミングの考え方を学んで、未来を創る力を手に入れる

プログラミングの考え方を学んで未来を創る力を手に入れる

なぜプログラミングの考え方(例:アルゴリズム)を学ぶのか?

以前に、プログラミング的思考という概念を自分なりに整理したことがあります。


その中では、「モノゴトを効率化する」ことに着目しました。

しかし、「効率的」という言葉だけだと少し足りないなぁ、とこの頃は感じています。

 

最近のワークショップでは、コンピュータと人間の違いは何か?

といった話をよくしています。

何が違うと思いますか?

 

人間は生き物だがコンピュータはそうではないとか、人間は意志をもつがコンピュータにはないとか、そういう話はさておき。

 

コンピュータには出来るが、人間には難しいこと。

例えば、複雑な計算を超高速で実施する、とか、休憩なしで動き続ける、大量の情報を記憶する、といったスペック(性能)の違いがありますね。

どんなに超人的な人間でも、一定を超えるてしまうとコンピュータには叶いません。

 

実は、コンピュータから学ぶことで、私たち人間にも出来るようになることがあるのです。

 

コンピュータと人間の違いとして、こんなことを伝えています。

コンピュータは、命令に対していつも必ず、同じ結果を返すことができる。

でも人間は、そうではない。

 

例えば、私たち大人は子どもたちによく命令をします。

「早く起きなさい・早く寝なさい」

「宿題をしなさい」

「片付けなさい」

「忘れ物をなくしなさい」

などなど。

 

そうすると、子どもたちはどんな反応をしますか?

毎回、その通りに動いていますか?

そんなわけないですよね。

 

子どもたちだけではありません。

大人である私たちだってそうです。

職場で、家庭で、あらゆるシーンで、いつも必ず、同じ結果を出す、というわけにはいかないと思うのです。

疲れていたり、ついうっかり忘れたり、気分が乗らなかったり・・・

だって人間だもの、ですよね。

 f:id:dig_learning:20180225002331p:plain

 

ではなぜ、コンピュータには出来ると思いますか?

 

答えは、コンピュータはアルゴリズムで動いているから、です。

f:id:dig_learning:20180225002424p:plain

アルゴリズムとは、命令の順番とルールを決めるものです。

コンピュータが実行するプログラムは命令の集まりです。

その命令を、どんな順番で、どんなルールで実行するのか?

それを決めたものがアルゴリズムです。

 

アルゴリズムがないとコンピュータはプログラムを動かすことができません。

逆にアルゴリズムがあれば、コンピュータはいつも必ず、同じ結果を出すことができるのです。

なぜなら、アルゴリズムで決められている通りに動くだけだから。

 

では、人間もアルゴリズムの通りに動けば良いのでは?

と思いませんか。

 

例えば、歯磨きのシーンを思い浮かべてみてください。

誰しも一度は、歯科衛生士さんから指導してもらったことがあると思います。

でも、毎日毎日繰り返しているうちに、我流になっていませんか?

その磨き方、本当に虫歯を防ぐことができていますか?

 

もし、正しい歯磨きのアルゴリズムがあったら、それで100%虫歯を防げるとしたら、そのアルゴリズムを覚えたいと思いませんか?

 

アルゴリズムを学ぶ理由は、ここにあります。

 

これからの時代を生きる子どもたちには、プログラミング的思考が重要だ、という話を聞いたことがあると思います。

なぜ重要かというと、多くの場合、

コンピュータや技術の仕組みを理解し、それらを使いこなして問題を解決できるようになることが必要になるから 

と言っているようです。

 

それは正しいと思います。

でも、やはりこれだけでは足りない。

 

 

コンピュータや技術について学ぶ意味を、もう少し掘り下げて考えてみると、単なるツールとして使いこなすのではなく、そこにある「考え方」を問題解決に応用することが求められているはずです。

 

アルゴリズム以外にも、身近な問題解決に役立つ「考え方」は他にもあります。

探プロではこれらをまとめて、「プログラミングの考え方」と呼んでいます。

 

アルゴリズムを取り入れることで解決できる身近な問題。

さて何があるでしょう?

是非考えてみて下さい。

 

「プログラミングの考え方」を活用した問題解決ってこういうこと、という話を分かりやすく伝えるために、ワークブックを作っています。

f:id:dig_learning:20180225003214p:plain

いま、Vol.1、Vol.2が完成していて、Vol3の製作中です。

Vol.1 アルゴリズム-くり返し処理-

Vol.2 アルゴリズム-分岐処理-

もう少し数が増えると本になるとかならないとか・・・

 

印刷したものが欲しい方はこちらまでご連絡ください。

info@tanpro-lab.jp

 

近日中に、Webサイトからもダウンロードできるようにする予定です。

 

さてVol.3をそろそろ作らなければ・・・

【レポート】プログラミングで問題解決~ポストはなぜ赤いのか?~ 1/2 北区立桐ヶ丘郷小学校 2018.01.19

2018年1月19日、東京都北区にある桐ヶ丘郷小学校にて、4年生65名を対象にプログラミングの考え方を使った問題解決の授業を提供しました。

f:id:dig_learning:20180122225240p:plain

小学校での授業は、昨年10月に同じ北区の袋小学校6年生に提供したものから2回めとなります。

 

校内へ入るとこんな案内があってびっくり。

一生に一度の経験かもしれないと思い、記念におさめてきました。

f:id:dig_learning:20180122225401p:plain

 

ちょうど給食後の外遊びが終わる時間で、子どもたちは大急ぎで掃除&片付けをして授業のスタンバイを手伝ってくれました。

2つのクラスに別れて、それぞれ45分間の授業です。

f:id:dig_learning:20180122225322p:plain

 

袋小学校でやったときには、他者の問題をどのように見つけるか?

をコンセプトにして問題発見に重きを置いていました。

今回は、問題解決の方に注目して、littleBitsを使ってアルゴリズムを学習するスタイルに変えています。

学年によって、伝えたいメッセージによって、この辺を臨機応変に変えられるのが探プロの良いところかもしれません。

 

テーマは『ポストはなぜ赤いのか?』

 

子どもたちにとって身近なものをテーマに問題解決の話を伝えるにはどうしたらよいか?

ずっと考えていたのですが、担任の先生との会話の中から意外なヒントを得てポストに辿り着きました。

 

東京都の4年生は社会科の時間に、明治から昭和時代にかけて東京都の基礎を築いた偉人について学ぶようなのですが

その中に、後藤新平という方がいます。

後藤新平 - Wikipedia

交通や衛生など、東京のインフラ環境を整える偉業を成し遂げた方ですが、記録を読んでいくと意外な情報を発見することになりました。

なんと、ポストは赤、と決定したのが後藤新平氏だったというのです。

 

後藤新平が人生をかけたのは社会課題の解決でした。

そして探プロが願っていることは、社会における問題を発見し、解決する力(未来を創造する力)を子どもたちが身につけることです。

全ての文脈がつながって、今回のコンテンツが出来上がりました。

担任の先生には本当に感謝です!

 

これが明治時代、最初に登場したポストだそうです。

f:id:dig_learning:20180123234007p:plain

そして、これが現代のポスト。

f:id:dig_learning:20180123234051p:plain

さて、一体何が変わったでしょうか??

素材、色、形、時代を経て変わったことがいくつかあります。

なぜ、変わったのでしょう?なぜ、変える必要があったのでしょう?

 

子どもたちに問いかけながら、一緒に考えていきます。

変える必要があった、つまり、当時のポストには問題があった、ということです。

 

そもそも、問題とは何でしょうか?

私は、問題には3種類あると思っています。

f:id:dig_learning:20180123234422p:plain

子どもたちにとって一番身近なのは1つめの問題でしょうか。

1+1は?愛媛県の県庁所在地は?

といったものです。

 

2つめの問題は、忘れ物を防ぐには?給食のお代りをGetするには?のような、問題に対する答えが何通りもあるようなものです。

今回はこの2つめの問題に着目しました。

 

ちなみに3つめの問題は、スマホAIスピーカーのように、登場して初めて私たちがそれまでに感じていた不便を認識するようなものです。

誰もが問題として認識していないものを発見し、問題だと定義できるかどうか?

いわゆる発想力が求められるところもあり、ロジカルに突き詰めるだけでは見えてこないものですが、子どもたちには是非、こうした問題にこそチャレンジしてほしいと思っています。

探プロのコンテンツとしてもいつか、提供できたらと考えています。

 

さて、この2つめの問題についてもう少し補足します。

f:id:dig_learning:20180123235746p:plain

問題ってたくさんあります。

先生や親から指摘されたことや、自分で気づいたこと、友だちから相談を受けたこと、ニュースで見たこと、あれもこれも問題だとして、一体どれを解決すれば良いのか?

 

たくさんある問題の中から、取り組むべき問題を見つけるための軸を考えてみます。

その問題は誰にとっての問題か?

その問題はどれくらい解決を急いでいるのか?

この軸でみると、右上が所謂、社会課題と言われるエリアで、後藤新平が注目したのもこのエリアであることが分かります。

君たちも是非、後藤新平のようにたくさんの人の役に立つ問題解決にチャレンジしてほしい、という願いをこめてお伝えしました。

 

さて、問題とは何か?解決すべき問題はどうやって見つけるのか?

について説明した後は、いよいよ問題解決についての解説と実践に移ります。

 

その2へつづく。

dig-learning.hatenablog.com

【レポート】プログラミングで問題解決~ポストはなぜ赤いのか?~ 2/2 北区立桐ヶ丘郷小学校 2018.01.19

次は問題解決のお話です。

f:id:dig_learning:20180124000522p:plain

明治時代のポストに問題があることは分かりました。

では、どのように解決するか?

 

解決の手順としては、まず最初に原因を探ります。

これだけで何時間でも話せそうですが、原因の深掘りはテーマではないので軽めに。

そして、どのようにすれば原因を取り除けるかを考えます。

 

ここでは、素材を変えること、色を変えること、が問題解決の手段でした。

これから伝えるプログラミングというのも、同じように問題解決の手段になり得るものです、という形でプログラミングの話に移ります。

 

f:id:dig_learning:20180124001258p:plain

プログラムは命令の集まりです。

そのプログラムを実行するコンピュータは、いつも同じ結果を出します。

1+1を計算せよ、とコンピュータに命令すれば、必ず「2」と答えます。

プログラムのバグがない限りいつでも必ず同じ結果を出すことができます。

 

一方で、君たちはどうでしょうか?

先生や親から言われた命令に対して、いつも同じ結果を出すことができますか??

ここで苦笑しながら首を横にふる正直な子どもたち(笑)

 

何が違うのでしょう?

コンピュータにあって君たちにないものは何でしょう?

 

それは、アルゴリズムです。

f:id:dig_learning:20180124001634p:plain

このアルゴリズムを、littleBitsを使って実際に体験してみます。

f:id:dig_learning:20180124001809p:plain

littleBitsは本当に良い教材だなぁ、と今回あらためて実感しました。

アルゴリズムの学習をするのには、紙と鉛筆だけでも良いのですが、動きがないと結果を実感し難いので小学生には物足りません。

かといって、パソコンを使って実際のプログラミングをしながらでは覚えるべきことが多すぎてアルゴリズムだけにフォーカスして学習するのが難しくなってしまいます。

 

その点、littleBitsならアルゴリズムだけの学習に専念できますし、手を使って実際に動きを確かめながら理解を進められるので学習効果はとても高いと思います。

 

当日はアルゴリズムの基本である3つの構造について、littleBitsのモジュールを組み合わせながらプログラミングを体験してもらったのですが、初めての子どもたちにとっては適度に難しかったようです。

なかなか、モジュールを組み合わせる「順番」や「ルール」を意識することに辿り着きません。

 

工作であれば、電源に繋いでライトがつけばそれでOKなのかもしれません。

でも、「スイッチをONにしたら、まず白色のライトをつけて、次に赤色のライトをつける」アルゴリズムを作るのだから、決められた通りに動くように「順番」を決めなければいけません。

 

「スイッチをONにしたら、白色のライトと赤色のライトをずっとつけ続ける」アルゴリズムを作るのだから、白色のライトも赤色のライトもどちらも点きっぱなしになるように「ルール」を決めなければいけません。

 

ものすごく単純なことをやっているだけなのですが、言葉で示すことと、実際に手を動かすこと、そして結果を出すことの全て繋げるのは意外と難しいです。

やってみると7割くらいの子たちが不正解だったので、自力で解決できるように少しずつ個別にヒントを出しながら進めました。

すると、あちこちから

「あ、そういうことか!」「なるほど!」「できた!」

といった声があがります。

こうやって失敗→成功の体験を積み重ねることで、身体にアルゴリズムを染み込ませることができると良いですね。

アルゴリズムがあれば自分たちも確実に結果を出せるようになるのだから!

 

最後に、これまでに学んだアルゴリズムを使ってこんな問題を解いてみます。

f:id:dig_learning:20180124002803p:plain

あともう1コマ時間があれば、この先を一緒に考えたいところでしたが、残念ながら時間切れ。

解決サンプルを1つ紹介してこの日の授業は終わりとなりました。

 

終了後、子どもたちからは「またやりたい!」のリクエストをたくさんもらいました。

もちろん嬉しいのですが、何より、先生方がこの重要性に気づいて評価してくださることがそれ以上に嬉しいです。

 

あぁ、プログラミング学習っていうのは新しくて難しそうで自分には分からないと思っていたけど、それ私知ってるわ、という気付き。

 

子どもたちの問題なんだから、本当は子どもたちが自分で解決策を考えなきゃいけないのに、先生たちは忙しさを理由につい、答えを与えてしまう。
それでは考える力は育たない。
解決策を教えるのではなくアルゴリズムを教えてあげれば、自分で解決できるようなるのではないか?という気付き。

 

多様性というのは、答えは一つではないということ
だとすれば、3つめ、4つめの答えを自分の頭で考えられることが重要になる。
このときに、アルゴリズムをはじめとするプログラミングの考え方を知っていて
それを共通言語として使いこなすことができるとしたら、生産的な問題解決ができますね
という校長先生からのフィードバックはプログラミング学習をこれから取り入れていこうとする学校にとって、とても重要なポイントを含んでいると思います。

 

終了後、今回の学習を担任の先生がこんな形でまとめてくださいました。

「プログラミング」と聞くとすぐに「コンピュータ」という発想になりがちですが、そうではなく

『いろいろな学習場面や生活場面で問題点を見つけ、それを解決していくためにはどうしたらよいのか。

また、どんな順番でどんなルールをもって解決していくのが効率的かつ確実なのか。』

という思考過程であることを学びました。

探プロで伝えたいことを汲み取って見事にまとめて頂き、嬉しい限りです。

 

問題発見のところをもっと深掘りするのも面白そうですし、現代のポストを解決するところもやってみたいし、子どもたちが妙に関心をもっていた(笑)忘れ物を防ぐには?という問題にもチャレンジしてみたい。

今回の授業をきっかけに、さまざまな発展形を描くことができそうです。

頑張って機会を作りますね!

 

桐ヶ丘郷小学校の皆さま、ありがとうございました!

@tanpro-lab