FlaskでLINE通知を実装するまでに10時間かかった話【失敗と学びの記録】

🎯 はじめに:通知機能がどうしてもほしかった

私は現在、Flaskで開発した発音添削アプリを運営しています。このアプリでは、生徒が録音した音声に対し、講師がフィードバック音声を返すという仕組みです。

以前から、「フィードバックが完了したら生徒に自動で通知したい」という思いがあり、今回ようやくメール通知+LINE通知の実装に成功しました。

🔧 やりたいこと:FlaskからLINEで通知を飛ばす

今回の目標は以下の2つ:

  • 📩 メールで「フィードバックが届きました」と通知
  • 📲 LINEでも同じ通知を生徒に自動送信

とてもシンプルな要件に見えますが……。
実際にやってみると、とても時間がかかりました(なんと10時間)

🌀 失敗1:Webhook URL が認識されない

LINE Messaging APIの「Webhook URL」を設定して、検証ボタンを押すと……

エラー。

原因は「LINE Developers」と「LINE Official Account Manager」の違いをちゃんと理解していなかったこと。そして、Webhook URLがPythonAnywhereに正しく届いていないことに気づくまでに時間がかかりました。

🔑 失敗2:チャネルシークレットとアクセストークンが読み込めない

.env ファイルに以下のように書きました:

LINE_CHANNEL_SECRET=xxxxxxxxxxxxxxxx
LINE_CHANNEL_ACCESS_TOKEN=xxxxxxxxxxxxxxxx

Pythonファイルで os.getenv() を使って読み込むも、Noneが返ってくる。

原因は WSGIファイルで .env を読み込んでいなかった こと。
これに気づくまで、何度もアプリを再起動したりprint文でデバッグしてました。

💡 成功の鍵:.env 読み込みとimport順序の整理

最終的に成功したのは、以下の2点を徹底したからです:

  • 🧩 WSGIファイル内で load_dotenv() を明示的に実行
  • 🧼 Flaskアプリ本体でも、dotenv を先頭で読み込み、環境変数取得を整理

📬 メール通知は比較的スムーズ

メール送信は Flask-Mail を使っており、比較的スムーズに動作しました。
すでに構築済みの仕組みに notify_feedback_uploaded() 関数を追加して対応。

📲 LINE通知:push_line_message関数の完成

LINE通知用の関数は以下のように定義しました:

def push_line_message(user_id, message):
    url = "https://api.line.me/v2/bot/message/push"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {LINE_CHANNEL_ACCESS_TOKEN}"
    }
    payload = {
        "to": user_id,
        "messages": [{"type": "text", "text": message}]
    }
    response = requests.post(url, headers=headers, json=payload)

この関数をフィードバック完了時に呼び出すことで、生徒のLINEに自動通知されるようになりました!

🎉 成功の瞬間:「🎧 フィードバックが届きました!」

試行錯誤の末、自分のLINEに「🎧 フィードバックが届きました!」という通知が届いた瞬間、思わず声が出ました。

「やっと……つながった……!」

💸 アフィリエイト:学び直しにおすすめの講座

私はPythonもFlaskも独学で学んでいますが、実際につまずくことも多いです。
もし、最短ルートでサポート付きで進みたいなら、以下のようなオンラインスクールがおすすめです。

👩‍🏫 マンツーマンで学びたい方向け

TechAcademyのPythonコース:マンツーマンのサポートつきで短期間にしっかり学びたい方向け

📺 動画で学ぶなら

Schoo(スクー):ライブ配信&動画見放題で気軽に学びたい方向け

📝 今日のまとめ:学びは「詰まったところ」にある

失敗のたびに調べて、やり直して、それでも動かず、またやり直して…。
今日の作業時間は10時間。

でも、ようやくLINE通知が届いた瞬間の達成感は、すべての努力を報いてくれました。

これからも「できるようになったこと」をブログに書き残していきたいと思います。


上部へスクロール