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

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

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

【告知】8/21 大学生と一緒にlittleBitsを使ってピタゴラ装置を作ろう

ワークショップのご案内です。

8月21日月曜日
平日ですが探プロとmanmaさんのコラボでご提供します!

manmasummerevent.peatix.com

 

こちらもテーマはピタゴラ装置なのですが、ただのプログラミングワークショップではないのです。

●大学生と一日遊んでもらえる!
大学生が身体を張って遊んでくれます。
夏休みの平日を持て余している小学生はぜひ!

●荒川線沿いをフィールドワーク!
街歩きをしながらピタゴラ装置の仕組みを考えます。
あの公園とあの店がこう繋がって…リアルな街をそのままピタゴラ装置にしてしまおうという壮大な企画。
街歩きの途中で拾ったものも装置に使えるかも?!

●littleBitsと探プロ!
ピタゴラ装置にはlittleBitsをaddin.
フィールドワークと工作だけじゃない、社会で役立つプログラミングの考え方まで学べてしまいます。

お仕事前にお子さんを預けて
お仕事が終わったら子どもたちが作るピタゴラ装置を見に来てください。
間に合わないと見られないから仕事もはかどりそうでしょ?(笑)

たくさんのご参加を…と言いたいところですが人数限定なのでご容赦ください。

関心のある方に届くように、シェアして頂けたら嬉しいです!

【ワークショップレポート】ピタゴラ装置をつくろう! 2/2

参加者の皆さんは1ヶ月の間、各家庭でピタゴラ装置の設計を進めてくれました。

Facebookのグループページを私も拝見していたのですが、どの家庭も真剣に取り組んでいて期待が高まりましたよ!

 

当日は前回と同じメンバーが勢揃い。

各家庭から材料を持参して集まったので、前回よりもなんだか密度が高いような気がしたのは気のせいでしょうか(笑)

 

2回めのワークショップ、とても楽しみにしていたのは事実なのですが、実は1つだけ不安がありました。

それは、littleBitsを使ってもらえなかったらどうしよう...ということ。

 

littleBitsが手元にない状態でlittleBitsを使ったピタゴラ装置を設計しなければいけなかったので、皆さんとても苦労されたようです。

途中で、モジュールの一覧表などを作ってご提供したのですが、事前に共有された動画をみてもlittleBitsの出番がなさそう...

 

そんな不安を抱えてのスタートでしたが、1つ嬉しい出来事が!

ワークショップの途中、littleBitsのモジュールを取りに来た男の子がノートをもっていて

そのノートには、私が送ったモジュールの一覧表が貼り付けてメモがしてあったのです!!!

嬉しすぎました。

結果的に、すごく上手にlittleBitsを活用してくれたので本当に嬉しかったです。

 

 

さて、開始時間になったら早速、工作の開始です。

3つのグループはそれぞれ、やり方が違って面白かったですね。

まず全体をつないで、全体が通るように何度でも繰り返して調整をするグループがこちら。

f:id:dig_learning:20170731234457p:plain

こちらのグループは、かなり早い段階で全体像が見えていて、大人も、

いや大人の方が入り込んでいました(^^

あとで気づいたのですが、何度も繰り返し試せたのはドミノが少なかったからなんですよねー

構造がシンプルであれば、綿密な設計をする前にざっと動かして、細部を微調整するというのはプログラミングでもよくある話です。

まずは動かす!!

そのために構造はシンプルに。

かつ

繰り返しに強い形であること

というのがダイジな要素ですね。

あ、これで一つのコンテンツが作れそう。。。

 

そしてこちらは、念入りに個別の作品を仕上げるところからスタート。

f:id:dig_learning:20170731235436p:plain

個々の動きをしっかり仕上げてから、お互いの作品を繋げる作戦でした。

設計がうまくいっていれば、繋げた瞬間に動くように!!!なるはずでしたが

そうはいかなかったですね(^^;;;

これもプログラミングの世界でよくある話です。

個々の単体テストはOKなのに、結合テストに臨んだら全然OKが出ない...

よほどしっかりした設計に基いていないと繋げるのに苦労します。

インタフェースって難しい...

 

そして3つめのグループは、全体を繋げてから個別に仕上げていきます。

f:id:dig_learning:20170731235702p:plain

ホース...

見ていて思ったのですが、ピタゴラ装置を作るのにホースは必須ですね。

安定感が違います(笑)

それはさておき。

一度全体を繋げて動きを確認してから細部を調整するというのも、プログラミングの世界でもよく見かけます。

内部を作り込む前に、インタフェースだけ決まった状態でまずは繋げてしまう。

繋がることが確認できてから、各モジュールの中身を作ります。

こうすることで、もし動かない場合にはインタフェースに問題があるのではなく、各モジュールの中身に問題があるということが判別できるようになります。

 

3つのやり方のどれが良いというわけではないのですが、たまたま違うアプローチになったのがとても興味深いなぁ、と思いました。

今度、事例紹介で使ってみようかしら。

テスト駆動開発とか、そんなテーマでも何かできそうですねぇ。

 

 

さて、工作時間は約90分とったのですが、皆さんの集中力がすごい。

途中でわ~とか、きゃーといった悲鳴?雄叫び?のような声があちこちから聞こえて面白かった~

 

いろいろと名場面があるのですが、(一応)littleBitsを使ったピタゴラ装置という名目もあるので、littleBitsの活用シーンを中心にご紹介しますね。

 

こちらは、スタート台に設置された装置。

f:id:dig_learning:20170801000528p:plain

スイッチONでモーターが回転し、前にある電車を走らせるマシンなのですが、これを作っていた彼女は

動きを考える→必要な機能を考える→該当するlittleBitsモジュールを探す

を何度も繰り返していました。

littleBitsのモジュールを探すときには、何をしたいかがとても明確だったので私もサポートしやすかったですし、作り方がとてもロジカルで素晴らしかったです。

そして最後にはこんな形に進化していました!

f:id:dig_learning:20170801003458p:plain

スタート台の精度はとても高かったですね!

 

こちらはモーターの力で紐を巻き上げる装置。

f:id:dig_learning:20170801001106p:plain

 これを作っていたママさんは、巻き上げる方向とパワーがうまく調整できずにいたのですが、試行錯誤の上なんとか思い通りに動くように!

でも結局これは使われなかったんですよねー

別の形で活かされていたのを見て安心しました!

 

斬新すぎる装置はこちら。写真右下に注目です。

f:id:dig_learning:20170801001514p:plain

床に放置されているだけのように見えますねぇ。

他の装置につながっていないように見えますねぇ。

え?つながってないの??ほんとうに??

 

なんとこれは、レールを走る電車を応援するための装置でした!!

ピタゴラ装置が稼働するたびに、この応援装置を担当する男の子が手動で(笑)

スイッチを入れてブザー音を鳴らすのです。

こんなにも斬新な発想があるでしょうか?!

練習中も本番も、ずーっと応援してましたねー。おつかれさま!

 

そしてこちらは、個人的に「がんばったで賞」を差し上げたい装置。

f:id:dig_learning:20170801002004p:plain

写真の撮り方が悪くてよく分からないと思うのですが...

右上のところにサーボモーターがついていて、ボールを感知して作動し、少しずつ回転して次へつなげる動作をします。

littleBitsのサーボモーター作者に見せてあげたい素晴らしい出来栄えだったのに写っていなくて本当に残念...

ちなみに、ボールを受け止めたのはこんな装置でした。

f:id:dig_learning:20170801002831p:plain

ゴロゴロと転がってくるボールを圧力センサーが受け止めて、この上にあるサーボモーターを作動させる、といった流れです。

発表のときは一瞬のことだったのでみんな気付かず、あとで解説してもらってなるほどでした。

この仕組を作り上げていたご家庭はずーーーーっとこの装置の品質向上に取り組んでいましたよね。

littleBitsの活用といい、クオリティといい、本当に素晴らしかったです。

 

こちらはゴールに使われたlittleBits。

f:id:dig_learning:20170801002349p:plain

ドミノの最後に白い板が倒れ、その重さでボタンがONになるとライトが点灯する装置です。

発表のときの紹介では

「緑色のパンダが登場します」

とあって???だったのですが、実際に見て謎が解けました。

 

さてさて。

どんな装置が出来上がったのでしょうか?

まずは1つめのグループから。

youtu.be

出だしで少し躓きましたが、各部品の調整を念入りに仕上げた甲斐あって大成功!!

 

次のグループはちょっと長めです。

なぜなら....インタフェースを人が担当するから!

youtu.be

自動で繋げないなら人が繋いでしまえ!

という発想が面白いなぁ、と思いました。

途中で何度も神の手が登場するんですよね(笑)

インタフェースの難しさを一番実感したグループだったのではないかと思います。

 

そして最後のグループ。

例の応援装置が発するブザー音にもご注目ください!

youtu.be

無事に緑のパンダが登場して大喜びです!

 

最高潮に盛り上がったところで、最後に私からのメッセージとして前回と同じことを伝えました。

インタフェースを決めるのがダイジだということは分かっても、実際にすり合わせるのはとても難しかったはず。

この経験を活かして、日常のいろんな場面でインタフェースを決めること、というのを意識してもらえたらと思います。

 

前回お伝えしたときよりも皆さんが大きく頷いていたのが印象的でした。

2日間とっても楽しかったです。

またこのメンバーで、違うプログラムを体験してみたいですね!

また会えるのを楽しみにしています!

 

littleBitsでピタゴラ装置、想像以上に面白いし学びがありました。

【コラム】社会人向けと子ども向けではプログラミング学習の目的が違うはず

国内で子ども向けプログラミング学習の話題に触れるとき、大きな文脈として紹介されるのが経産省が2016年に発表したIT人材に関する報告です。

IT人材の最新動向と将来推計に関する調査結果を取りまとめました(METI/経済産業省)

 

IT人材が足りない、ぜんぜん足りない。

だから育成しなければ

⇨社会人も教養としてプログラミング技術を学んだりITリテラシーを高めるべき、という話へ

 

だから子どもたちも教育しなければ

⇨小学校からプログラミング教育、という話へ

 

このうち前者の話は、たとえばこんな感じのサービスが注目されることに繋がっています。

japan.cnet.com

簡単にいえば、手に職を、という話です。

プログラミングスキルを身につけて転職したり、今の仕事の中でスキルアップしたり

いま求められるスキルであることに間違いはないので、プログラミングスキルを身につけておけば即戦力として自分をアピールできますね。

大人向けのプログラミング教育という話題は、自分自身がIT業界にいることもあって、とても共感できます。

 

一方で、子ども向けはどうでしょう?

 

先ほど紹介した記事を読むと分かると思うのですが、社会人向けのプログラミング学習はあくまでも即戦力であり、身につけているのはいわゆる"コーディングスキル"です。

 

プログラムを書くためには、プログラミング言語といってコンピュータに理解できる専用の言語を覚えたり、その言語を使ってプログラムを書くための環境を使いこなす学習が必要です。

 

社会人のプログラミング学習は、まず専用の環境を自分のPCにセットアップするところから始まって、プログラミング言語のお作法や文法を習い、少しずつステップアップしながら自分でプログラムを書けるようになるまで練習する、というスタイルです。

 

経産省のいうIT人材、というものが社会人向けにも子ども向けにも同じ文脈として使われるとしたら

子ども向けにも同じスタイルが適用されるのが正解なのでしょうか?

つまり、より低年齢のうちから即戦力となる人材を育成すべきなのでしょうか?

 

中学校では技術家庭の時間を使ってプログラミングを学ぶことになっています。

ロボットを操作して簡単なアルゴリズムを学んだり、ホームページを作ったり、大人顔負けのプログラミングをしたり、学校によって様々ではあるのですが、いずれも思考力に加えてプログラミングスキルを習得させようとしているように見えます。

 

技術家庭という科目の目的からして、そうなのかもしれません。

ここでプログラミングに関心をもつ子がいれば、その道へ進むこともあるでしょう。

とここまでは良いのです。

 

問題は、その前の過程である小学校では何を学ぶべきなのか?

というところです。

 

数年前の議論では、プログラミングスキルを学ばせることが目的ではない

とよく言われました。

プログラミングを学ぶのではない

プログラミングで学ぶのだ

といった論調もよく聞かれました。

 

多くの議論を経て、新学習指導要領ではコンピュータを使ったITリテラシーの教育

といった位置づけになりました。

 

ここまでにたくさんの議論がされたのだと思いますが、私が知る限り、小学生がプログラミングを学ぶ目的

について明確に答えているものはないように思います。

 

多くは

思考力を鍛えるため

ITを使った問題解決をするためのリテラシーを身につけるため

といったところでしょうか。

 

では、思考力を鍛える手段はプログラミングでなければいけないのでしょうか?

なぜプログラミング学習なのか?

といった疑問にはこたえられていません。

 

ITリテラシーは次世代の子どもたちにとって必須であることに異論はありません。

 ここで指摘したいのは、果たしてそれはプログラミング教育なのか??

というところです。

 

ITリテラシーを習得するために、いわゆるコンピュータサイエンスの分野を子どもたちが先取りして学ぶのは賛成です。

こうした学習は家庭間で格差が生じるものなので、義務教育としてやるべきだと私も思います。

 

私にはこの中で「プログラミング」をどう位置づけるか?

といったところが曖昧になっているように感じるのです。

 

プログラムとは命令の集まりであり

アルゴリズムを決めてその通りにプログラムを動かすことがプログラミング

 

というのが私なりのプログラミングの定義です。

なので、コンピュータサイエンスの文脈で語るとスコープが狭くなりすぎてしまうんですよね。

本当はもっと、学べることがあるはずなのにもったいない。

 

ちなみに最近、子ども向けのオンラインプログラミング講座というものが出てきました。

online.d-school.co

 

Z会にもありましたね。

 

これこそ、大人のプログラミング学習と同じ文脈…

と思ってしまうのですがどうでしょうか?

@tanpro-lab