わかば深圳教室 教室長ブログ

教室長渡辺 敦

わかば深圳教室長、深圳日本人補習校の進路・教務アドバイザー。大連、内モンゴル、蘇州、香港を経て、現在は深圳在住。海外教育歴は15年。イノベーション都市深圳にて、「深圳×教育」をテーマに深圳独自の教育を提供すべく活動中。教育現場では言語習得と認知能力の相関関係「ダブルリミテッド問題」について実践的な指導を研究している。また「中国の受験問題」と「日本の人口減」の解決策として中国人学生の日本留学の環境整備を進める。

深センにおけるSTEM教育の実践 Nanshan School Maker Faire(南山学校創客節)

6歳の子供のプロジェクト

2018年11月17日、深セン市南山区の海上世界文化芸術中心にてNanshan School Maker Faire(南山学校創客節)が開催されました。School Maker Faireというのは、その名の通り学校のMaker Faire(DIYのお祭り)で、生徒たちがSTEM、アート、Make(メイク、創客)などの授業やクラブで作った作品を展示するイベントです。Maker Faire同様、作品を展示するだけではなく、各ブースに製作者や今回の場合は担当教師がいて、製作にまつわる話を聞くことができます。


洪水に備えた土地の活用に関するプロジェクト

今回参加していた学校の多くはPBL(Project Based Learning、項目式学習)を採用しており、担当の先生によると、「STEM」や「Make」という教科が重要なのではなく、PBLでSTEMを学ぶことが大きな意味があると話してくれました。

STEM教育というと、何を思い浮かべるでしょうか。ロボットをプログラミングしたり、Scrachでゲームやアニメーションをプログラミングしたりすることを思い浮かべるのではないでしょうか。

「STEM教育」というバズワードが一人歩きして、STEMのそれぞれの頭文字に当てはまれば、STEM教育と自称して売り出す商品やサービスがあふれかえっているので、「STEM教育」=「プログラミング、ロボティクス」という印象が強くなってきています。

STEM教育とは何かを定義したり、議論したりするつもりはありませんし、その呼称よりの中身が重要なことはいうまでもありませんが、今回の参加校の取り組みを見るとSTEMのイメージが大きく変わる人もいるかと思います。


5歳の生徒のプロジェクト

右の写真は5歳の子供達の作品です。これは石器時代の道具を自然にある物だけで作ろうというプロジェクトで、写真中央下に写っているのは、「たまごの殻の器と植物の茎を利用したストロー」、右下は「貝殻のお皿と植物の茎で作ったスプーン」です。自然にある物だけを使って、自らの手で物を作りあげることで、改良点が多々あることに気づくことができます。それを改良してよりよい物にしていく過程にこそ学びがあります。課題を決定すること、問題を解決すること、チームと協力することなど、ものづくり(Make)をする中での学びは多くの要素を含んでいます。

このように一切コンピュータやロボットに触れることのない学びの中で、社会、理科、技術(工作)、美術などが融合され、教科横断的に学ぶ手法でSTEM、Makeの授業が行われています。

STEM、Makeは、その過程にこそ意義があり、プログラミングはあくまでも手段です。プログラミングを単純に学ばせる必要があるのであれば、それは「プログラミング」の授業や「コンピュータ・サイエンス」の授業を別に設定する必要があります。


micro:bitを使った作品

左の写真の作品を展示していた学校の先生にお話を伺いました。先生はテクノロジー関連の担当の先生ということで、生徒達は週のSTEMなどの授業回数をたずねてみると、その学校の場合は授業は全くないとのことでした。

それではいつ学んで、いつ作品を作ったのかというと、昼休みと放課後の時間を使っての作業とのことでした。授業やクラブということではなく、生徒が何かを作りたいと思ったら、空いている時間に学校の作業スペース(Maker Space)に行き、先生と相談しながらプロジェクトを進めているとのことです。

自らの意思で、学ぶことを決め、時間を設定しています。これは学びというよりも、子供たちの意識としては「学び=遊び」に出来ている点で に理想的な形と言えます。

いくつかの学校が同様の方式で生徒の自主性に任せながら学びの環境を提供していました。中国の教育というと画一的、全体主義的なイメージがあるかもしれませんが、一概にそうとは言い切れません。


会場で行われたワークショップ

「一度決めたことはやり通す」という初志貫徹型の日本に対し、「間違いに気づいたらすぐに改善する」という朝過夕改型の中国は、経済の発展だけではなく、教育の分野でも発展し始めています。

同じ東アジアの中国と日本は教育における親和性は欧米より高い部分もあると思います。STEM教育、プログラミング教育で先行している中国から成功例、失敗例を学び日本のプログラミング必修化に活かせるのではないかと思います。


深セン発!M5STACKワークショップ

ルーク先生のM5STACKワークショップ

M5STACKスタッフの多大なる協力の下、深センに住む日本人の小学生・中学生向けにM5STACKのワークショップを開催することができました。深セン発のデバイスであり、深センのエコシステムの象徴と言っても過言ではないM5STACKをここ深センで深センに住む子供達と学ぶ機会を得られたことは、本当にありがたいことです。

参加生徒13名に対して、なんと開発者のJimmyさんを含めたM5のスタッフが6人も来ていただけるという、超手厚いサポートでのワークショップとなりました。

講師はM5STACKの開発スタッフであり、STEMの先生でもあるイギリス出身のルークさん、そして日本語でのフォローに塩入さんも来てくれました 。

このワークショップで感じたのは、プログラミングがPCの中で完結することと、プログラミングでPC外部のデバイスを制御することは、全く違う体験なのではないかということです。


Scratchでネコのキャラクターを動かすのと、M5STACKのディスプレイにアニメーションを表示させる作業自体に大きな違いはありませんが、PCだけで完結するプログラミングに対して、PC外部のデバイスを制御できることは、物理的な空間への拡張性が全くちがいます。今後大きく発展するであろうIoTを体験し、学ぶという点でM5STACKはおもしろい製品だと感じました。

自分自身が技術的に何ができるのかを知ることは非常に重要で、脳波を感じ取るセンサーがあることを知らない人は、それを使った製品を作り出すことができるはずがありません。新しいサービスやプロダクトを生み出すためには、様々なテクノロジーに触れて想像力の幅を広げておく必要があります。

M5STACKは各種センサーを簡単に接続することができるので、「人を感知したらLEDをつける」という日常的に使われている機能から、子供が家に帰ってきて「ただいまー」と言った音声を拾って 親のスマートフォンに音声を届けるといったことも簡単にできます。


blocklyベースのUI Flowでプログラミング

M5STACKのようなデバイスや外部に接続するセンサーを安価に入手することができるようになり、小学生や中学生でも自分の思いついたアイディアを形にできるようになったことで、次の新しいサービスやプロダクトを生み出すステージにいつでも立つことができます。

また、今回のワークショップのように、プログラミング学習を目的とせず、手段として学びつつ、新しいサービス、プロダクトを生み出す想像力を養う手法は、日本のプログラミング教育での1つの方向性になるのではないかと思います。

「プログラミング」に重心をおくのか、「プログラミング×ハードウェア」でIoTを学ぶのか、同様に「プログラミング×ハードウェア」でプログラミングとハードウェアを手段として想像力を養うのか、一概にプログラミング教育と行っても方向性も手法も全くことなってきます。


M5STACKと各種センサー

日本のプログラミング教育は迷走しているようにも見えますが、子供達の何を育てたいのかさえ明確にできれば、後は予算と相談しながら教材やカリムキュラをそれに合わせて選ぶだけです。

ワークショップの時間中「楽しい!」を連呼していた小学生、先生が提示してくれたコードを無視して自分の思いついたコードに勝手に変えていく中学生(試したくてしょうがない)を見ていると、たった1回のワークショップでも子供たちにとっては刺激的な体験になったのではないかと思います。

また次も楽しいワークショップを開催できたらと思います。M5STACKのみなさまありがとうございました!


今年も行きました!Maker faire Shenzhen 2018

会場の海上世界文化芸術中心


車作りでSTEAM体験

2018年10月12日〜14日に深センの海上世界文化芸術中心でMakerfaire深センが開催されました。もともとDIY、ものづくり愛好家の交流、発表の場であるMakerfaireですが、科学技術の普及、教育の観点からも非常に面白い発見のある3日間でした。

今年は小学生は手作りの車作りのSTEAMワークショップに参加、中学生は日本人出展者のブースのボランティアに参加ということで、見学だけではなく、自分の手を動かしたり、出展者側に入ってイベントを体験するなど昨年とはまた違った楽しみ方ができたかと思います。そしてハードウェア、STEM教育で突っ走る深センの熱を体感することもできたかと思います。


ただの車ではなくデザインも重要なSTEAM

私自身もブースのお手伝いをさせていただき、まず一番印象に残ったのは、中国の親たちの科学技術に対する関心の高さと熱心さです。私のお手伝いしたブースでは光る帽子(LEDが入っているピンポン球がたくさんついた帽子)が展示されており、それが様々なタイミングで光ることで、かぶっているだけで楽しい気持ちになれる作品なのですが、これを見た一般の親たちのしてくる質問が、「これはどんな原理で光っているのか?」という質問は一般的だとして、「これは脳波を感知して光るのか?」という先進的な技術を取り入れられることを理解している親もいることに驚きました。

また、親子連れの場合で、子供が親に引き回されるようにして様々なブースを回っていて、親の方が必死になって何か楽しい物、学びのある物がないかを血眼になって探し回っているようで、チャンスを逃すまいとする気迫すら感じました。


中学生のボランティア

それから、日本人と中国人の興味を示すポイントの違いもおもしろく、前述の光る帽子もそうですが、「ただ楽しい作品」「ジョークの効いた作品」に対して、中国人は「これはいったい何のために使うのか?」と実用性に関する解説を求めてくる傾向がありました。

日本人がモノづくりを純粋にホビーとして楽しむのに対して、中国人はその先にビジネスを見据えていて、自分が好きな物を作る日本人と、ビジネスになりそうな物を作る中国人という構図もこのMakerfaireを通じて見えてくるようでした。
この日本人と中国人の観点の違いは、今の世界経済における日本と中国の状況そのものであるように感じます。


ARDUINOを使った出展品

自分の作りたい物を作る、モノづくりそのものを楽しむということが、今の世界経済下では優位に立てる材料になっていないようですが、今後AIが発達して、人間がより楽しんで生きることが重要になってくるときに、日本人の「遊び心」は重要になってくるように思います。

日本人は自虐的になるのが好きな民族なようですが、自分たちの良さも見失わないように、日本人が目指すべき理想に向かって発展していけたらと思います。

今年もあっという間の3日間最高でした!


micro:bitでプログラミング×STEM vol.6 しゃくとり虫ロボット 

micro:bitでしゃくとり虫ロボットを作成


今回の「micro:bitでプログラミング×STEM」の授業では、micro:bitでしゃくとり虫のロボットを作りました。

これまではmicro:bit単体の機能(明るさセンサー、加速度センサーなど)を 利用してJavaScriptで制御することを続けてきましたが、今回はmicro:bitの外部にサーボモータを接続して、それを制御することに挑戦しました。

サーボモータは、単純に物体をグルグルと回転させるというよりも、指定した角度分だけ動かせるような物です。これを使ってごく簡単なロボットを作ってみようという狙いです。

今回のもう1つの重要な狙いは自らの手でオリジナルのロボットを作るということです。既製品を組み立てるのとは違い、ダンボールの切り方・曲げ方、クリップの曲げ方、サーボの取り付ける位置がロボットの動きに大きく左右します。サンプルの形通りに作ったところで、歩くこともままならないのです。


STEM教育において非常に重要なことは、完成度の高い作品を作り上げることではなく、課題に対しどのようにアプローチするのか、得られた結果を踏まえどのように対処するのかということです。

STEM教育で子供達が作った作品は、一見すると「がらくた」のように見えるかもしれません。それは子供自身の手で作り上げた証拠でもあり、試行錯誤した証拠でもあるのです。

重要なのは、その過程で何を考え実践したのかということです。ですから、作品を理解するには、作者である子供に意図を聞く必要があります。


しゃくとりロボ作成中

今回の製作の過程で子供達が考え、試したことにいくつもおもしろい発想がありましたので、いくつか紹介します。

ある生徒は、しゃくとり虫のコード(プログラム)の中に、サーボを動作させる時間を指定する部分があり、しゃくとり虫を早く動かしたいという理由から、動作する時間を0.5秒から0.1秒に変更しました。

作りながらこのような発想を持つことは本当にすばらしいことです。そして、それを実践できる環境にあるのが、プログラミング×STEM教育です。

実際に動かしてみると、動作する時間が短すぎて、本来指定している角度の分だけサーボ回転させることができなくなり、想像していた「早く大股で動く」のとは違い、「早く小股で動く」ようになってしまいました。

ここから試行錯誤を繰り返し、一番良い動作時間、サーボの角度を探し出していくことになります。


またある生徒が考えたのは、しゃくとりの足が滑って前進できないことを解決するために、足にテープを輪にしたものを貼り付け、摩擦を大きくすることでした。これも実際にはテーブルと足がくっついてしまい、前進することができませんでしたが、非常にいいところに着目できたと思います。その後
状態をよく観察して試行錯誤することで、問題解決を目指していきます。

今回は、ソフトの部分であるコードを変更すること、ハードであるしゃくとり虫の本体を改良することの両面から問題を解決する方法を探りました。「答えのない問題」にどう対応するのか、非常にいい時間を過ごせたと思います。

今回のコード

input.onButtonPressed(Button.A, () =>{
  pins.servoWritePin(AnalogPin.P0, 0);
  basic.pause(500);  
  pins.servoWritePin(AnalogPin.P0, 180);
  basic.pause(500);
})

準備したもの

・ダンボール
・セロハンテープ、ビニールテープ
・ハサミ、ペンチ
・micro:bit、電源モジュール(単四電池3本)
・ワニ口クリップ
・サーボモーター
・ペーパークリップ


micro:bitでプログラミング × STEM 夏期講習特別授業

micro:bitを乗せたqbitとコントローラー


わかば深セン教室のSRコースの夏期講習9日目、10日目は、毎月1回授業内で学習しているmicro:bitとJavascriptを夏休み特別授業ということで、micro:bitをqbitという2輪自立型のロボットのガジェットに連結させプログラミングをしました。
いつもはmicro:bitだけを使って、ボタンやセンサーを利用したプログラミングをしてきましたが今回はmicro:bitを一人あたり2枚ずつ使用し、1枚はロボットと連結、1枚はコントローラーに連結させました。
ロボット用のmicro:bitには、コントローラーから送信された情報を受信したときにどのように動作するのかをプログラミングしておき、コントローラー用のmicro:bitにはコントローラーを操作した時に、ロボット側のmicro:bitにどのような情報を送信するのかをプログラミングしました。
「if」、「if else」などのコードも見慣れてきましたし、micro:bitでのJavascript入力は入力補助機能もあるので、みんなどんどん打てるようになってきています。
ロボット、コントローラーも自分たちで組み立て、iPadでコードを入力、入力が終わったら、micro:bitとiPadをBluetoothでペアリングして、2枚のmicro:bitにデータを送信します。
こういった一連の作業を終えたら、やっとロボットをコントローラーで制御できるようになります。
コントローラーとロボットを識別するためのコードを間違えてしまっているため、他の人のロボットにつながってしまい、教室内が一時大混乱に陥ってしまいましたが、そんな経験もプログラミングを学ぶ上では重要な体験と言えます。
生徒一人一人が様々な問題をクリアして、やっと辿り着いたサッカー大会。
自分たちが組み立て、コードを入力したロボットでのサッカーゲームは買ってきたロボットで遊ぶのとは大違いだったようです。うまく動かなかったり、ドテっと転んだりするのも、自分たちで作った物なので、かわいく、おもしろく見えたようです。

参考のため、今回使用したコードを下に記載しておきます。




コントローラー用のコード

handlebit.handlebitInit()
radio.setGroup(1)
basic.forever(() => {
if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_X1) < 50) {
   radio.sendNumber(1)
   basic.pause(50)
} else if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_X1) > 200) {
   radio.sendNumber(2)
   basic.pause(50)
} else if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_Y1) < 50) {
   radio.sendNumber(3)
   basic.pause(50)
} else if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_Y1) > 200) {
   radio.sendNumber(4)
   basic.pause(50)
} else {
   radio.sendNumber(5)
   basic.pause(50)
})

qbit用のコード

qbit.qbitInit()
radio.setGroup(1)
radio.onDataPacketReceived( ({ receivedNumber }) => {
  if (receivedNumber == 1) {
    qbit.setMotorSpeed(-50, 50)
  } else if (receivedNumber == 2) {
    qbit.setMotorSpeed(50, -50)
  } else if (receivedNumber == 3) {
    qbit.setMotorSpeed(50, 50)
  } else if (receivedNumber == 4) {
    qbit.setMotorSpeed(-50, -50)
  } else if (receivedNumber == 5) {
    qbit.setMotorSpeed(0, 0)
})