はじめに
だんないよ、nikkieです。
サポーターズさんで開かれた「Python勉強会」のレポートです。
勉強会の概要
【サポーターズCoLab勉強会】Python勉強会 - サポーターズCoLab より抜粋します。
今回の勉強会では、ハンズオン形式でPythonでLINEボットを作ります。
こんな話をします
実際にPythonでLINEボットを作ったアプリの話や、LINEの開発者登録、
ハンズオンの流れ
- Python3系インストール
- ngrokダウンロード
- LINEのチャンネル設定
- サンプルコードを動作させて疎通確認
LINEのチャンネル設定
ハンズオン中はPCブラウザからLINEにログインできず、チャンネル設定が進められませんでした。
(LINEからパスワードを変更し、それを入力してもログインできなかった)
同様の症状の方から、スマホのLINEを最新にしたらPCからログインできたという情報もありました。
帰宅後、パスワード管理ツールからパスワードをコピーしたら私もログインできました。
ハンズオン中はちょうどパスワード管理ツールが壊れていたので、目コピしたパスワードの入力間違えだったようです。(釈然としませんが。。)
Messaging APIのチャンネル作成後、以下の設定が必要でした。
(公開資料60スライド目から。今後機能追加するときの備忘録として記載します。)
メッセージ送受信設定:
- アクセストークンを発行する
- Webhook送信を「利用する」に変更
- Webhook URLにはngrokのhttpsのアドレスを設定する。
これはngrokを起動するたびに変わるようなので、都度変更が必要なようです。
LINE@の機能の利用:
- 自動応答メッセージは「利用しない」に設定する
サンプルコードを動作させて疎通確認
- pip install line-bot-sdk Flask
※Python3系の仮想環境(後述)を作って動作させています。
Flaskは明示的にインストールしないといけないらしい
(line-bot-sdkのインストールの中で自動的に入るわけではないらしい)
GitHub - line/line-bot-sdk-python: SDK of the LINE Messaging API for Python.
- 以下のサンプルコードをコピーし、「sample_app.py」として保存
StudyContents/sample_app.py at master · PythonStudyGroupJP/StudyContents · GitHub
(↑ソースコードパス変更によるリンク切れを発見したので、修正。2018/06/10)
【フォルダ配置参考】
python-line-bot/ ←ハンズオン用のフォルダ
├ env/ ←Python3系仮想環境(後述)
└ sample_app.py - サンプルコードを実行:python sample_app.py
Flaskはポート5000をデフォルトにするようなので、ngrokもポート5000指定で立ち上げる必要あり(スライド94、98、101)。
公開資料をもとに進めた時、ここにハマりました
(ngrokを立ち上げるたびにLINEチャンネルのWebhook URLの設定が必要になります) - 公開資料のようにsample_app.pyを修正したところ、ngrokとサンプルコードの間で疎通確認に成功しました!
(ngrokとサンプルコードが同じフォルダになくても疎通確認まではできるようです)
感想
ひとまず疎通確認までできたのでブログ化しました。
今後は勉強会の他のソースコードを見てBotと会話してみたり、機能追加をしてみる予定です。
nkjmさんのQiita記事が機能追加の参考になりそうですね。
LINEのBot開発 超入門(前編) ゼロから応答ができるまで - Qiita
エンジニアとしてPythonを軸にしたいので、Pythonで今後LINE Botが開発できそうなことが大変嬉しいです。
画像や位置情報が取れるので、他のAPIとマッシュアップ試してみます。
講師のFumiさん、準備〜ハンズオン〜資料公開とお疲れさまでした。
公開いただいた資料に沿ってひとまず疎通確認までできました。
勉強会の開催と資料の公開をしてくださり、本当にありがとうございます!
微力ながら次回はメンターや運営の手伝いなどお手伝いしたいと思いますので、お気軽にお声がけください。
終わりに:仮想環境の話
私がPythonを知ったのは、PyNyumonというイベントです。
そこで仮想環境(venv)を知り、以降は仮想環境を使うようにしています。
pynyumon/1_python_basics.md at master · pynyumon/pynyumon · GitHub
最近やっているDjangoチュートリアルでもvenvが使われていました。
Djangoをインストールしよう · workshop_tutorialJP
Pythonを始めようという方はvenvまで知っておくといいのではないかと思います。
私個人は最近、機械学習の勉強でフォルダを作るたびに
必要なパッケージ(numpy、pandas、jupyterなど)を仮想環境にpip installするのが手間に感じています。
それを解決するにはanacondaなのかなと考えはじめています。
(venvとどう使い分けるかというところから調査が必要な状態です)
今回のハンズオン出席者の皆さま、お疲れさまでした。
公開資料で皆さんもLINE Botが動かせることを願っています。