7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[無料][2024年版] LINE Messaging API v3 + Python(Flask) でボットを作る [その1 - 準備編]

Last updated at Posted at 2024-01-05

開発環境の準備

私が LINE bot の開発を始めたのは数年前のことで、機械学習(自然言語処理)をやっているので Python の知識はそれなりにあったものの、ソフトウェア開発やネットワーク関連の知識はほとんどありませんでした。デプロイ?PaaS?なにそれ?という状態でしたね。ただ、研究畑であっても成果物を公表する際にWeb化したりAPI化する必要に駆られることはあります。その一環でLINE bot の開発に取り組み、いろいろ勉強して今に至りました。同じような境遇の方もいると思い、なるべく初心者向けの解説を心がけます。

Python をある程度使える状態であることは前提として、開発環境として準備すべきものは以下になります。

  1. LINE Developer アカウント + LINE Official Account Manager
  2. Python 仮想環境 (virtual environment)
  3. Flask, line-bot-sdk
  4. 作ったアプリをデプロイする何らかのホスティングサービス

GitHub は必須ではないものの、(4) の段階であった方が便利なことが多いですので、ここでは新規に linebot という名のレポジトリを作ってクローンし、その中で進めていきます。その他、私が使っているツールは

などがありますが、これは その5 - tips 編 で解説します。データベースを併用する場合は、さらにこれに SQL 関連が入ってきますが、それは今回は割愛します。

まず (1) に関しては、Developer アカウントの開設方法、Messaging API のできることなどは他に良記事がたくさんありますのでそちらを参考にして下さい。細かい設定などは後の記事でまた触れることがあると思います。オフィシャルの説明もわかりやすいです。

Python 仮想環境

次に 2. ですが、これはかなり重要です。正直私もアプリ開発をするまでは仮想環境の重要性がわかっていませんでした。そもそも仮想環境とは何か、についてはこちらにも詳しく書かれていますので参考にして下さい。

Mac用

Windows用

Python のように多数の外部ライブラリを必要とし、バージョン管理が重要となる言語では仮想環境の構築なしではそもそもデプロイ(作ったアプリをサーバー上に配置すること)さえ成功しないことが多いです。自分のPCだけでプログラムを動かす場合には、常に最新のバージョンにしていても問題ないですが、他人様のプラットフォームを使う場合には、それに合わせなければなりませんからね。また、仮想環境を作ることで「必要なライブラリだけを管理し、サーバー上にインストールする」ということができます。仮想環境なしだと、自分のPCにインストールされている全てのライブラリをインストールすることになり、余計な容量を消費します。

仮想環境を作るにあたって、Python のバージョンも重要です。私のPCにも Python3.7 ~ Python3.12 が入っており、デプロイ先の環境に合わせて選択します。ですが、今回の場合 3.8 以上 3.11 以下であればどれでも問題ないと思います。

メインの Python のバージョンの確認は、ターミナルで which python または which python3 で確認できます。ちなみに Mac ですので、Windows だとどうなるかはわかりません。

$ which python3
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3

それに加えて、別バージョンもインストールしていると python3.11python3.7 のように確認できるかと思います。以下は私の例です。

$ which python3.11
/opt/homebrew/bin/python3.11

$ which python3.7
/usr/local/bin/python3.7

この辺はPATHとかエイリアスとか面倒くさい話も絡んでくるのでここでは割愛しますが、とりあえず 3.8 以上であればOKです。そのまま linebot リポジトリ内に移動し、

linebot $ python3 -m venv venv

このコマンドで、現在使っているバージョンの Python の仮想環境が入ったフォルダ venv が作れます。上記のリンクでは python -m venv .venv と、隠しフォルダの . を付けた名称で作成していますが、VSCode などのエディタを使っている場合はいずれにせよ見えますし、そもそも名前は何でも構いません。仮想環境を有効化するには

linebot $ source venv/bin/activate
(venv) linebot $

のようにします。仮想環境が有効時には、(venv) が前に付きます。この状態で、必要なライブラリを pip で再度インストールしていくことになります。

Flask

Flask はPython用の Webアプリケーションフレームワークです。Ruby でいうところの Rails、PHP でいうところの Laravel です。これを使うことで、簡単な Webアプリケーションなら十分作れます。

Pythonの Webアプリケーションフレームワークといえば Django もありますが、Flask の方が軽量かつシンプルということでこちらを採用します。何よりLINE本家のサンプルコードが Flask を使っていますからね。

Flask を使うことで ウェブサイトとしての機能をもたせることもできますが、LINEボットとしてはあくまでバックエンド処理だけあればよく、ページは必須ではありません。Flask でウェブサイトも作りたい場合は、他の記事も参考にしてみてください。

先ほど仮想環境を有効化した状態で、この Flask と、LINE公式の開発キットである line-bot-sdk をインストールします。

(venv) linebot $ pip install flask line-bot-sdk

他にもボットの内容に応じて必要なライブラリをインストールする必要がありますが、今回のテーマは「無料」なので、あまりに欲張りすぎるとライブラリだけであっという間に容量オーバーするので気を付けて下さい。例えば Pandas をインストールすると、自動的に numpy やらなにやらが付いてきて150MB近く消費します。tensorflow とか使おうものなら無料枠だと一発アウトです。

とりあえずはこの2つだけインストールし、足りない分は後ほどその都度 pip install していけば良いです。

ホスティングサービス

これが今回の「無料」ボット作成において一番の壁になります。以前は Heroku が圧倒的な人気を誇っていたのですが、2022年末に有料化して以来難民が大量発生しました。私もその難民の一人です。

本格的なものを作る際には AWS などの有料のサービスを使っていますが、誰が使ってくれるかもわからない簡易的なものにそこまでお金はかけられません。そこでオススメするのが、以下の3つです

どれもメリット・デメリットはあるのですが、今回は Render を採用します。GitHubとの連携設定が非常に容易だからです。ただ、無料で作れるアプリは一つのみであり、また GitHub と連携できるアカウントも一つしか作れないので、複数のアプリを動かしたい方は他のサービスで複数アカウントを作るのも手です。実際に私もやっています。

Render のサインアップ、設定方法などはこちらの記事などに詳しく書かれていますので、参考にして下さい。デプロイは次回以降になりますので、GitHub の連携までで大丈夫です。

ただし、Render は15分アクセスがないと自動でスリープしてしまい、アクセス時の再立ち上げにはかなり時間がかかります。これを回避する方法は その5 - tips 編 で解説します。

ここまでで準備完了です。では次回から具体的なボットのプログラム作成に入ります。

目次 : [無料][2024年版] LINE Messaging API v3 + Python(Flask) でボットを作る

GitHub レポジトリ
older_version 内に、各回時点での app.pyrequirements.txt があります。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?