Zenn
🤖

超簡単にLINEボットをつくろう!(Python, flask, Vercel)

2025/03/26に公開

はじめに

誰でも、簡単にLINEボットをつくれる方法を紹介したいと思います。普段は、Next.jsで開発をしているのですが、Pythonを用いて、簡単にLINEボットをつくれる方法を紹介したいと思います。
今回は、オウム返しをゴールに進めていきます。

事前準備

作成するにあたって、以下の事前準備を行わないといけません。すでに出来ている人は、先に進んでください。

  • Cusorのインストール(VScodeやほかのコードエディターでも可)
  • Python環境構築
  • Githubアカウントの作成
  • Vercelアカウントの作成
  • gitインストール
  • LINE公式アカウントの作成

Cursorのインストール

  1. 以下のページで、Cursorをダウンロードする。
    https://cursor.sh/

  2. ダウンロードが完了したら、ダウンロードしたファイルをダブルクリックし、初期設定を行う。

以下のページを参考にしてください。
https://qiita.com/noimp/items/50a0b452688ad11f08eb

Pythonの環境構築

  1. 以下のページで、Pythonをダウンロードする。
    https://www.python.org/downloads/

  2. ダウンコートが完了したら、ダウンロードしたファイルをダブルクリックし、下記にチェックを入れて、インストールする。
    ・「Use admin privileges when installing py.exe」
    ・「Add python.exe to PATH」

  3. インストールが、終わったら、「close」ボタンを押す。

  4. 確認のために、コマンドプロンプトを開き以下のコマンドを実行

python --version

バージョンが表示されたら、インストール成功。
以下のページを参考にしてください。
https://qiita.com/noimp/items/50a0b452688ad11f08eb

Githubアカウントの作成

  1. 以下のページでGithubアカウントを作成する。
    https://github.com/

Vercelアカウントの作成

  1. 以下のページでVercelアカウントを作成する。アカウント作成は、先ほど作ったGithubのユーザー認証を用いてください。
    https://vercel.com/

gitインストール

  1. 以下のページからgitをインストールする。

以下のページを参考にしてください。
https://www.sejuku.net/blog/73444#index_id1

LINE公式アカウントの作成

以下のページから公式アカウントを作成してください。
https://entry.line.biz/start/jp/

オウム返しBOTの動作

サーバー用のコードを作成

サーバーで動作するコードは、以下の通りです。flaskを使って実装しました。

flaskとは?

flaskとは、簡単なwebアプリケーションを作ることができるpythonのライブラリです。

フォルダ構成
my-bot/
  ├ api/
  │ └ index.py
  ├ vercel.json
  └ requirements.txt

index.py
from flask import Flask, request, jsonify
import requests

app = Flask(__name__)

LINE_ACCESS_TOKEN = "YOUR_LINE_ACCESS_TOKEN"
LINE_API_URL = "https://api.line.me/v2/bot/message/reply"

@app.route("/")
def hello():
    return "<h1>Hellow world!</h1>"

def reply_message(reply_token, text):
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {LINE_ACCESS_TOKEN}"
    }
    data = {
        "replyToken": reply_token,
        "messages": [{"type": "text", "text": text}]
    }
    requests.post(LINE_API_URL, headers=headers, json=data)

@app.route("/webhook", methods=["POST"])
def webhook():
    body = request.json
    if "events" in body:
        for event in body["events"]:
            if event["type"] == "message" and event["message"]["type"] == "text":
                reply_message(event["replyToken"], event["message"]["text"])
    return jsonify({"status": "ok"}), 200

if __name__ == "__main__":
    app.run()

YOUR_LINE_ACCESS_TOKENのところは、https://developers.line.biz/ja/, で先ほど作った公式アカウントのものを入れてください。

vercel.json
{
    "rewrites": [
      { "source": "/(.*)", "destination": "/api/index" }
    ]
}
requirements.txt
flask
requests

コードをコピペ出来たら、「Source」から、「Publish to Github」で、Githubにリポジトリを作ります。


「ok」を押して、3つのファイルをリポジトリに追加しましょう。

https://vercel.com/, にアクセスし、「Add New」からprojectを選択します。

先ほど作った、my-botを選びます。

何もいじらずに、「Deploy」しましょう

成功したら、このような表示になります。「Continue to Dashboard」でダッシュボードに移動します。

ダッシュボード上の「Domains」を次のLINEの設定で使うので、メモしておきましょう。

https://developers.line.biz/ja/, 上で先ほど作ったwebアプリのurlを設定します。
「Messaging API」タブに移動して、

「Use webhook」にチェックをいれ、Webhook URLには、以下のURLを入力しましょう。
メモしたドメインを使い、https://{メモしたドメイン}/webhook, というurlを設定してください

「Messaging API」チャネルがないという方は、https://manager.line.biz/, で「設定」から「Messaging API」を有効にしましょう。
詳しくは、以下のページを参考にしてください。
https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa-check

実際の動作

終わりに

いかがだったでしょうか?
簡単と銘打ったものの、環境構築から始めた人にとっては、難しかったと思います。
また、内容が理解できないまま、完成してしまうので、達成感を味わいずらいかなと思います。オウム返しから、特定の単語のみに反応するBOTにしたり、常に同じ言葉を返すBOT、計算をしてくれるBOTなど、アレンジをしていくうちに、理解してもらえたらなと思います。

コードに変更を加えた後、変更を適用する場合には、githubにpushしなければいけません。
以下のページを参考に、gitの使い方を学びましょう。
https://qiita.com/hayaharu3220/items/b7eb57a3689fb8050856
VScodeとCursorは兄弟みたいなものなので、使えるようになると思います。

Discussion

ログインするとコメントできます