クラウドのBaaS(Supabase や Firebase など)は、無料枠が用意されているので、個人開発や学習プロジェクトのスタートに最適です。しかし、無料枠は「いつまで」「どこまで」使えるかが明示されているだけで、利用量が増えるとすぐに課金が始まります。初心者が「請求アラート」を設定しないまま放置すると、思わぬ請求が来てしまうことがあります。ここでは、無料枠を安全に使い続けるための「請求アラート設定」の重要性と、実装手順をシンプルに解説します。
1. 無料枠の仕組みを把握しよう
Supabase の無料プランは、データベース容量 500 MB、認証リクエスト 10 k、ストレージ 1 GB など、各リソースに上限が設定されています。上限を超えると自動的に有料プランに切り替わり、従量課金が始まります。**「上限を超えてもすぐに課金が始まる」**という点が、請求アラートの設定が必須になる理由です。
2. 請求アラートの目的
| 目的 | 具体的な効果 |
|---|---|
| 予算超過の早期検知 | 使用量が閾値に達したらすぐに通知 |
| 無料枠の有効活用 | 必要以上にリソースを消費しない |
| コスト意識の向上 | 開発者が「コスト=リソース使用量」の関係を学べる |
3. Supabase の使用量を取得する方法
Supabase は管理コンソールから手動で確認できますが、API 経由で取得すれば自動化が可能です。以下は supabase CLI と curl を組み合わせて、プロジェクトの使用量を取得する例です。
# supabase CLI でプロジェクト ID を取得
PROJECT_ID=$(supabase projects list --json | jq -r '.projects[0].id')
# 使用量を取得(例: データベース容量)
curl -s "https://api.supabase.com/v1/projects/${PROJECT_ID}/usage" \
-H "apikey: $SUPABASE_SERVICE_ROLE_KEY" \
-H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" \
| jq '.db_storage_bytes'
このスクリプトを CI に組み込めば、毎日自動で使用量をチェックできます。
4. GitHub Actions で請求アラートを送る
以下は GitHub Actions のワークフロー例です。Supabase の使用量が無料枠の 80 % を超えたら、Slack に通知します。
name: Supabase Usage Alert
on:
schedule:
- cron: '0 9 * * *' # 毎日 09:00 UTC に実行
jobs:
check-usage:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Install jq
run: sudo apt-get install -y jq
- name: Get Supabase usage
env:
SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
run: |
PROJECT_ID=$(supabase projects list --json | jq -r '.projects[0].id')
USAGE=$(curl -s "https://api.supabase.com/v1/projects/${PROJECT_ID}/usage" \
-H "apikey: $SUPABASE_SERVICE_ROLE_KEY" \
-H "Authorization: Bearer $SUPABASE_SERVICE_ROLE_KEY" \
| jq '.db_storage_bytes')
LIMIT=$((500 * 1024 * 1024)) # 500 MB をバイトに変換
THRESHOLD=$((LIMIT * 80 / 100))
if [ "$USAGE" -gt "$THRESHOLD" ]; then
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"⚠️ Supabase のデータベース使用量が80%を超えました。現在 ${USAGE} バイトです。\"}" \
${{ secrets.SLACK_WEBHOOK_URL }}
fi
ポイント解説
- スケジュール実行で毎日自動チェック。
-
SUPABASE_SERVICE_ROLE_KEYはプロジェクトのシークレットとして管理。 - 無料枠の 80 % を閾値に設定し、超えたら Slack に通知。
5. 実際に設定したらやるべきこと
- 無料枠の上限をドキュメント化(チーム内 Wiki など)。
- 請求アラートの閾値を段階的に調整(80 % → 90 % など)。
- 通知先を複数設定(Slack + メール)し、見逃し防止。
- アラートが来たらリソース削減策を実行(不要データの削除、キャッシュの最適化)。
まとめ
無料枠は開発コストを抑える強力な味方ですが、「使いすぎて課金が始まる」リスクも併せ持っています。請求アラートを設定すれば、予算超過を未然に防げるだけでなく、リソース使用量への意識も高まります。初心者でも数行のコードと GitHub Actions だけで自動監視が可能です。ぜひ今回紹介した手順を試して、安心して BaaS を活用してください。