Python Boot Camp for ishiilabを開催しました


8/5の午後に、お手伝いしている大学の研究室内でここ数年行っているPython布教活動として、新参加ゼミ生向けのPython Boot Campを開催してみました。

昨年までは、自分で用意したテキストを使って各自でテキストをこなすスタイルでやっていました。その時までの資料はこちら。

GitHub - hrsano645/ishiilab_python_tutorial: 東海大学石井研究室の研究室内Pythonチュートリアルの資料です

今年は、一般社団法人PyCon JPが各地で開催されている Python Boot Camp のテキストを利用させていただきました。CC-BY 4.0なので条件を守れるなら自由に利用できるようです。

初心者向けPythonチュートリアルを日本各地で開催 — PyCon JP

Python Boot Camp Text — Python Boot Camp Text 2016.04.28 ドキュメント

自分が一応のレベルで用意したスライドはこちらです。補足説明ぐらい?しか書いておりません。

参加された方は9人とほぼすべてのゼミ生が参加でした。昼過ぎから5時間ほどで休憩は自由。基本的にテキストをみんなでこなして、質問や困ったときはその都度受け付ける方法を取りました。

結構みなさん進捗が良くて、一部はスクレイピングのテキストまでこなされていたようですがファイルの操作あたりで時間切れな方が多数でした。アドバイスする側としては、どの部分で躓いたかやトラブルがあったかが興味深く勉強になりました。思い出しながら様子を箇条書きで残しておきます。

進捗

  • 1時間ぐらいでFizzBuzz
  • 3時間でデータ構造
  • 5時間まででファイルの読み書きあたりまで
  • できる方は普通にスクレイピングまで終えれた(本人曰くとりあえず動かすだけ動かしてみただけといってた)

ゼミ生の様子

  • エディタはAtomを使ってみましたがWinなら他のエディタでも良かったかも
  • 学生さんはTeraPadはよく知っていたので、Notepad++あたりでも良かったかも
  • FizzBuzz
  • 関数の存在意義がいまいちわからない: 複数の処理をまとめれるとすごく良いと、テキストを見ながら説明してました。
  • インデントブロックに馴染みがないのでそのエラーをよく見ました
  • fizzBuzzの例題を順に見て行く時に、どのようにコードを書いたらいいか悩んでた
    • 関数を作るときに、forブロックを関数の中に入れるとか
    • 関数を作っていくのではなくて追記してる方が多数いた
  • FizzBuzzの処理の流れ自体は理解していたようです
  • 変数のスコープに気がついた方も
  • 文字列のエスケープ処理に悩んでた(これはコマンドプロンプト側でバックスラッシュが表現できなかったのもあってWin向けに話を入れたほうがいいと思う)
  • リスト
  • スライスの表現:その都度説明したら理解できているようだった
  • 入れることができるデータ型について(リスト内に文字列と入れたらどういうアクセスになるの?)
  • 辞書, タプルの存在意義がいまいちわからないようでした:具体例として、辞書はCSVのヘッダを使ったアクセスに役立つと説明してみました
  • ファイル
  • モードの概念
  • 各自でwriteする文字を変えて文字化けする現象(Windowsで日本語入れてreadしたら文字化けしてたとか)
  • モジュール
  • ここまで到達できない方が多かった
  • fromとimportの違いがわからない
  • スクレイピング
  • pyvenvのWin用のactivateコマンドの入力方法も記載したほうが良さそうでした

雑感など

テキストをこなす見ていると、テキストを一字一句見ている方や、とりあえずコードをコピペして動かそうとする方と違いがあって興味深かったですね。理解できない時は一緒に実行する手伝いをして説明を入れるなどしてました。

参加されたゼミ生皆さんは実はプログラミング自体は講義などでやっています。が苦手な方(理解レベルはよりけり)が多くて、自主的にプログラミングする方がいなかったので、そのため出来る限りつまずいたところはその場で解決できるように努めました。

ブートキャンプする以前から、プログラミング自体は研究では使うぞーと 脅して 励ましていますが、これを気にPythonにハマってくれる方やプログラミングそんなに難しく無いじゃんって思う方が増えてくれると嬉しいです。手に馴染む道具として使える方が増えてくれることを願ってます。

次回開催ももしかしたらあるかもしれません。その時は少し実践的な(いろんなモジュールをいろいろ扱って課題を解くような)内容にしてみたいですね。基礎は大事ですがいろんなケースで使えることがわかると楽しさは更に増えますし。