プログラミング部 - ドローン制御
毎週水曜のプログラミング部で、JavaScriptを使ったドローン制御に取り組んでいます。4月の活動レポートです。
ブーン、というモーター音が一拍遅れて止まって、ドローンが床に落ちた。
「あ、また着陸じゃなくて墜落」。R くんが小さく舌打ちして、ノートPCの画面に戻る。書いたコードを確認して、land() の前に1行追加する。「もう一回、行きます」。
水曜日のプログラミング部は、こんなふうに 失敗 → コードに戻る → もう一回飛ばす のサイクルが、何十回と繰り返される時間です。4月から続けて、毎週この光景を見ています。
なぜ JavaScript で、なぜドローンなのか
中高生向けのプログラミング学習は、世の中にたくさんあります。Scratch、Python、ロボット、ゲーム制作…。
その中で、私たちが JavaScript + ドローンを選んだ理由は二つあります。
ひとつは、書いたコードがすぐ目に見える形で動く こと。ドローンが浮く、回る、着陸する。画面の中の出来事ではなく、空中の動きとして本人の前で展開する。これが、学習の 手応え に直結します。
もうひとつは、JavaScript が Webの主言語 で、いま中高生がよく触れるサービスの裏側で動いていることです。「自分が普段使っている Web も、同じ言葉で動いている」と知ることが、世界の見え方を少し変えてくれます。
「離陸 → ホバリング → 着陸」が、すべての基本
最初の数回は、ひたすら 3行のコード から始めました。
drone.takeoff(); // 離陸
drone.hover(3000); // 3秒ホバリング
drone.land(); // 着陸
この3行をしっかり動かせるようになるだけで、最初の月は終わります。「もっと複雑なことやらないの?」と聞く子もいましたが、「基本が体に入ってから派手なことを足す方が、結果的に早いよ」と話すと、納得して進めてくれました。
「コードに書いた順番で、人が動いてみる」
うまく動かない時、私たちがよく使うのが、「人が動いてみるロールプレイ」 です。
「あなたがドローンだとしたら、今のコード通りに動いてみてください」と促す。すると、「あ、ここでhover の前にtakeoff してないから、いきなり横に動こうとして転んでる」と本人が気づきます。
コードのバグは、頭で考えるより、体で再現してみる方が早く見つかる ことが多い。これは、プログラミングだけでなく、あらゆる作業に応用できる思考法だと思います。
チェックインスピーチで、技術以外の時間も持つ
部活の最初の20分は、必ず「チェックインスピーチ」をします。
一人1分、最近のことや、好きな趣味の話を、順番に話す時間。コードを書く時間とはまったく関係なさそうですが、これが意外と効きます。
人前で話すことに少しずつ慣れること。仲間が普段何を考えているかを知ること。「この場は、技術だけの場ではない」と本人たちが感じられること。技術系の活動ほど、こういう時間を大切にしています。
「次は◯◯を試したい」が、増えてきた
4月の頃は、こちらが「今日はこれをやろう」と提案する場面が多かったのですが、最近では、メンバーから「次はこういう動きを試したい」「自動でジグザグに飛ばせるかな」と提案が出てくるようになりました。
主体性は、教えて身につくものではなく、繰り返し成功と失敗を体験するうちに、自然に芽生える ものなのだと、改めて感じています。
モーター音と一緒に育っている
水曜日の夕方、教室の隅でブーンという音が聞こえると、「今日もプログラミング部、動いてるな」と分かります。
何十回墜落して、何十回再起動して、それでも飛ぼうとし続ける。これは技術の話に見えて、実は 諦めない練習 をしているのかもしれません。
ドローンと一緒に、メンバーの心の何かも、毎週少しずつ高度を上げています。