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

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

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

【ワークショップレポート】チャイルドハッカソン#01 DAY1

ルビィの超訳は少しお休みさせてもらって、しばらくは、この連休に参加していた

こちらのイベントをレポートします。


昨年の3月に大学院を修了したわけですが、私が通っていた虎ノ門キャンパスの本校は、金沢(金沢工業大学(K.I.T.))です。

 

いつか、金沢に行ってみたいと密かに思っていたところ、念願叶ってお声がけ頂くことができました。

 

このハッカソンは、K.I.T.の学生を中心に、社会人の方も参加していて

今回は約60名もの方が、3月の貴重な連休を使って集まりました。

 

金沢は連休中とても良いお天気で

北陸地方には珍しい天候だったようですが、ハッカソンの会場はそんなこととは無関係に、熱気に溢れていました。

 

 

大人が本気を出している傍らで、初の試みとして実施されたのがチャイルドハッカソンです。

 

ハッカソンに参加したくても、休日は子どもの面倒を見なければいけなくて...

という人のために、大人がハッカソンに参加している間、子どもたちをお預かりして

子どもは子どもで楽しんでしまおう

というコンセプトで用意されたものです。

 

とはいえ、開催当日になっても、何歳くらいの子が、何人くらい集まるのか?

3日間連続とはいえ、毎日来てくれるのか、何時ころに来てくれるのか?

といったことが、全く分からない状態で…

 

子どもが参加してくれないことには成り立たないし…

ということで、3日間ずっとドキドキでした(笑)

 

何の事前準備もできず、出たとこ勝負という、私の最も苦手とするシチュエーションでしたが

これも経験と思って、その緊張感も含めて楽しんできました。

 

 

自宅からわずか3時間で金沢駅に到着。

出迎えてくれたのは、鼓門です。

到着したときは近すぎて気づきませんでしたが、この上にあるガラス張りのアーチが本当に美しいデザインでした。

(帰りがけ、駅に向かう途中で初めて見ました)

f:id:dig_learning:20170320202000j:image

 

バスに約30分ほど乗ると、野々市市にある金沢工業大学に到着。

ハッカソンの会場は、大学とは思えないおシャレな場所でした。

f:id:dig_learning:20170320202016j:image

 広々としたワークエリアの一角に、チャイルドハッカソンのエリアを設けていただいたのですが

こんな素敵な&居心地の良い場所を独占させてもらい、はじめからテンションが上がります!

f:id:dig_learning:20170320202034j:image

 今回のハッカソンに向けては特段、やり方のイメージをもっていなかったので

とりあえず最低限の道具として、littleBitsとレゴブロックを用意してもらいました。

その他の工作道具は、過去に使ったものをいくつか私が持ち込みましたが、結果的に役に立ったので、わざわざ運んだ甲斐がありました。

f:id:dig_learning:20170320202102j:image

そして迎えた初日。

今回のハッカソンのテーマがオリパラということで、まずはスポーツ庁のオリパラ課長より

金沢からオリパラを考える視座を与えて頂きました。

 

このお話がとても面白くて、東京五輪の背景がよく理解でき

少し他人事だったオリパラが、ようやく自分ごとになった瞬間でした。

 

このお話の中で、金沢は既に海外旅行客の誘致には成功しているので

観光客向けのアプローチはこれ以上、力を入れなくても良さそうですね

といった発言がありました。

 

そうかぁ、と思いながら聴いていたのですが

なぜかこの言葉がずっと頭から離れず、結果的にこの発言が

今回のチャイルドハッカソンの作品を仕上げる際のコンセプトに繋がることになりました。

その辺はまた後ほど。

 

 

他にも、マイクロソフトからHoleLensのエバンジェリストや、元稚内北星学園の丸山先生、金沢市長からのお話がありました。

(私は途中までしか聞けませんでしたが、参加者にはとっても有意義だった様子)

 

 

さて、初日に来てくれたのは、5歳のY君。

f:id:dig_learning:20170320202137j:image

 はじめは、自分がもってきた世界地図のプリント(世界中の国と場所を記憶している!)から顔をあげることなく

なかなか参戦してくれなかったのですが

一緒に新品のレゴブロックを開封し、littleBitsを触り始めるとあっという間に夢中になって

それからなんと4時間!!!

ぶっ通しで遊び尽くしました。

 

最後には疲れすぎてしまい、まだ遊びたいけど疲れた、けど帰りたくなくて駄々をこねていましたが

そんな姿も含めて、一緒に遊んだ4時間はとっても楽しかったです(^^

 

最終的に、作品として仕上げることができなかったので

彼も私も、とても悔しかったのですが

それが逆に、貴重な学びの機会にもなりました。

 

私の方は、オリパラをテーマに何か作らないといけなくて

何とか彼にその気になってもらいたかったけれど

何の目的で、何を作るのか

それを大人側の事情でどこまで枠にはめて良いものか?

迷っていました。

 

なので、まずは本人のやりたいようにやってもらおうと

オリパラの話にも触れず、彼の興味のままに付き合っていました。

 

とはいえ、こちらも焦るわけで…

 

そうこうしているうちに、littleBitsの扱いに慣れてくると手出し無用の雰囲気になり時間切れ。

 

個人参加で出入り自由の単発ワークショップなのに

最終日にはグループでの発表がある

という形の難しさを痛感した瞬間でした。

 

次にもし、同じようなシチュエーションがあったらどうするか考えてみました。

 

きっとまた、とことん子どもの興味に付き合うと思います。

その中で、子どもが興味関心のあるところ、ないところを会話を通じて探っていくのかな。

大人の事情はあれど、子どもの視点からしか見えないものがあるはずなので

寄り添うことで、それを発見したり引き出したりしながら

最終的に、それをベースとしたコンセプト作りを大人がお手伝いすれば良いのだと思います。

 

発想が逆だったんですよね。

大人の事情に子どもを付き合わせるのではなくて

子どもの事情に大人が合わせる。

 

大人は、それだけの器量を求められている。

 

なかなか、やり甲斐のある分野に足を踏み入れてしまいました(笑)

 

そんなわけで初日は若干の後悔とともに終えて…

翌日に備えます。

『ルビィのぼうけん』勝手に超訳 Vol.07

5章、ユキヒョウの続きです。

 

プログラミングの考え方として「繰り返し処理」を捉えるならば

その本質は、効率的な処理、と言えます。

 

同じことの繰り返しによる結果として

ユキヒョウの身体についている柄、宝石が乗っていた屋根の模様、ハシゴ

あたりがモチーフとして紹介されていることは前回説明しました。

 

同じ模様をたくさん作るなら、繰り返し同じ処理をすれば良い

という話なのですね。

f:id:dig_learning:20170311235343p:plain

 

ここでもう一歩、掘り下げて

それはつまりどういうことなのか?

と考えてみると、効率的な処理をするための手段である

と言えます。

 

つまり、漫然と同じ処理を繰り返すのではなく

いかにして、効率良く処理するか?

(できるだけ少ないステップで処理する)

と考えてみると、繰り返し処理を考えるときのポイントが2つ見えてきます。

 

それは

  1. 同じ種類の情報をまとめること
  2. 繰り返すための条件を設定すること

です。

 

まず一つめの、同じ種類の情報をまとめること

について説明します。

 

例えば、これから洗濯物を干そうとするシーンを想像してみてください。

目の前には洗濯物の山があって、ハンガーやタコ足などを使って一つ一つ片付けていくわけです。

f:id:dig_learning:20170313211900p:plain

 

どうやって片付けますか?

洗濯物の山に手を伸ばして

まず手にとったシャツの袖をハンガーに通してそのまま物干しにかけ

次に靴下を洗濯バサミでとめて

今度はバスタオルのシワを伸ばして広げて物干し竿に広げ

そしてまたシャツを手に取り…

あっちへ行ったりこっちへ行ったり...

 

なんてやってませんか?

f:id:dig_learning:20170313212013p:plain

 

 

こんな非効率な家事を続けていたら、お母さんたちの時間はいくらあっても足りません。

そこで、繰り返しの考え方を使って改善してみましょう。

 

まず、洗濯物を同じ種類にまとめます。

  • シャツなどハンガーにかけるもの(大人用、子ども用をさらに分けて)
  • タオルなど物干し竿に直接広げるもの
  • 靴下など洗濯ハンガーにまとめて吊るすもの

などなど。

f:id:dig_learning:20170313212143p:plain

 

このとき、シャツとか靴下といった洗濯物の種類で分けるのではなく

洗濯物を干す場所とか方法で分類するのが重要です。

 

そうすれば

ハンガーに袖を通して物干し竿に吊るす

という処理をシャツの数だけくり返すにしても

ベランダの中を行ったり来たりしないで、その場でハンガー掛けの処理を片付けられますね。

 

 

そして2つめのポイントである、繰り返すための条件を設定します。

 

条件には3種類あります。

まず、開始のための条件

 

直径30センチほどの洗濯ハンガーに干すことを考えてみます。

https://www.nitori-net.jp/wcsstore/ec/images/Image/catalog/8500502/646X1000/850050201.jpg

開始条件はまず、当たり前ですが干すべき洗濯物が存在することです。

しかも、バスタオルのように大判のものではなく、靴下など洗濯バサミを1つか2つ使う小物でなければなりません。

 

もし靴下が5足あれば、その数だけ洗濯ハンガーに吊るす作業を繰り返して

洗濯物カゴが空っぽになれば終わりです。

 

f:id:dig_learning:20170313212717p:plain

これが終了条件です。

 

洗濯物がなくなったら、というのは1つの終了条件ですが

それ以外にも、ハンガーが5本しかないのであれば、5本全部使ったら

(もしくは、残りが0本になったら)終わり

というのも終了条件です。

 

 

そしてもう1つの条件が繰り返すための条件です。

これもいろいろありますね。

 

例えば、シャツだけを一気に片付けるのであれば

洗濯物がシャツであること

かつ

ハンガーが1本以上残っていること

 が繰り返しの条件になります。

 

終了条件と繰り返しの条件が同じ場合もありますが、分かりやすく考えるためにも、

・開始条件

・終了条件

・繰り返し条件

の3つがあると理解するのが良いと思います。

 

 

こうやって考えてみると、繰り返し処理というのは単に同じことをくり返す

という意味なのではなく

効率的な処理をするための手段である

ということが分かるのではないかと思います。

 

つまり、最初に種類で分類して、繰り返し処理のための条件をどのように設定するか

ということをちゃんと考えることが、効率良くものごとを進める上でとても重要だということです。

 

プログラミングというちょっと特殊な世界でやっていることは、結局のところこういった考えに基づいてプログラムコードを書いている

ということにすぎません。

 

家庭でもし、この繰り返し処理の考え方を子どもたちに伝えるのであれば

どうすれば家事を効率良く終わらせることができるか?

ということを一緒に考えてみると面白いと思います。

 

洗濯然り、掃除然り、料理然り。

家庭の中には、プログラミングの考え方が役に立つ場面が意外とあるんですよね。

それは、プログラミングの考え方は基本的に「効率が良いこと」を目指しているからです。

 

プログラミングの考え方は、次世代の子どもたちが受ける特別な教育によって手に入るもの

ではなく

私たち大人が普段の日常や仕事の中でも当たり前に使っている考え方と同じである

ということを、まずは大人に理解してもらいたいと最近考えるようになりました。

ルビィの超訳を通じて、そんなことが少しでも伝えられたらと思っています。

 

 

子どもと一緒にこんなことをやってみたよ、という方がいたら、是非教えてください!

『ルビィのぼうけん』勝手に超訳 Vol.06

ずいぶん間が空いてしまいましたが、以前の連載を再開しようと思います。

 

去年の夏頃に出た『ルビィのぼうけん』という本の超訳です。

『ルビィのぼうけん』特設サイト

 

エンジニアでもある著者が、女の子や子どもでもプログラミングに親しみをもてるように

その考え方を可愛らしいイラストの絵本形式で紹介しているものです。

 f:id:dig_learning:20170310174346j:image

 

発売当初は、国内でもイベントがあったりして話題となりましたが

その後、どうなのでしょう?

 

見た目かわいらしい絵本ですが、手にとって私が最初に感じたのは

「難しすぎる…」

ということでした。

 

絵本という手段は良いのですが、プログラミングの概念を抽象化しすぎていて

絵や物語ではかえって伝わらないように感じました。

(分かる人には分かって、なるほどね、とニヤッとする感じ、ですね)

 

後半にある大人向けの説明は親切に書いてあるので

内容は理解できると思うのですが、絵本との繋がりが分かりづらいんですよね…

 なので、前半の絵本と後半の解説が分断されてしまっているように感じます。

 

それに、この本に書いてある考え方が理解できたとして

それで?

というところがフォローされないので、読者としては受け止め方に迷うのではないでしょうか。

 

理解できている人にとっては、なるほどね、そういう表現&説明のやり方があるのね

と読めますが

そうでない人にとっては、著者が求めるところに全くたどり着けないのではないか?

 

という問題意識が、この超訳を始めたきっかけです。

ちなみに、第一回はこちら。

『ルビィのぼうけん』勝手に超訳 Vol.01 - プログラミングの考え方を学んで未来を創る力を身につける『探究型プログラミング学習』

 

 

さて、前書きが長くなりましたが。

 

第5章のユキヒョウのお話から続けます。

 

この章は比較的、分かりやすいですね。

テーマは「繰り返し」です。

 

モチーフとして、ユキヒョウの身体の斑点模様だったり、宝石が乗ってしまった屋根の柄だったり

ルビィが作ったハシゴだったり

とあちこちでこの「繰り返し」の結果生まれたパターンを可視化した表現があります。

 

ユキヒョウは機嫌が悪い

と書いてあるのですが、それはこの美しいパターンを宝石によって邪魔されたからなんですよね。

繰り返しによって生まれるパターンは美しい

という感性なのでしょうが、なるほどと思ったり思わなかったり…

 

大人向けの解説のところには、ループ処理を体験するために、絵を並べたり踊ってみたり

といったワークが紹介されています。

 

それもまぁ、良いと思うのですが、繰り返しの概念をプログラミングの中で使うときは

繰り返すための条件(始める条件、続ける条件、終わる条件)

をちゃんと設定できることが重要です。

 

それを間違えると、いわゆる無限ループに陥ります。

(永遠に終わらなくなってしまう)

 

 

繰り返しの概念自体は幼児でも理解できるので

むしろ、繰り返すための条件をどうやって設定するのか?

ということを考えるきっかけにすると、面白くなるように思います。

 

ということを、次回書いてみます。

@tanpro-lab