オンラインでハンズオンを開催してみて【プログラミング】

2020/04/30

【その他】

t f B! P L

オンラインでハンズオンのイベントを開催しました

Python会という団体の新歓行事の一環でハンズオンを開催しました。
イベントの詳細に関しては上のツイートをご覧下さい。

結果としては、

  • 2日間合わせて60名に参加してもらえた
  • アンケート結果もほとんどの方におおむね満足いただけた

と、初めてのイベント開催にしては良い結果だったんじゃないかな?と思えたので、
どんなツールを用いたのか、どのような行程で準備してきたか、備忘録としてまとめておきたいと思います。

プログラミング系のイベントもオンラインでできるんだよ!ということを伝えたいのと、他の学習系サークルでもオンラインで勉強会をやっていただけたらぜひ参加してみたいなぁ、という思いもこめて🙏

サマリー


  • オンラインでイベントをやるときは、オフのときより追加の準備がいくばくか必要
  • いろいろな便利なツールを使いこなせれば、よりラクになる
  • 勉強会における物理的な制約を取っ払うことができるので、普段とは異なった交流が生まれる
  • きっかけ

    そもそもなぜオンラインでハンズオンのイベントを開催することになったのか?


    直接の原因は、4月現在のコロナウイルスの影響であり、大学への立ち入りもできず、もちろん課外活動なんてできる状況ではなかったからですね。

    4月といえば、大学では新入生歓迎の行事が目白押しの時期なのに、計画してきたイベントが全く開催できない。
    Python会に限った話ではないですが、他の部活ももちろん企画はすべて延期です。

    Python会としては、昨年の新歓行事を踏まえ2つのイベントを企画していました。

    • 上級生たちによるPythonや大学生活にまつわるプレゼン
    • 初心者がPythonに触れてみるハンズオン
    の2つです。

    昨年はドローンをPythonで飛ばしてみよう、というテーマだったりしました。


    さて、軒並みイベントが開催できないとなり、どうするか悩んでいたところ、
    あれ、別にこれらのイベント、オンラインでもできるんじゃない?
    ということに気付きました。

    恐らくコロナウイルスの影響がなくなり、平常の学校生活が始まった頃に、新歓行事がいっせいに行われるのだと思います。だけど、4月中に何もアクションを起こさないのはもったいない、と思いオンラインでのイベント開催を決めました。

    • YouTubeにてプレゼン動画を公開
    • ハンズオンをオンラインで開催

    こうして、企画されたのが、本ハンズオンイベントというわけです。


    このような体制でも開催できたのは、プログラミングというテーマ自体がオンラインで、家にいながらできるもの、という点に尽きます。

    さて、前置きはこれくらいにしておいて、以下からメインの部分に入っていきます!

    使用したツールの紹介

    まずは、ハンズオンを開催するにあたって、使用したツールやサービスのまとめです。
    詳しく述べていないものは、また後の説明で出てくると思います。


  • Zoom
  • Twitter
  • CommentScreen
  • YouTube
  • Google フォーム
  • Googleスプレッドシート
  • Twitter

    イベントの告知、参加受付。

    Googleスプレッドシート

    参加者のリスト作成、自己紹介フォームやアンケートの集計に使いました。
    内部向けの資料用です。

    Google フォーム

    参加者向けのアンケートと、事前に自己紹介を集めるためのフォームとして使いました。

    準備

  • 資料の準備
  • Googleドライブのフォルダ作成
  • 解説記事を書いておく
  • イメージサイトを作成
  • GitHubのレポジトリを調整
  • 告知をする
  • Zoomの部屋をつくっておく
  • 参加者の情報をGSSに書き込んでおく
  • 参加者への連絡
  • 資料の準備

    ハンズオンで使用するコードだったりスライドなどをまずは準備します。オフラインで行うときと、ここはあまり変わらないですね。


    説明のためのスライドを作成


    中身は普段、オフラインで行う際と変わらないです。
    最近Keynoteのテンプレートでお気に入りのものがあったので、Keynoteで作りました。


    ちなみにこちらのテンプレです。

    更に大体いい感じになるkeynoteテンプレート「Azusa Colors」作った - MEMOGRAPHIX

    いい感じのスライド、作るのむずいので、「 Azusa Colors 」っていうKeynoteテンプレートを作った。下記のサイトからダウンロードできる。 デモも兼ねた解説スライドを作った。 Azusa Colorsとは、 大体いい感じになるKeynoteテンプレート「Azusa」 に、新しいカラーバリエーションを加えたもの。 Azusa ...



    コードをJupyterNotebookにまとめておく


    適度な説明も加えながら、コードをまとめておきます。

    Google Colabで動くか確認


    環境構築の手間を省きたいときに便利なGoogle Colabを使います。
    今回のハンズオンのような、プログラミングの学習度合いの異なる方々が集まる場合は、環境構築の時間はスキップしたいので、オンラインで動くColabが役立ちます。

    ipynbをアップロードするだけで、notebookを簡単にコピーできます。


    デフォルトでinstallされているライブラリ以外のものを使いたいときは、別途installが必要です。

    !pip install ***
    

    のように、Pythonの実行環境からでも、コマンドが使用できるので、pipでinstallするように、コードを追加します。

    忘れてはいけないのが、Colabできちんと動くか、確認することです。
    実際今回もColab上でテストしていると、Colabでは動かないライブラリがあったりしました。
    幸いおまけで使うライブラリだったので、そちらはパスすることにしました。
    別のウィンドウを開いたり、GUIが必要になるライブラリ、実装系はColabで動かすのが厳しいことが多いです。(PyGameやtkinter、PyAutoGuiだったり)


    事前に確認できれば、当日慌てなくてすみます。

    Googleドライブのフォルダ作成

    Google Colabや他のファイルをまとめておくため、Googleドライブにフォルダを作り、共有フォルダにしておきます。

    解説記事を書いておく

    ハンズオンで喋る内容をテキストにして、後から復習したり他の方の参考になれば、と記事を書いておきました。

    イメージサイトを作成

    COVID-19 Python plot

    null

    作成したグラフやマップがhtmlとして出力できたので、デモとして、簡単なhtmlを書いて作ってみました。
    Github Pagesで公開しています。

    GitHubのレポジトリを調整

    ykohki/COVID-19_plot_training - GitHub


    READMEに他の資料へのリンクをすべて埋め込み、ここさえのぞけば完結できるようにしました。
    が、参加者の方々の様子を見てみると、少しわかりにくかったかもしれません...

    告知をする

    Python会のTwitterアカウントを用いて、告知を行います。

    イベントの詳細はリプライにて書くことにしました。


    DMを頂く中で、情報不足が判明したため、追記で「よくある質問」をまとめたりもしました。

    Zoomの部屋をつくっておく

    個人のアカウントで、開催日ごとのzoomの予定を作成、パスワードなどを決めておきました。

    参加者の情報をGSSに書き込んでおく

    TwitterのDMに参加希望者から情報を頂くので、人数把握とどのような方々に興味を持って頂いているのか把握するため、まとめておきました。

    参加者への連絡

    参加希望のDMを頂き、必要な情報を頂いたあと、

    • 当日のzoomのリンクとパスワード
    • レポジトリなど資料の共有
    • 事前の自己紹介フォームの記入のお願い

    の3点を連絡しました。

    いざ本番!

    当日のタイムライン

    19:00 開始

    19:10 自己紹介

    19:40 Pythonの導入

    19:50 10分間の休憩

    20:00 ハンズオン開始

    21:00 終了

    残った方々で雑談

    正直なところ、タイムラインは事前に作成出来ていませんでした。
    スライドと資料の分量的に2時間で終わるだろう、というざっくりした感覚しかありませんでした😱
    結果的に少しオーバーしてしまったので、もう少し考えられていたらなぁと思います。

    Zoomを実際に使ってみて

    これまでオンラインミーティングツールは他に使ったこともないのですが、zoomを使ってみて感じたポイントは以下のようです。


    画面共有は「デスクトップごと」で

    ZoomはPCの画面共有が簡単にできました。
    共有の範囲には、

    • アプリひとつだけ
    • デスクトップごと

    の2種が選べたのですが、デスクトップまるごとがハンズオンをやるにあたっては便利でした。

    デスクトップごとに、

    • スライド
    • zoomの参加者の画面
    • Google Colabなど資料を開いたブラウザ

    の3つを置いておくことで、すぐに行き来することができました。

    ちなみに、外部ディスプレイをつないでおくと、外部のディスプレイは共有範囲に入らないので、個人的なメモなどハンズオン中に確認したいものはそちらに避難させておくことで解決できました。


    画面のポインタの強調が便利



    コメントを付ける -> スポットライト

    から選べる赤いポインタ形式のカーソルがいい具合に強調できてよかったです。
    通常の黒のカーソルよりは見つけやすいと思います。


    遅延とかは特になかった模様


    画面共有と聞くとどうしても遅延があったりして、ズレが生じたりするんじゃないかと思っていたりしましたが、当日の様子を見るに遅延はありませんでした。
    ネットワークの環境にもよるとは思いますが...


    ブレークアウトシステムは全体の人数が多いと使いにくい


    Zoomにはブレークアウトシステムというものがあり、少人数のグループを複数つくることができます。

    ハンズオンなので、途中会のメンバーと参加者を混ぜたグループを作ってそこで、質問だったりをしてもらおうと考えていました。 大人数だと会話しにくいけれど、少人数だと会話が弾みやすいのではないかと。


    ですが、30名、40名ほどが一度に参加する今回の場合、上手く使いこなすことができませんでした。
    ブレークアウトシステムでは、グループの作り方として、

    • 自動でふりわけ
    • 手動でメンバーを決める

    の2種類だったのですが、

    • 自動でふりわけ→メンバーが含まれず、参加者だけになってしまう
    • 手動で決める→時間がかかってしまい、参加者を待たせてしまう
    という点で当日使えませんでした。

    もっと進行の時間に余裕を持たせていれば活用できていたかもしれないので、準備不足でした。

    CommentScreenがおもしろかった

    Comment Screen

    CommentScreenとは、オンラインミーティングにおいて、ニコニコ動画のように参加者がコメントを書き込むと、PC画面にリアルタイムで流れて表示されるツールです。
    参加者の方から事前にこちらのツールを紹介していただき、試してみたところ非常におもしろいツールだったので活用させてもらいました。

    ツールの詳しい説明は公式のサイトをご覧頂くとして、実際に使ってみた感想を書いておきます。


    ホスト側としても、設定がカンタンだった


    CommentScreenを使う上での手順は、

  • ハッシュタグを決める
  • 参加者にタグを伝える
  • ホスト側のPCでアプリを起動
  • Zoomの共有している画面に映るようにする

  • これだけで使うことができました。
    Zoomと連携する上でも、ただ「共有している画面に映るようにする」だけでOKでした。


    リアクションがわかりやすい

    コメント以外にも、絵文字を送ることができ、進み具合などを確認するときに便利でした。


    Twitterでハッシュタグをつけたツイートも反映

    #oumedpython - Twitter検索 / Twitter
    指定のサイトからの書き込み以外でも、ツイートも拾ってきてくれます。


    Zoomのチャットとの使い分け

    Zoomには全体とのチャット機能もありますが、それとの棲み分けとしては、

    • CommentScreen→リアルタイムな質問や感想など書き捨て的な情報
    • Zoomのチャット→URLの共有など残しておきたい情報を

    というように使い分ければよりわかりやすいと思いました。


    テキストのカラー変更ができたら

    流れてくるテキストのカラーはホスト側で変更できますが、テキスト全体に反映されます。
    もし、ユーザー側でコメントごとのカラーの変更ができたら、

    • 黒:感想
    • 赤:トラブル発生!
    • 青:質問したいこと

    などのように意味分けしやすいのかもしれません。


    ハンズオンの特性上、どうしても一方的なものになってしまいますが、CommentScreenを使うことで気軽に参加者のリアクションが確認できた点がとても良かったです。

    終了後

    無事ハンズオンが終了しました!
    ファシリテーターだった筆者は、2時間ほぼ続けて喋りっぱなしだったので、疲労感がハンパなかったです...

    Zoomの録画をYouTubeにUP

    Zoomでは、ミーティングを録画しておく機能があるので、事前に参加者には伝えておいた上で録画しておきました。
    そして、そのままYouTubeにて限定公開し、参加して頂いた方のみに共有しました。

    当日の様子そのままで特に編集等はしていないのですが、聞き取れなかったところなど復習に役立てたい、というお声があったためです。

    ちなみに、録画ファイルの大きさは、

    • 3時間5分:1.22GB
    • 2時間54分:920MB

    ほどでした。 画質や音質は当日のままだったので、復習にはちょうどよいのかもしれません。

    アンケート結果を見てみる

    今回の企画はほぼ一人で考え実行したので、アンケート結果はダイレクトに自分に来るため、覗くのが怖かったです笑

    アンケートの内容としては、

    どちらの日程で参加されましたか。

    ハンズオンにはどのくらい満足されましたか。

    よかった点があれば教えて下さい。

    悪かった点があれば教えて下さい。

    ハンズオンの内容に関して、他に扱ってほしい内容はありましたか。

    Python会をお知りになったきっかけを教えて下さい。

    今後ハンズオンを企画する際の参考として、扱って欲しい内容がありましたら教えて下さい。

    イベントに関してのフィードバックがありましたら、ぜひお書き下さい。

    その他、Python会運営に伝えたいことがありましたら教えて下さい。

    以下、頂いた解答から一部を抜粋します。


    回答率

    39/60
    2日間合わせた結果です。ちょうど2/3といったところでした。


    ハンズオンにはどのくらい満足されましたか。

    良い結果なのではないでしょうか!低評価がないというのが幸いです。
    (残りの1/3の方にどう感じられたのか、気になるところではありますが...)


    よかった点があれば教えて下さい。

    自宅から参加できたこと
    他の人たちとのやり取りの場も設けていただいてよかったです。
    オンラインなので色んな人が参加でき、どんな人が興味を持っているのか知れた
    手探り状態だったので、こうやって勉強会をすればよいのかという参考になりました。
    ライブラリが沢山知れた。
    google colaboratoryで環境構築の必要なく演習できた点。
    教材クオリティも高くてびっくりしました!

    うれしいお言葉を頂けました。
    資料作りに関しては、今までの勉強会での経験値を活かせることができたかな、というのが個人的な感想です。


    悪かった点があれば教えて下さい。

    後半が速かった。3時間は必要ですね。
    自己紹介がどうしても長くなってしまう点
    初心者向けにしてはPython実行についての説明のところが駆け足気味だったかと思います。
    YouTubeライブでもいいかなと思いました。


    こちらは筆者も進行しながら痛感していたことばかりです。
    時間配分をきちんと考慮できていなかったことが、最大の反省点です。
    初心者向けには厳しい、というのもごもっともで、今回は「初心者の方にPythonを理解してもらう」というよりは、「Pythonの基本を学んだ後に、実際のデータを使ってどんなことができるのか、雰囲気をつかんでもらう」という趣旨で行いました。
    まずは理解よりも、Pythonでできることのひとつのイメージをつかんでもらたらな、と。
    時間があれば最初にもう少しPythonの入門ができたのかなーとも思っています。


    悪かった点を教えて頂ける、というのは非常にありがたいことで、実際1回目のフィードバックをいただいて2回目に向けて修正を行いました。

    アンケートの項目ももっと上手い聞き方、並べ方があるのでしょうが、そのあたりも今後試行錯誤できたらと思います。 よかった点・悪かった点を集められただけで御の字です。

    反省会

    頂いたアンケートなどを元に、これまでで述べていなかったことの中から、今後に向けての反省を記しておきます。

    よかったところ


    一般の方も対象にしたところ


    正直なところ、新歓イベントのつもりでしたが、新入生よりも他大学の方、一般の方の方が多かったです。
    ですが、それほどPython、プログラミングに興味のある他大学の医学生がいること、普段は独学で勉強をされている社会人の方がいることがわかり、こういった遠隔で参加できるイベントの大切さを実感できました。
    また、対象を広くしたことで、団体自体の宣伝にもなったと思うので、結果として対象の設定はよかったと思います。


    題材選びがよかったかもしれない

    当初、ハンズオンでは違う題材を扱う予定でした。
    ですが、環境の構築の手間だったりの問題で急遽題材を変更しました。
    その時に、ちょうどCOVID-19関連のオープンデータで扱いやすいものが見つかり、触ってみると手軽に可視化ができる、ということで題材に決めました。

    告知をする際も、流行りのワードが入っていることで、少しは興味を惹けたのではないかと思っています。(決して見たいワードではありませんが...)

    悪かったところ


    一方的なものになってしまう

    ハンズオンかつオンラインの性質上仕方ないかもしれませんが、どうしても一方的な情報伝達になってしまいます。
    オフラインだったら、実際に参加者のPCを覗いてみて進み具合を確認できたりしますが、どうもオンラインでは厳しいです。
    その中でもCommentScreenがあるだけで、参加者の反応を見ることができたのはよかったです。


    自己紹介が長かった&後半進むのが早かった

    「全国からいったいどんな方が参加しているのか、参加者同士も知ることができたら面白いのではないか」
    という考えで、ハンズオンを始める前に、自己紹介をやってもらったのですが、
    一人30秒でも30人いれば15分はかかってしまいます。 15分も続いてしまえば、どうしても飽きてしまいます。

    1回目の反省を踏まえ、2回目では事前に自己紹介を集めて共有する形をとりました。
    時間配分は綿密に練っておくべき、というイベント運営では至極当たり前の反省です。


    募集はTwitterのDMは向いていなかった

    Twitterで告知をしたので、そのままDMで申し込んでもらえたら、と考えていましたが、実際かなり非効率的でした。
    連絡をくれた方一人一人に資料やzoomのリンクを送らなければなりません。
    定型文を送るのだったら、募集はGoogleフォームで行いメールアドレスを教えてもらって、そちらにBCCでお伝えするのが早かったと、今は思っています。
    または、IT系の勉強会でお馴染みのconpassでページを作成するのもよかったかもしれません。

    DMだとその方に添った個人的なお話ができる、というのは非常に良かったのですが。

    まとめ

    軽く準備内容とかを残しておこうと思って書き始めたらだいぶ長くなってしまいました😇


    オンラインでイベントを行うと普段は物理的に交流できない方たちとも、気軽に交流できるようになると思います。
    勉強会の企画を考えてらっしゃる方は、ぜひオンラインでの開催も視野に入れてみてください!


    記事の感想をリアクションでお願いします!

    QooQ