オンラインでハンズオンをやってみた感想
はじめに
こんにちは。LED-Camp実行委員として、合宿教材の開発担当とMDDのハンズオン講座をやりました、浜名です。
オンラインハンズオンを行う過程で様々に課題を感じる結果となったので、この記事を放出しておくことにしました。
そもそもLED-Campとはなんぞや?ということですが、詳しくはリンクをどうぞ。
簡単にいうと組み込みシステムの開発者の卵を育てる合宿形式の研修です。アジャイル開発の一つであるScrumフレームワークとモデル駆動開発を通して、チームで開発するためのコミュニケーション能力、チームで問題解決していくプロセスを3泊4日の合宿で体験していただくような内容になっております。毎年8月下旬から、9月上旬の時期に開催しておりますのでご興味ある方は来年ご参加お待ちしています(1回参加された方は原則2回目の参加は不可です)。
宣伝が入ってしまいましたが、今年(2021/08/30-09/01)のLED-Campはコロナ蔓延防止の観点からオンライン開催となりました。もともとは開発教材に物理筐体を用いていましたが、オンライン開催に伴いこうなりました。
↓物理筐体を用いた教材(従来のオフライン開催)
↓3DシミュレータWebotsを用いた教材(オンライン)
参加者はこのカブトムシのようなロボットカーを用いて、筒を所定の位置に運ぶプログラムをチームで開発するような流れになっています。
アクチュエータやセンサのAPI、ビルド環境、実行手順などはすでに配布しており、参加者はAPIを駆使してロボットの振る舞いを記述していきます。
今年は下の3Dシミュレータでやりました!
来年は知りません。
講義内容
渡すものを渡して、「はい、じゃあ頑張って!チーム開発スタート!」とは流石になりません笑
まずこのロボットをどうやって動かすのか、チュートリアル的なハンズオンをしました。参加者が開発のイメージを掴みやすいように、チーム開発へスムーズに移行できるように、以下のような流れでハンズオン実習を進めていきました。
1. サンプルコードを配布
2. サンプルコードの解説
3. ビルド&実行方法をハンズオンしながら確認
4. シミュレータ上でロボットカーの動きの確認
5. 追加の要件(例題)を提示
6. 追加要件を満たすプログラムをサンプルに追加するチーム演習
7. 最後に正解例の提示と解説
チーム演習中はZoomのブレイクアウトルーム機能を使用しています。
そして参加者は
1. 高専生, 大学生, 社会人などバラバラ
2. プログラミングの経験値もバラバラ(ほぼ経験ない人もいる)
3. 分野は組み込みが多い
4. 人数は10人強
という感じになっています。
オンラインハンズオンにおける課題
1. サンプルコードを配布
サンプルコードの配布はgithubを用いました。gitコマンドを使える人はgit clone。使えない人でもzipで落としてこれます。ここまでは順調でした。
2. サンプルコードの解説
「参加者が悪い!」とは一言も言うつもりはありません。どうしてもオンラインでの講義という特性上&こちらも画面共有をしているので参加者の反応が見えづらいこともあり、みんなついてきてくれているかどうかがかなり不安でした。進んで良いのかどうかもわからず、それに伴い、話を展開するスピードが遅くなり当初予定していた講義時間を大幅にオーバする形となりました。
解決策としては一緒に実行委員(身内)が参加者と同じ目線で講義に参加し、「うんうん」と相槌を打ってくれたりするとこちらも進めやすくなるのかなと思いました。また、ある程度サクサク進行して行って適当なタイミングで切って質問を受け付ける時間を設けてもよかったかなと思います。
3. ビルド&実行方法をハンズオンしながら確認
4. シミュレータ上でロボットカーの動きの確認
この辺りは画面共有をしながらシミュレータの画面を見せつつ、実際に参加者の方にも手を動かしてもらうパートです。
ハンズオンにはトラブルがつきものです!
オフライン開催の時は周りに実行委員がいるので、トラブっている参加者を見つけてハンズオン講義中に個別フォローをするということができましたが、オンライン講義の特性上個別フォローは講義中にはできません。講義中にトラブルが発生している参加者がいたとしても、他の全員の時間を奪ってまでそこで対応するわけにも行かなかったということになります。
その人には申し訳ないとは思いつつも、講義を進める選択肢をせざるを得ないため、かなり心苦しかったです(一旦見捨てるような進め方をしてしまったかも...)。
解決策としては、講義の進行を他の実行委員でも共有し、講義中にブレイクアウトルームを切って遅れている人がいればそちらに入ってもらって別軸対応と言う形も取れるかなと思いました。
またSpecialChatのようなユーザ同士の距離に応じて音声が大きくなったり小さくなったりする音声チャットツールを用いて(画面共有もできる)、遅れている参加者はメインの集団から外れて個別対応を行うこともできたかなと思いました。
最後に、3並列で同じ講義をするブレイクアウトルームをつくりチームごとに分かれてもらって、そこで3、4人を相手にハンズオンをすることで、一人が詰まってもこの程度の人数であれば一斉に会話しながら、もう少し近い距離感で講義を進めることもできるのかなと思いました。しかしこれはさすがに実行委員の負荷が高そうです笑。
5. 追加の要件(例題)を提示
2. サンプルコードの解説
と同じです。
参加者の反応が読みづらいなと思いながらずるずる進行していました。
6. 追加要件を満たすプログラムをサンプルに追加するチーム演習
こちらに入る時点で、チーム内のメンバー間でハンズオンの進行度に差がある状態となっていました。まだ演習を行える状態にないメンバーがいるチームでは、もはや個人個人で演習をやらざるを得ない状態になっていたのは良くありませんでした。
ただ、不謹慎かもしれませんが、遅れているメンバーをチーム内でフォローしあえるような雰囲気を作り出すきっかけにはなると思います。本来のハンズオン意図とは外れますが、仮にそのようなメンバーがいてもコミュニケーションを増進させる材料として機能させる方向に持っていけるように実行委員が誘導してもいいのかなとも思いました。
実際に早く終わったチームでは雑談をしていたりしていい雰囲気のところもあったのはよかったです。
むしろ制限時間に対して簡単めな課題の方が、終わった後の雑談からチーム内コミュニケーションが増進されるような気がしているので、次回の検討材料となりました。
7. 最後に正解例の提示と解説
ここは特に問題はなかったように思います。
最後に
今年はオンラインにおけるハンズオン、講義をそれぞれの実行委員が行うLED-Campとなりました。
講義を担当した全員が「オンラインむずすぎん?」と言う反応でした笑
はい、そういうことなのでしょう。
コロナ禍で「オンライン」が浸透してきて久しいですが、未だに僕もオンライン慣れない部分があります。
オンラインの良いところ、オフラインの良いところをうまく組み合わせてハイブリッドな世の中になることを願います。
この記事が気に入ったらサポートをしてみませんか?