こんにちは。RumiCarでプログラミング教室の講師を務めております、武藤と申します。 普段は企業向けのWebシステムを開発している、ふつうのエンジニアです。
8月11日、東京・王子の北とぴあにて、RumiCarのプログラミング教室と、第18回の走行会を開催いたしました。 9時に会場を設営し、18時に走行会を終えるまでの、まる一日です。
人に何かをお伝えする場面自体は、これまでにも何度か経験してまいりました。 ただ、RumiCarの教室で教えるのは今回が初めてでして、前の晩は正直なところ、少しそわそわしておりました。お伝えする内容が変われば、勝手もずいぶん違うものですね。
終えてみて思っているのは、とてもシンプルなことです。
またやりたい。
そして、もっと多くの方にこの時間を味わっていただきたい。
参加する側としても、教える側としても。
RumiCarってどんなもの?
まだご存じない方のために、少しだけご説明させてください。
RumiCarは、ご自身でプログラミングができる小さな自動走行車です。手のひらに乗るくらいのサイズになります。
車体の前方には、レーザーで距離を測るセンサーが3基ついています。レーザーを照射し、物体に当たって戻ってくるまでの時間から距離を計算する仕組みです。これによって、前方の3方向それぞれについて「壁まであとどれくらいか」を知ることができます。
これがRumiCarの目にあたる部分です。
そして、その目が拾ってきた数字をもとに「ではどう走るか」を決めるのが、みなさんが書くプログラムです。 右が近づいてきたから、左に寄ろう。正面が空いたから、進もう。 その判断を、すべてご自身で書いていただきます。
自動運転の基本は、実は3つだけです
「自動運転」と聞くと、少し身構えてしまいますよね。私も最初はそうでした。
けれども教室でお伝えしているのは、拍子抜けするほどシンプルなことです。 自動運転が行っているのは、突き詰めれば次の3つだけなのです。
まず、センサーで周りの状況を知ること。 次に、その状況でどう走るかを考えること。 そして、決めた動きを車に命令すること。
これだけです。
何千万円もするセンサーを積んだ本物の自動運転車も、手のひらサイズのRumiCarも、骨組みは同じです。異なるのは複雑さと精度だけと言ってもよいと思います。
ですから、まずはシンプルなRumiCarで、この3つを手で覚えてしまう。複雑なものを理解する近道は、たいていこういうところにあるように思います。
これからの車は、ソフトウェアで変わっていきます
もうひとつ、教室の冒頭で必ずお話ししていることがあります。
これからの車は「SDV(Software Defined Vehicle)」になると言われています。 横文字は忘れていただいてかまいません。要するに、スマートフォンやパソコンのように、ソフトウェアのアップデートで新しいことができるようになる車、ということです。
しかも、変わるのは機能だけではありません。 「ゆったり走る」「キビキビ走る」といった走り方そのものを、車を買い替えることなく切り替えられるようになると言われています。いずれは、話しかけるだけで変わる日が来るかもしれません。
つまり、誰かが書いたプログラムが車の性格を決める時代がやってくる、ということです。
その「誰か」に、いま目の前でセミコロンを打ち忘れている小学生が、いつかなるかもしれない。 そう考えますと、たった2時間の教室が、ずいぶん大きなことの入口に見えてまいります。
当日、教室で起きていたこと
教室は午前と午後の2回、それぞれ2時間ずつ開催いたしました。お越しくださったのは、成人の男性と小学生方です。
まずは、エラーを出すところから
最初の課題は、センサーの値を読むだけの、ごく簡単なものです。 コードを書いて、コンパイルして、車体に書き込む。
そして、エラーが出ます。ほとんどの場合、出ます。
けれども、これがとても大切な体験なのです。 セミコロンがひとつ足りないだけで、コンピュータは決して動いてくれません。この理不尽さを一度しっかり味わっていただいてから、赤い文字を読み、直して、もう一度書き込む。
すると画面に、数字が次々と流れ始めます。 手をかざすと数字が小さくなり、離すと戻る。
「反応している」
さきほどまでただの文字の並びだったものが、ここで初めて機械とつながる瞬間です。
そこから一気に走らせます🚗💨
この日は、途中の課題をいくつか飛ばして、車が自分で走るところまで一気に進みました。
書き込んで、コースに置いて、手を離す。
走りました。
このときのみなさんの表情が、本当によかったのです。 何分か前まで画面の中にあった文字が、いま目の前で物を動かしている。壁を見つけて、よけて、また走り出す。
理屈ではなく、うれしいものですね。
「動いた」という瞬間を早めにお届けする。この順番にしたことが、今回いちばんの手応えでした。
残りの時間は、ずっと調整🔧
そして、ここからが本番でした。
残った時間はすべて、数値の調整に使いました。少し変えて、書き込んで、走らせて、また変える。その繰り返しです。
もっと壁のギリギリを攻めたい。 曲がるのが遅い。 速くしたらコースアウトしてしまった。
気がつくと、みなさん黙々と取り組んでいらっしゃいます。 こちらが何も申し上げなくても、ご自分から試行錯誤が始まっている。
そして、だんだん変わっていくのです。 最初は壁にぶつかってばかりだった車が、直しては走らせ、直しては走らせを繰り返すうちに、当たらずにコースを回れるようになっていきます。
後日、このようなお声を多くいただきました。
「実際に走らせてみると、楽しい!」
「調整しては走らせてを繰り返していくと、だんだん壁に当たらずに走るようになっていくのが面白かった」
このお言葉が、私にはたいへんうれしいものでした。
「一発でできた」ことではなく、「少しずつよくなっていく過程」のほうを面白がってくださったからです。
これはまさに、ものづくりのいちばん豊かな部分ではないでしょうか。 こうではないかと考えて試し、うまくいかず、なぜだろうと考えて、また試す。私が普段仕事で行っていることと、やっていることは変わりません。
それを、誰に言われるでもなく、楽しいから続けていらっしゃる。
この光景を見るために講師をするのだな、と、その場で感じました。
夕方からは走行会でした
15時半からは、同じ会場で第18回の走行会を開催しました。21時までの、たっぷり5時間半。参加費は無料です。
走行会は、教室よりもずっと自由な場です。 ご自身のRumiCarを持ち込んでひたすら走らせる方もいらっしゃれば、その場でコードを書き直してタイムを詰めていらっしゃる方もいます。ただ眺めているだけの方もいます。どのような過ごし方でもかまいません。
RumiCarをお持ちでなくても大丈夫です。会場でレンタルをご用意しております。
よく分からないけれど動かしてみたい。 自分が開発しているものの参考になりそう。 なんだか面白そう。
お越しいただく理由は、それで十分です。
小さな車がコースを走り回るのを眺めながら、大人が真剣に制御の話をしている。少し不思議で、とてもよい時間だと思っております。
ここからは、エンジニアのみなさまへ
実を申しますと、この記事でいちばんお伝えしたかったのは、ここからです。
RumiCarでは、一緒に教えてくださる仲間を募集しております。
「講師なんて自分に務まるだろうか」と思われますよね。 私も、教えること自体は経験があったとはいえ、RumiCarでは初めてでしたので、始まるまではずっと落ち着かない気持ちでおりました。
実際にやってみて分かったことを、正直にお伝えします。
まず、特別な指導技術は必要ありませんでした。 必要だったのは2つだけです。エラーメッセージを一緒に読んでさしあげられること。そして、動いたときに一緒に本気で喜べること。 むしろ、普段からコードを書いていらっしゃる方のほうが向いていると思います。目の前の方が何につまずいているのか、ご経験から分かってしまうからです。ご自身が昔つまずいた場所で、やはり同じようにつまずかれるのですね。
教材も、すでに用意されています。 RumiCarには順を追って進められる演習教材がそろっておりますので、カリキュラムをゼロから組み立てる必要はありません。今回私がしたことも、既存の教材を「この順番のほうが盛り上がりそうだ」と並べ替えた程度です。そうした工夫は次の方にきちんと引き継いでおりますので、お引き受けいただくときには、今回よりよい状態から始めていただけます。
そして、ご自身の理解が深まります。 当たり前だと思っていたことを、専門用語をひとつも使わずに小学生に説明する。これがなかなか手強く、「なんとなく分かったつもり」だった部分が容赦なく浮かび上がってまいります。きちんと理解していないと、易しい言葉にはできないのだと痛感いたしました。
最後に、これがいちばん大きかったことです。 ご自身の持っている知識が、目の前の誰かの「できた!」に変わる瞬間に立ち会えます。 仕事でシステムを納品するのとは、まったく異なる種類の手応えでした。自分が渡したものが、その方の中で確かに火をつけたのが見える。そのような機会は、そう多くはないと思います。
いきなり講師でなくても大丈夫です
RumiCarには、さまざまな関わり方がございます。 車体をつくる方、コードを書く方、コースを考える方、当日の運営を手伝ってくださる方、配信を担当してくださる方。そして、ただ走らせに来られる方。
講師はさすがにハードルが高い、と感じられる方は、まず走行会に遊びにいらしてください。参加費は無料ですし、見学だけでもかまいません。運営をお手伝いいただく形も大歓迎です。
一度あの場の空気に触れていただけましたら、それだけでうれしく思います。
次回のご案内
8/30(日) RumiCar車体制作教室(定員10名) ご自身の車を、ご自身の手で組み立てるところから。手を動かすのがお好きな方はこちらへどうぞ。 https://rumicar.connpass.com/event/397715/
9/23(祝) 自動運転プログラミング RumiCarプログラミング教室 午前と午後の2回開催で、内容はどちらも同じです。ご都合のよい時間帯をお選びください。 プログラミングが初めての方も大歓迎です。RumiCar一式(車体・コース)はこちらでご用意いたします。
- 午前 10:00〜12:00(定員10名) https://rumicar.connpass.com/event/394388/
- 午後 13:30〜15:30(定員10名) https://rumicar.connpass.com/event/394390/
お持ち物は、Windows PC(Arduino IDEをインストールしてよいもの)と筆記用具、そして「やってみたい」というお気持ちです。 インストールに不安のある方は当日サポートいたしますので、そのままお越しいただいて差し支えありません。
9/23(祝) 第19回 RumiCar走行会 15:30スタート、参加費無料です。見学だけでもかまいませんし、車体のレンタルもご用意しております。 教室を受けてそのまま走行会へ、という参加のしかたもおすすめです。 https://rumicar.connpass.com/event/396361/
会場はいずれも北とぴあ(東京都北区王子1-11-1)です。JR京浜東北線・東京メトロ南北線「王子」駅からすぐで、駐車場もございます。
さいごに
ご自身の書いたコードで、車が思ったとおりに動く。 あるいは思ったとおりに動かず、原因を突き止めて、次こそ動く。
ぶつかってばかりだった車が、少しずつ当たらなくなっていく。
あの「できた!」は、いくつになっても同じくらいうれしいものではないかと思います。
いまは何も分からなくても、まったく問題ございません。「やってみたい」と思っていただけたなら、あとは当日、私たちが横についてサポートいたします。
そして、もしすでにコードを書ける方でいらっしゃいましたら。 今度はぜひ、「できた!」をつくる側に回ってみませんか。
会場でお会いできますことを、心より楽しみにしております。
講師:武藤
RumiCar 関連リンク
- connpass(イベント一覧): https://rumicar.connpass.com/
- Facebookグループ: https://www.facebook.com/groups/rumicar
- GitHub: https://github.com/RumiCar-group/RumiCar
- YouTube: https://www.youtube.com/c/RumiCar
#RumiCar
