今から僕は、LINE botをpythonでつくってみる

2022_10_20 新木大地

今後、ゼミの研究等でLINE botに触れるひとが、よりスムーズに学べるように、知識がない状態では調べにくい前提知識や、個人的な解釈についてお話していきます。LINE botを利用するメリットや、LINE botとはなにか?については割愛します。

なぜpythonでつくるのか

まずは『LINE botをつくるときの技術えらび』から述べていきますね。

プログラミング言語は、GAS、またはPythonの2択で考えています。

僕がこれまで作ってきたLINE botは4つともすべて、GASで作成しています。実はPythonでつくった経験がなく、今回はじめてpythonで書きました。

さて、4つのLINE botをすべてGASでつくったのは、なにも、技術につよいこだわりがあったからではありません。GoogleドライブやGoogleスプレッドシートとの連携が容易にできてしまうので、実務を想定した開発が多いLINE botの作成はGASになってしまいがちなんですよね。

また、一度プログラムをつくっておけば、24時間勝手に動作してくれるので、GAS特有の難しさに慣れさえすればGASでつくるほうが楽に感じます。

では、Pythonで書くべきではないのか?というと、それは違います。上記のGoogle関連ツールを利用する場合をのぞけば、Pythonで書くメリットのほうが大きいです。理由は単純に、動作が速いから。GAS、かなり重いですよ。ユーザがストレスを感じるレベルです。

まとめると、Google関連ツールをつかうときはGAS。それ以外ならPyhton。

pythonでつくるときのワナ

実際に簡単なプログラムを動かしてみて「これ他のひとハマりそうだな」と思ったところを書いていきます。

Paasをつかってサーバーを用意する

Pythonで書いたプログラムは、GASとちがい、”24時間勝手に動作してくれる”ということはありません。

プログラム書いておいておけば、それだけで勝手にLINEが動いてくれる。という状態にするには、プログラムをサーバー上におく必要があります。HerokuかAWSのサービスを使うことでサーバーを用意しましょう。

Herokuはクセがつよく、僕の技術力では扱いきれなかったのと、2022年11月から有料化するそうなので、今回はAWSのサービスである”API Gateway”と”Lambda”を使ってサーバーを用意します。Lambdaでプログラムを書いて、API Gatewayでそのプログラムを使うイメージです。

webhookとは

LINE botでは、ユーザとプログラムの間で相互にメッセージのやりとりをする必要があります。ユーザからLINEでメッセージが送られると、そのメッセージをpythonでうけとり、なんらかの処理をして、LINEに返答することが多いですよね。

このとき、LINEとpythonプログラムの間で、データの受け渡しの仲介人を担うのが”webhook”です。LINEとpythonプログラムは直接のやりとりができないので、webhookの設定が必要になります。

システム開発者むけのLINEの設定はLINE Developersから行えます。Messaging APIのタブをみつけて設定してください。

デプロイとは

pythonプログラムを”使える状態”にしてURLで表わす、一連の作業を”デプロイ”といいます。webhookにはデプロイしたURLをセットしましょう。

参考(サンプルプログラム)

https://qiita.com/w2or3w/items/1b80bfbae59fe19e2015