LoginSignup
0
0

More than 1 year has passed since last update.

makeを使って、Flaskなどのローカルサーバとngrokを一発で起動する

Posted at

Slack bot や LINE bot を開発をするときに、

  1. ngrok で webhook 用の URL を発行する。
  2. Flask サーバを立てる。
  3. ボットの管理画面に発行した URL をコピペして検証する。

というのを毎回する。これをチュートリアル通りにやると、ターミナルを複数タブで起動したりトラックパッドをいじってコピペしたりで地味にめんどくさい。

これを make bot コマンドを打つだけで半自動化させたい!(手作業で管理画面へのコピペは必要。)

Makefile
bot:
    # 1. ngrokをバックグラウンドで実行する。
    nohup ngrok http 5000 &
    # 2. localhost:4040 が立ち上がるまで1秒待つ。
    sleep 1
    # 3. webhook で使用する ngrok の URL をクリップボードにコピーする。
    curl http://localhost:4040/api/tunnels | grep -oE "https:\/\/.+?\.ngrok\.io" | pbcopy
    # 4. コピーした URL を確認する。
    pbpaste
    # 5. Flask アプリなどを起動する。
    python app.py

これを Makefile に定義すれば make bot を実行すれば

  • ngrok がバックグラウンドで起動してる。
  • Flask が起動してる。
  • クリップボードに https://<ランダム>.ngrok.io がコピーされてる。

状態になるので、サービスの管理画面に ⌘/Ctrl+V でペーストするだけでローカル開発のセットアップ完了となる。

app.py は Flask なら以下のようなもの。

app.py
from flask import Flask
app = Flask(__name__)

# Slack や LINE から URL を検証する関数を定義する。

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

webhook をつなげるとき、まず最初に Slack や LINE などのサービスから飛んできたリクエストに対して "OK" を返してURLを検証する作業をする。このための関数はサービスによって異なるので省略している。

0
0
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
0
0