Python勉強会

Python勉強会(#001) を開催するまで

はじめに

今回Python勉強会(#001)をサポーターズCoLabさんに場所をお借りして開催しました。勉強会を開催するのは、今回が初めてで分からないことだらけで、ネットでも勉強会を開催するまでの軌跡を書いている方も少ないので、今回開催するまでどういう手順で行ったのかを残しておきたいと思って書いています。ただ、書いていると個人ブログみたいになってきたので軽く見てもらえると嬉しいです。また、このブログの内容が今後勉強会をされる方の参考などになると嬉しいです!

ただし、この勉強会は個人で行っているものであり、全て個人の意見です。また、今回記事で名前を出して活動している方は書かせていただきました。問題があればご連絡いただければと思います。その他にも該当の方で名前を出し活動していないけれど、名前を出しても良いという方がいれば個別に連絡ください。

きっかけ

私自身はもちろん技術書等も読むし、勉強会にいろいろと参加したりして、アウトプットとしてはQiitaで記事を書いたり、仕事でアプリを作ったり、趣味プロをしたり、頼まれたWebサイトを作ったり、プログラミングを会社の新人の子や大学の研究室の後輩、プログラミングを教えて欲しいという人に少し教えるくらいでした。

そんな中で、今年2月に行われた『MUSIC HACK DAY Tokyo 2018』でLINE社さんのMessaging APIYAMAHA社さんの自動作曲API(VOCALODUCER)を使った音楽生成アプリを3人のチームで作りました。LINE社のテクニカルエバンジェリストである立花さんに色々とアシストして頂きつつ、LINEのSDKを触る中でちょっとだけ使えるようになってなんとか作りきりました。

そのハッカソンの懇親会で、一緒のチームの方に褒めて頂けたりして、「もしPythonの勉強会をやるとしたら参加しませんか?」というのを話したら「参加する」っと言ってもらえて、それが実際に勉強会を開催しようっと思ったきっかけとなりました。

動き始めてみた

その後、日本リック株式会社さんが主催した『IT技術者わいわい交流会』に参加しました。この交流会では、フリーで活躍して本なども出しているPythonエンジニアの嶋田 健志さんが登壇者としていらしてたので、話が聞きたくて参加していました。懇親会で嶋田さんに「ちょっとPythonの勉強会をやろうと思っていて」という話をして少しアドバイスも頂きました。ほかにも、本を書くまでどんなストーリーがあったのか、フリーランスとして食べていくためにどうゆう行動をしたのかなども色々教えてくださり、すごく良い方でした。

この交流会で「Pythonを教えて欲しい」という方も多くいました。

そこで終わった後、「じゃあとりあえず勉強会を開いたときの主軸になるようにPython勉強会というものを作っておこう」と思って、2018年02月18日にPython勉強会というグループをconnpassに作って、このサイトを立ち上げ、TwitterFacebookページGitHubにアカウントを作成しました。本サイトに記事が投函されると、自動的にTwitterFacebookに投稿するようにして、メンテナンスはこのサイトとGitHubだけ行えば良いかなぁという風に考えてしました。

また、GitHubはタスク管理にも使用しました。こんな感じ↓

参考にした記事

勉強会を開くための準備

まず勉強会を始めようと思ったのですが、周りにも勉強会を自分で主催している人もいなかったので「どうすればいいのか」という事でまずは手始めとして、いろいろ記事を読みました。そこで私にとって役に立った記事だけを下記に載しておきます。

勉強会の形式決定

じゃあ、まず勉強会はどんな形にしようか。受動的では面白くないよなぁ。 せっかく参加するんだし、能動的に参加できるのが良いよなぁ。そうなると、ハンズオン形式かなぁ。 という考えのもとツイートしたのがこちら。

その後も、まだ決め手に欠けていたので、参加してくれるっと言ってくれたハッカソンで同じチームメンバーに相談して、「ハンズオン形式であれば実践形式で学べて、楽しみながら進めていけそう」ということでハンズオン形式に決定しました٩( 'ω' )و

この時点での気持ち

もうすでにこれは大変だぞっという気持ちになってました(笑 『有志の社内勉強会を1年で50回くらいやった結果 伝えたいこと』に書いてありますが、

個人的には「運営側の動機付け」が大事だと思っています。

ということで、やろうという気持ちが冷めてしまったら終わりなので、勢いで気持ちがあるうちにやるべきだと体感しました。

なので、まぁ、気軽にやろうっと最初のうちは思っていました。 (実際は、参加人数が思っていた以上になって結構気張ってしまいましたが...苦笑)

開催場所の決定

株式会社PRECSさんから場所提供の案内を頂けました。ただ、まだ初めての勉強会で何をしたら良いか分からない状態だったので検討させてもらうことにしました。

そうした中、以前参加した『IT技術者わいわい交流会』で出会った方にエンジニアの鍋パーティに誘われたので参加してきました。そこで、同じく初参加のインフラエンジニアのVTRyoさんと出会って、勉強会を開こうっと思っていると話したところ、サポーターズCoLabの方を紹介していただき、VTRyoさんにアシストしていただきながら勉強会の開催日時と場所などがトントン拍子に決定しました。アシストして頂ける方がいたのは非常に大きかったです。VTRyoさん、ありがとうございました。

株式会社PRECSさんには、サポーターズCoLabさんに場所を提供して頂けることが決まった時点ですぐにその旨を連絡し、次回以降で使わせて欲しいというメッセージを送ると「空いている時は融通できる」というお話を頂け大変ありがたかったです。 ※日本リック株式会社さんからも場所提供の案内を頂いたのですが、すでにその時はサポーターズCoLabさんに場所を提供して頂くことが決まっていたので、次回以降で使わせて頂きたいという旨を伝えると、次回以降でもし使いたい時は声をかけて欲しいという返事も頂けて大変ありがたかったです。

テーマ決定

次に、中身として何をしようかと思って悩んでいました。

投票してくれる方たちがいて「LINEボット」をやろうと考え始め他にも少しだけ別の手段で意見を頂いた結果、 今回のテーマである『Pythonで作るLINEボット』に決定しました。

サポーターズCoLabさんとのやりとり

サポーターズ CoLabさんとは、次のような手順で話が決まりました。

  1. 開催日時
    この日はどうですかというのを提案されて決まりました
  2. アンケートに答える
    これは参加募集ページに記載する内容を決めるためのものでした

手順は以上でした。ちなみに、アンケートには企業名を書く欄があったのですが、「会社名を出すと会社の人間として話すことになるのでグループ名もしくは個人名でいいですか?」っと聞いたところ大丈夫だと言われました!

また、20代でない方も私の知り合いであれば参加してもらってもいいという事でした。ただし、参加される方は例外なく参加申込みは必要と言われたので、知り合いで参加してもらう方にも申し込みをお願いしました。

ハンズオンはどうやってやるのかの下調べ

まず、勉強会をしたことがないので、もちろんハンズオンのやり方も知りません。そこで、『GeoDev Meetup #13 - Python × 位置情報 ハンズオン』というのにサポート枠で参加して、運営側がどうゆう風に動くものなのかをリサーチにいきました。

このハンズオンではスタッフが10名くらいいて、自社が取り扱っている製品である「ArcGIS for Developers」を使ってもらうというためのものでした。まずは発表者やスタッフの方が自己紹介をして、次に参加者が軽い自己紹介と参加理由を述べていく形でした。 ほとんどはJupyterを使って行なっていましたが、なかなか上手く実行できないポイントがあったりしました。そのため、Jupyterでやるのは難しいなぁと思って、Jupyterは使わないことにしました。

サポート枠で参加してすごく感謝されたのですが、なんでそんなに感謝されたのかこの時は分からなかったです。 しかし、実際に自分でハンズオンを行うと1人でも手助けに動いてくれる方がいるだけで、かなり違うことがわかりました。 本当に当日参加者の中でいきなり手助けして頂いた方々ありがとうございました。本当にすごく助かりました。

勉強会開催への資料準備

さて、ようやく資料準備に入っていきました。まずは、資料を作る道具としてKeynoteGithubの「GitPitch」なども考えたのですが、なんとなくPowerPointで作り始めました。

GitPitchを知らない方へのオススメ記事: 『GitHubだけで超高機能なスライド資料が作れる「GitPitch」の使い方を徹底解説!』

まずは、自己紹介のところを適当に作って、Pythonの小ネタとしてこれからはPython3系を使わないといけない理由を入れました。 次に、LINEボットを作るためのチャンネル登録について最初からまたやってみて、スクリーンショットを取りつつ、公開する時に悪用されないようにシークレットコードなどは塗潰しながら作って行きました。 もうこれだけの資料を作るだけで資料は50ページを超えていて、工数も30時間以上かかっていたと思います(^^;)

その後、『line-bot-sdk-python』がどういうものなのかを調べるために、公式APIドキュメントとSDKの中身を照らし合わせながらそれぞれのクラスがどうゆう役割で、どういうデータが来るとどうなるのかなどを深く見て行きました。

このSDKの中身はクラス図も起こしたのですが、綺麗に設計されていて、役割がきちんと別れていて読みやすかったです。 (↑写真をクリックすると別タグが開いて大きい画像で表示されます。)

こうして資料と質問対策のためにコードを読んだ事で、「なるほどこうゆう風に作るのもありだよなぁ」っというのもあって勉強になりました。 とりあえず資料としては、エコープログラムを作って、SDKを使う時はこんな感じっていうもので終わらせる事を目標に作りました。

このプログラムを理解して資料を作る作業に、工数としては30時間以上かかっていたと思います。

勉強会前々日

多分いないだろうけど、PCを持ってきてくださいという案内は出しておこうと思ってTwitterで投げました。 勉強会ではたまにメモ帳だけの方もいるので、いるかもしれないなぁっと思いながら。 そして、当日何人かはPC持ってこられていなかったです。

勉強会前日

今までサポーターズCoLabさんにお邪魔した事がなかったので、下見がてら『初めてのGoogle Datastudio』に参加させて頂きました。参加した事で、会場の場所も把握できて、投影機などについても備えてあってHDMIが使えればよくて、当日はまず最初にサポーターズCoLabさんの方が話す事も把握できましたし、参加者同士が自己紹介をしたり、懇親会の飲み物も全て出していただける事もわかったので安心しました(笑 ただ、明日の緊張からだいぶ飲んで、帰ってからも夜中の2時くらいまで資料修正作業をしていました(^^;)

そして、前日に人が多くて声をあげられない人のために、Slackで進捗報告してもらおうかと思って案内をさりげなく出しました。

勉強会当日

朝も緊張とワクワクから5時には目が覚めて、作業をして、会社が終了してからもスタバで少しだけ資料を手直していました。

会場に早めについてので、ソワソワしながら即興でSlackのチャンネル案内用のQRを作って、Twitterにも投げました。 ただ、もう頭がいっぱいでやばかったです。実はほとんど会話が頭に入っていませんでした(苦笑

そして、開始してすぐのところで思わぬところで関門が待っていました。

関門1

それは参加者のレベルを知る為に質問をした時でした。

「Pythonを使った事がない人?」 後ろ側に座っている方の4割程度から手が上がりました...やばい... 実は、Pythonを知らない人、触った事がない人、インストールしていない人、初心者の方もいるかとは思っていましたが、 少しなら周りの方も教えてくれるだろうから大丈夫だろうと高を括っていました。 分からない人の周りにいる人がサポートしてねって感じでやろうと思っていました。 つまり、結果としては「想定外」というものでした...

ちゃんと資料準備してくるんだった... 後悔は後の祭りで、Pythonの公式ページからインストールしてもらってpip --versionができるか確認してもらいました。 そして、そこに次の関門がありました。 macOSやLinuxでは最初からPythonが入っているのをすっかり忘れていました。 パスが自動で通らないのでbashを変えないといけない...やばい...これは進まない。 しかも、設定なんか遥か昔にしたから忘れた...。 困惑している中、参加者の方が他の方を手伝ってくださって、最終的にはパスを変えず「pip3」と「python3」案で難をしのぎました。

関門2

時間がだいぶ押してしまった中、とりあえずLINEのMessagingAPIの紹介として、LINE公式の動画を流しました。 この時に説明を入れながらしようか迷ったのですが...やりませんでした。 動画を流している最中に飽きているのが分かって、やるべきだったと後悔しました...。

関門3

さて、ようやくLINEのデベロッパー登録をしていこうとしたところ、参加者の1割くらいがLINEログインできない問題が出ました。 まずパスワードを覚えていない方も多かったです...。最初にこれも案内しておくべきでした...。

新しいLINEアプリにアップデートしたら直った方もいたみたいです。ただ、前は入れたのだけど入れなくなった方もいました。 画面にはパスワードが間違っているかもしれないというのが出てたので、とりあえずパスワードを変えてもらってチャレンジしてもらったのですが、 上手くいかず、これ以上時間を避けなかったので残念ながら先に進むことを決断しました。

この問題に関して、この勉強会を作るきっかけとなった方も起きていたので、スクリーンショットを撮って送って欲しいとお願いして、 試してもらったところすんなりログインできたという報告をもらいました。一定回数ログインを間違えるとアカウントに対してロックがかかるみたいです。

関門4

無事ログインできても問題がまだありました。 なぜかプロバイダーが大量に作られてしまって、それ以降の処理も実行できない方がいたり、MessagingAPIではなくLoginAPIの方に入ってしまっていたり。 この時点ですでに21時を回っていました...裏でやっていた方はもう懇親会が始まって楽しそうな笑い声...orz

ようやくコーディング

もう時間がなかったので、一番大事で、一番準備してきたところをすごくおざなりにしてしまう事になりました。 とりあえず、一応準備していたサンプルコードをGitHubからダウンロードしてもらって、 サンプルコードの簡単な説明をして、修正する箇所を伝えて、Webhook確認でエラーが起きないようにする方法を伝えて、 自分のボットの追加方法をその場で説明し、実行してもらいました。

ただ、自分のボットが動かない...orz もう考える頭がありませんでした。 ただ、参加者の方は、無事に動いていると言ってくれていたので、時間も過ぎていたためそれで終わりにしました。

もうグダグダになってしまって、時間もかなり押してしまい、 サポーターズCoLabさんや参加してもらった方にすみませんという気持ちでいっぱいでした。

LINEログインができない問題と、その後の設定でよくわからない現象が出る問題以外に関しては、 自分の準備不足が大きかったです。LINEログインもパスワードに関しては先に伝えておくべきでした。

振り返って

最初はすごく緊張していたのですが、知り合いも連れてきていたし、最初のきっかけになった方も約束通り来てくれたり、鍋パーティを誘ってくれてこの場所を貸していただけるきっかになった方も仕事で遅れながらも来てくれたりして気持ち的にすごく助かりました。また、参加者の方も笑顔で聞いてくれたり、投げかけた事に答えていただけたり、能動的に動いていただける参加者の方が多くて本当に助かりました。すごく発表側からするとありがたい事に気づきました。

それと、ハンズオンは一人でやるものではないとすごく実感しました。 ただ、今回行った事で動いてくれる方がいたり、さらにもし次行うときは手伝ってくれるっと言ってくださったかもいてすごく嬉しかったです。 次は今回の反省を生かしてやろうと思っています。

また、終わった時には半端ない疲労感もあり、 質疑応答では、資料をSlackにあげて欲しいと言われたのを「SlackではなくTwitterであげるからフォローしてください」っと言ったり、 Djangoを「ジャンゴ」ではなく「ディジャンゴ」って間違えて呼んだりしていました。 あれは、言い訳でしかないのですが思考が停止寸前な状態でした...すみませんでした...

ちなみに、「SlackではなくTwitterであげる」と言った件に関しては、「もともと資料に関してはこのサイトであげる予定だったので、記事を投稿すると自動的にTwitterに流れるからフォローしてもらえればすぐに分かります」っというのを話す思考の流れになっていました。だから本当はその情報をSlackにも投げればいいのに、なぜあの時否定してしまったのか。そして、ちゃんと説明せずにフォローしてしか言わなかったのか...後悔しかないです...orz 公開資料を作成して本サイトで投稿した後にSlackにも投げました。

また、他の質問で、 「Pythonで何ができるのか?」と言われると、 PythonはPC側やスマホ側のGUIも作れるし、低レイヤーの仕事も上位の仕事もできるので何ができるかという質問には「なんでもできます」となって、 「Pythonの特徴は?」と言われると、 シンプルで書きやすいけど、ハマるポイントはたくさんあって、まぁ強いて言えばC/C++と相性がいいところっとなってしまう。 なんかもっと上手い答えを準備しておきたいと思いました(´・д・`)

あと、Slackも使ったことがない人を想定すべきでした。 また、チャンネルも口でしか説明していなかったので、みんなgeneralで話している状態になってしまってました。 他の参加者が気づいて、チャンネルの誘導をして頂いていました。ありがとうございました。

全体を振り返って

今回この記事を書いたことで、本当にいろんな方と巡り合って、いろんな方の協力のもと出来たんだなぁっと感じました。 感謝でいっぱいです。本当にありがとうございました。

「はじめてだから仕方ない」とは言えども、参加してもらう方やこれに携わって頂いた方達の時間を頂いて行っているので、できるだけ無駄にはしたくないと思いながら資料も作ったのですが結果としてはうまくいきませんでした。今後はこの失敗を材料に改善して、次の勉強会はもう少しスムーズで良いものにできるようにしたいと思っています。

Python勉強会について

Python勉強会は集える場所にもしていきたいので、私だけが発表するのではなく、 もし登壇したい方がいれば一緒にやりたいと思っているので希望される方はお声がけしてもらえればサポートしたいと思っています。 また、サポートしてくださる方も募集しているので、気軽に声かけてもらえれば嬉しいです!