データサイエンティストの為のDocker入門勉強会#1を実施したので振り返る

私が所属しているデータラーニングギルドというオンラインコミュニティにおいて、「データ系職種の人が最低限知っておきたいDockerのあれこれを学ぶこと」を目的として勉強会を開いた。

本エントリーでは、第一回の勉強会をKPT方式で振り返ろうと思う。

まず、第一回の勉強会をどのように実施したのかを説明し、その中で得た学び(Keep, Problem)と次のアクション(Try)を記述する。

同日Gitの勉強会も実施しました。↓↓

thinker-masso.hatenablog.com

1. 第一回勉強会の内容

どのようにやったか

  • 形式
    • 講義形式(筆者が説明)+実践(ハンズオン)
    • ※オンライン
  • 教材
  • 参加者のDockerに関する前提知識
  • その他
    • 参加者には予め以下の準備を依頼
      • 教材のサイトをさらっと見ておくこと
      • Dockerhubアカウントを作成しておくこと
      • Play with Dockerを動かせるようにしておくこと

何を勉強したのか

  • Dockerにまつわる概念的説明
    • Dockerとは?
    • Hypervisor型仮想化とコンテナ型仮想化の違い
    • コンテナ型仮想化の有り難み
    • Docker Image
    • Docker Container
    • Dockerfile
  • Dockerの基本操作
    • 公開されたイメージを使う
      • docker pull/run (published image name)
      • FROM (published image name) at Dockerfile
  • イメージやコンテナを見る
    • docker image ls
    • docker container ls
  • Dockerの挙動
    • 一度もプルされたことないイメージは docker pull/run 時に適宜ダウンロード+プルされること
    • 以前プルしたことのあるイメージならば、ローカルに保存されたイメージを使う
  • Dockerfileの書き方(FROM/COPY/CMDのみ)

参加者からの講義に関する質問や意見など

  • 質問
    • docker pull ubuntu しかしてないのに docker ruby run するとrubyが実行できるのは何故か?
    • VMを使えばMac上でWindowsを動かせる。Dockerではそういったことはできない?
    • Dockerを勉強する際は、手を動かして理解していったのか?記事を読んでいたらわかってくるものなのか?
  • 意見
    • (筆者)今回の勉強会をどのように感じたか?講義形式ではなくSlack上で非同期に質問受け付けたりの方がよかったのでは?
    • (上記問いかけに対して)今回の勉強会により学習のとっかかりが掴めた気がする。そのおかげでSlack上でも質問を投げやすくなったと感じる。
    • 例えば、コミュニティの共有ノート(Scrapbox)に質問を書き込んでもらい、一定量たまったら解説会を開くなど良いかもしれない
    • Slackだと質疑応答内容が流れていくし、実際にデモで確認できるとなれば分かりやすい

など

2. Keep

  • ライブコーディングでDockerの操作を行ったこと、ハンズオンでDockerを触ってもらったこと
    • 口頭のみで説明した概念的ものを実際にDockerの出力結果として見せることができた
    • 売ったコマンドによって、何がプルされているのかを一緒に出力メッセージを見ながら解説できた
  • 参加者の中から議事録作成者を募集したこと(そして、有難いことに立候補してくれる人がいたこと)
    • 書いていただいた議事録のおかげで、今まさにこの振り返りもスムーズにできている訳だし......

3. Problem

  • 実践する時間が少なかった為、ハンズオンでの質問を多く受けられなかった
    • 個人的には、実際に触ってから生まれる疑問に答える方が学びの手助けとして重要と考えている

4. Try

(Git勉強会のTryと被るけど...)

  • いつでも質問大歓迎の雰囲気作り、場作り
    • データラーニングギルドのSlack内に本勉強会用チャンネルがあるが、
    • 勉強会の実施要領などを通知するだけの場になっている
    • 質問文を考えること自体コストがかかるし、それを勉強会の時間内で全員ができるかといえば難しい
    • さらに、Dockerの操作に関しては、触って覚えた方が早い。Dockerfile作成のベストプラクティスを学ぶ時にまた理論(レイヤーやキャッシュ)に戻れば良い、と個人的に考えている
    • したがって、非同期での質問受付の場を設けることとする。かつ初学者でも質問しやすい空気作りをする。(具体的にどうするかはまだ考え中)