nikkie-ftnextの日記

イベントレポートや読書メモを発信

イベントレポート | 【サポーターズCoLab勉強会】Python勉強会(LINE Botハンズオン)#spzcolab

はじめに

だんないよ、nikkieです。
サポーターズさんで開かれた「Python勉強会」のレポートです。

 

勉強会の概要

【サポーターズCoLab勉強会】Python勉強会 - サポーターズCoLab より抜粋します。

今回の勉強会では、ハンズオン形式でPythonでLINEボットを作ります。

こんな話をします

実際にPythonでLINEボットを作ったアプリの話や、LINEの開発者登録、

アプリ登録、Python用のSDKの簡単な使い方について話します。

PythonでのLINE Botハンズオンということで興味をもちました。
 

ハンズオンの流れ

  1. Python3系インストール
  2. ngrokダウンロード
  3. LINEのチャンネル設定
  4. サンプルコードを動作させて疎通確認

 

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とサンプルコードが同じフォルダになくても疎通確認まではできるようです)

f:id:nikkie-ftnext:20180326180257p:plain

 

感想

ひとまず疎通確認までできたのでブログ化しました。
今後は勉強会の他のソースコードを見て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が動かせることを願っています。