はじめに
だんないよ、nikkieです。
6/16にLINE Bot ハンズオンにサポーター参加してきました。そちらのレポートです。
勉強会の概要
PythonでLINE botを作ろう!! ITわいわい!! - connpass
■ご案内
IT技術者同士のつながりの輪を広げたい思いからわいわい交流会が始まりました。 第2回目となる今回は、『PythonでLINE botを作ろう』をテーマにハンズオンを実施致します。
Pythonに興味はあるけど一人ではなかなか先へ進めない方など、この機会にPythonに触れてみませんか。
講師のFumiさんとは3月のサポーターズ勉強会で知り合い、
次回ハンズオンでお手伝いさせてくださいと申し出たところ、今回の機会をいただきました。
イベントレポート | 【サポーターズCoLab勉強会】Python勉強会(LINE Botハンズオン)#spzcolab - nikkie-ftnextの日記
微力ながら次回はメンターや運営の手伝いなどお手伝いしたいと思いますので、お気軽にお声がけください。
LINE Bot作成
資料は以下に公開されています。(第1回目の内容をベースに、4択クイズ機能が追加された内容です)
Python勉強会(#002) 『PythonでLINE botを作ろう!!』公開資料 – Python勉強会
コードに関しては以下のような手順で手を入れていきました。
- GitHubのline-bot-sdk-pythonのサンプルコードをベースにする
- https://github.com/line/line-bot-sdk-python#synopsis
- コード中に
YOUR_CHANNEL_ACCESS_TOKEN
,YOUR_CHANNEL_SECRET
を設定
- 接続確認でエラーにならないように修正
- サンプルコードのエンドポイントが存在しないので、存在するエンドポイントに修正(スライド87)
- 接続確認では返信先がないことによるエラーが出ないように修正(スライド90)
- 4択クイズBotに機能追加
- ソースコード: https://github.com/PythonStudyGroupJP/StudyContents/blob/master/No002/app.py
- スタンプ
StickerSendMessage
(スライド104) 一覧がないらしく、どんなスタンプなのかはBotから送って確かめて開発を進めているとのこと - 4択
TemplateSendMessage
のButtonsTemplate
- クイズへの応答の設定は
event.message.text
(=ユーザが送ったテキスト)の値による条件分岐
感想
- ほとんどの人が4択Botを動かせたようでよかったです。機能追加する際はコードを少し変えて動かして挙動を見て、理解を深めていくような感じでしょうか。気になる箇所をprintしてもよさそうです。
- LINE Bot SDKはFlaskで動いているようです。AzureのWebAppsの知識と掛け合わせたところ、オウム返しBotをWebAppsで動かせました!ざっくりとした手順1は
- WebAppsインスタンス作成(Python3.6を使うように設定2)
- GitHubのline-bot-sdk-pythonのサンプルコードについて以下を行う(main.pyとして保存する)
- 上記の「接続確認でエラーにならないように修正」2点
YOUR_CHANNEL_ACCESS_TOKEN
,YOUR_CHANNEL_SECRET
は環境変数から読み込むようにする(os.getenv()
)
- WebAppsで動かすために必要なファイルを追加 参考: https://github.com/ftnext/python-docs-hello-world
- .skipPythonDeployment
- ptvs_virtualenv_proxy.py
- web.config
- requirements.txt
- WebApps側に環境変数設定
▼動かしてみた様子はこちらから
LINEBotのAzureへのデプロイに成功した。
— nikkie (@ftnext) 2018年6月16日
限界迎えたので手順の共有などはまた明日。
環境変数の読み込みが遅く、接続確認がうまくいかなくて焦った pic.twitter.com/8JltTcvVst
- 懇親会でサポートのしむどんさんがPyNyumonのテキストを作られたことを知りました。あのテキストは何度も参照しました。今回は私一人では解決できない部分をフォローしていただきありがとうございました!
- 事前に調べたり、当日対応したりして環境構築について少し理解が進みました。(PyNyumonでメンターのみなさんが何と戦っているかその一端を垣間見た気がします)
- pyenvが必要かどうかフローチャート
- この記事には納得しました。使いこなせない高級な道具(pyenv)より、使いこなしやすいシンプルな道具(venvやvirtualenv)を使いたいと個人的には考えています。Pythonを業務で書いている身ですが、venvでこれまでのところ事足りています。
- condaとpip:混ぜるな危険 - onoz000’s blog
- condaとpipは合わせて使えないのか。。
- pyenvが必要かどうかフローチャート
ハンズオン参加者の皆さま、運営の皆さま、どうもありがとうございました。
質問に答えることで理解を深められましたし、いろいろな方とつながれた素敵な時間でした。
脚注
-
不要かもしれないですが、Python3.6を境にjson.loads()の動きが変わっていたことで1週間ハマりました ToTの経験からバージョンは揃えると心に決めています↩