Firebase だけで cron が実行できるようになったので Twitter bot を作ってみた

今までは Google Cloud Function を使う必要があったけどこれでだいぶ楽になったね

Yuji Tsuburaya
Sep 9 · 4 min read
Illustration by unDraw
Illustration by unDraw
Illustration by unDraw

2019年4月くらいから Firebase だけで cron が実行できるようになったとのことなので、早速使ってみました。今までは Google Cloud Function を組み合わせて、Pub / Sub エンドポイントに定期的にリクエストを飛ばすような仕組みを作らなければならなかったのが、Firebase の設定だけでできるようになりました。超便利。

However, solutions that involve the invocation of an HTTP function aren’t fully secure, because the HTTP endpoint URL is effectively public and accessible to anyone who knows that URL.

firebase の開発ブログにも、今までのやり方だとエンドポイントが公開されてるから(たしか予測しづらいURLにはなっていた気がする。よはいうものの)、完全には安全じゃないよって書いてあったりします。

https://firebase.googleblog.com/2019/04/schedule-cloud-functions-firebase-cron.html


作り方

ざっくりこんな流れです。


「コードを書いてデプロイ」について補足

1と2はドキュメントを読みながら進めればできると思うので割愛して、3について少しだけ詳しく説明します。ざっくりと書くと、以下のようなコードを書いてデプロイすれば Firebase に定期実行のジョブが登録されます。schedule の引数で定期実行の間隔をします。定期実行の間隔の指定の仕方はこちらのドキュメントを参考にすると分かりやすいです。

exports.tweet = functions.pubsub.schedule('every 1 hours').onRun(async context => {
// 実行したいもの
});

実行したいもののところに任意のコードを書けばOKです。今回は、ツイート bot を作ったので、以下のようなコードになりました。ライブラリはこちらを使用しました。

try {
const client = new Twitter(twitter_credentials);
await client.post('statuses/update', { status });
} catch (error) {
throw error;
}

コンソールで以下のコマンドを叩けばデプロイ完了です。

firebase deploy --only functions

デプロイに成功すると、Firebase コンソール上に定期実行のジョブが登録されます。schedule した期間がトリガーとなっていることが分かります。


なに作ったの?

1時間に1回自動でツイートする Twitter bot を作ってみました。オダギリ・ジョーという文字列をアナグラムでランダム投稿するという超くだらない bot です。もし良かったらフォローしてやってください。

オダギリ・ジョー bot

😭 デプロイできないときに試すこと

firebase deploy でデプロイできなくて1時間ほどハマってました。 firebase-cli のバージョンが古くてデプロイできなかった模様でした。 7.2.2までバージョン上げたらデプロイできるようになったので、デプロイできない方は試してみてください。

(エラーがとにかく不親切で 404 エラーがずっと出てたので別の原因かと思ったら、バージョン問題だったというオチ。404 エラー出たら👆のやつを疑ってみてください。僕と同じツラミを味わう人が減りますように。)

___35d

日報

Yuji Tsuburaya

Written by

株式会社ビズリーチのフロントエンドエンジニア。個人開発もやってます。

___35d

___35d

日報

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade