香港学習塾 epis Education Centre

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

教室長末木千尋

2011年12月に香港へ赴任。旧九龍教室、わかば深圳教室とで合計6年間勤務をし、2017年から再び深圳へ。きめ細やかなサポートには定評があり、時間が経つのも忘れついつい話し込んでしまうことも。本気で立ち向かう生徒の守護神として頼れるアネゴ的存在であるスエキチ先生は、衣食住どれをとっても刺激の絶えないここ深圳での生活がお気に入り。暑さには弱いが辛さには強い。好物は山椒のたっぷり入った激辛料理全般だとか。

ドローンスクールワークショップ

コワーキングスペースのイベント会場

深圳市龍崗区にあるドローンスクールにて、小・中学生向けのドローンのワークショップを開催しました。
ワークショップの構成は「飛行機・ドローンの歴史」、「ドローンの組み立て」、「DJIドローンのVRゴーグル体験」となりました。


ワークショップはほとんどが中国語で、一部英語という内容なので、中国語が得意な生徒に通訳として参加してもらいましたが、「問題は自力で解決する」というのが今回のイベントの主旨の1つでもあったので、困ったら中国語か英語でスタッフに自分で話しかけたり、身振り手振りで意思疎通したりしてもらいました。

ドローンの組み立ては、極めて中国的なノリで「とりあえず組み立ててみよう!」とスタートしました。木製のパーツを1つ1つ組み立てる作業は中学生でも大変な作業で、約1時間半を要する作業となりました。

ドローン本体の枠組みができあがったところで、ドローンを制御するボードやモーター、プロペラを取り付けます。


取り付けが完了した生徒からリモコンとペアリングして飛ばし始めるのですが、実はここからが中国式ドローンワークショップの開幕だったということは私もその時にはじめて理解しました。

いざ飛ばし始めてみると、さまざまな問題が起こります。今回組み立てたドローンは、ドローンの代表格である、クワッドコプター(quadcopter)でプロペラを4枚搭載したものです。
クワッドコプターの場合、全てのモーターの回転方向が同じ回転方向にしても飛ぶことができず、斜めのペア同士で回転をそろえ、隣同士は反対方向に回転させる必要があります。

また、モーターに取り付けるプロペラも2種類あって、それらを正しく取り付けないと、モーターは回転するものの全く飛ばなかったり、ドローン本体が回転しながら飛んでしまったりします。

これらの問題は座学で前もって知識を与え、説明書をしっかり見ながら組み立てさせれば何も問題が起こらないわけですが、そこは意図してか、意図せずにか「組み立てたら飛ばしてみよう!」、「飛ばなかったら考えよう!」というスタンスなので、問題がそこら中で起こります。

そして「なんで飛ばないの!?」ということになり、ここから学びの時間スタートという荒行です。

荒っぽい学びではありますが、座学で得る知識とは全くことなるインパクトがあります。説明書通りに正しく組み立てた場合は、モーターの方向など何も気づかずに飛ばせてしまい、全く学びがない可能性もあります。


学びのプログラムを精緻に作り込むことももちろん重要ですが、お膳立てが多いことで学びの機会を失ったり、学びのモチベーションを下げてしまったりする可能性もあります。

今回は中国の荒波のようなワークショップの中で自分の手で最初から最後までドローンを組み立て、飛ばすところまでの経験は、ドローンのワークショップを超えて中国そのものを経験しているという点でもおもしろい学びの機会になりました。

今回組み立てドローンは、手で組み立てたドローンにも関わらず非常に安定していましたし、プログラミングもできるものです。次はまたプログラミングもからめたワークショップにも挑戦したいと思います。


今年も行きました!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)
})


micro:bitでプログラミング × STEM vol.4

4月のmicro:bitは「Yes、Noボタン」のプログラミングをしました。
クイズ番組で使われるような、正解のときには「ピンポーン」、不正解のときは「ブブー」という音を出しつつ、正解なら「チェック」不正解なら「バツ」を表示し、さらに、正解数をカウントしようというものです。
実際のプログラムは、以下のように大きく3つのパートに分けてプログラムしました。

ボタンAを押すと「Yes」のアイコンを表示し、メロディーを流す


let correct = 0
input.onButtonPressed(Button.A, () => {
correct += 1
music.beginMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.Once)
basic.showIcon(IconNames.Yes)
})

ボタンBを押すと「No」のアイコンを表示し、メロディーを流す


input.onButtonPressed(Button.B, () => {
music.playTone(131, music.beat(BeatFraction.Quarter))
music.rest(music.beat(BeatFraction.Sixteenth))
music.playTone(131, music.beat(BeatFraction.Whole))
basic.showIcon(IconNames.No)
})

micro:bitを傾けると「Yes」のカウント数を表示する


input.onGesture(Gesture.LogoUp, () => {
basic.showNumber(correct)
})

授業の様子。

そもそも入力自体に慣れていない子供達が未だに慣れない手つきながらも、補助入力機能を駆使しながら、根気よく、効率よく入力できるようになってきました。
ボタンを押したら音を出す、ボタンを押したらLEDにアイコンを表示させるなど、「◯◯◯をしたら◯◯◯をする」というプログラミングの根本的な部分も理解し始めています。
今はまだ基本の入力だけですが、少しずつ自分なりにプログラムを変えてみることもできるはずです。次回がまた楽しみです。