私が歌川です

@utgwkk が書いている

SlackのスラッシュコマンドをHerokuからCloud Functionsに持っていく

/string_random で、与えられた正規表現にマッチする文字列をランダムに生成するSlackのスラッシュコマンドを作って、サークルのSlack workspaceで動かしている。

これまではHerokuで動かしていたのだけれど、Herokuだと寝ている時間が支配的で、たまに人間が来てはスラッシュコマンドを打ってもなかなか起きなくてタイムアウトすることがよくあった。 いつもサーバーは起きてる必要ないし、スラッシュコマンド来たときだけ反応してくれればいいので、サーバーレスってやつにしたい。 Cloud Functionsがいいって聞いて、週末暇だしやるか、ということでやった。

以下はCloud Functions触ってみた感想。

  • Python3.7で、Flaskの枠組みに乗っかって書けるのは楽で良い
    • jsonify(...) って書いたらよい
    • 実装はあるのでほぼほぼ持ってくるだけ github.com
  • デバッグがなかなか大変
    • デプロイして、スラッシュコマンド打ってみて、うまくいかないのでログを見て……というので往復しまくり
    • app がないとか、 jsonify がないとかで足したり消したりしていた
    • 9回デプロイしてついにうまく動いた gyazo.com
  • コンソールからぽちぽちして関数作れば完成、と思っていたけど、いざリクエスト投げたら403返ってきて首をかしげた
    • allUsers っていうメンバーを関数に追加する必要があるらしい stackoverflow.com
    • これドキュメントに書いてあるのかな

値段のことをちょっと考えたけど、無料枠がけっこうあるし、サークルのSlack workspace内でだけ使うぐらいだしまあいいか。

cloud.google.com

無料枠には 200 万回の呼び出しのほかに、400,000 GB 秒、200,000 GHz 秒のコンピューティング時間と、1 か月あたり 5 GB のインターネット下りトラフィック(外向きトラフィック)も含まれています。

元気に動いているのでよさそう。

gyazo.com

ちなみに、Cloud FunctionsのチュートリアルにまさにSlackのスラッシュコマンドの作り方について解説したページがある。

cloud.google.com