【ITニュース解説】Automatically delete Supabase data every morning! I tried batch processing with GitHub Actions + ts-node
2025年10月05日に「Dev.to」が公開したITニュース「Automatically delete Supabase data every morning! I tried batch processing with GitHub Actions + ts-node」について初心者にもわかりやすく解説しています。
ITニュース概要
Supabaseの古いテストデータを毎日自動削除するシステムをGitHub Actionsとts-nodeで構築した事例を紹介。Supabase SDKでデータ操作を自動化し、GitHub Actionsのcronで定時実行する。APIキーはSecretsで安全に管理でき、手動削除の手間とミスを削減する。
ITニュース解説
システム開発において、テストデータの管理は常に課題の一つだ。特に、テスト環境でアプリケーションを動作させるために一時的に作成したユーザーデータが時間とともに蓄積されると、その削除作業が開発者の負担となることがある。手作業で毎回古いデータを削除するのは手間がかかるだけでなく、誤って必要なデータを削除してしまうといったヒューマンエラーのリスクも伴う。このような問題を解決し、開発プロセスをより効率的かつ安全に進めるために、不要なデータを自動で削除する仕組みが求められる。今回紹介するシステムは、まさにこの課題に対する一つの解決策であり、GitHub Actionsとts-nodeという技術を組み合わせ、Supabaseに保存された過去のユーザーデータを毎日自動で削除する仕組みを実現したものだ。
この自動削除システムは、SupabaseというWebデータベースサービスを利用している。Supabaseは、Webアプリケーション開発に必要なデータベースや認証機能などを手軽に利用できるバックエンドサービスで、特にデータベース機能はPostgreSQLをベースにしており、その使いやすさが特徴だ。このSupabaseのデータをスクリプトから操作することは非常に簡単である。Supabaseが提供するJavaScript SDK(ソフトウェア開発キット)を使うことで、数行のコードでデータベースへの接続からデータの操作までを行うことができる。具体的には、createClient()という関数を使ってSupabaseプロジェクトに接続し、その後は.from('テーブル名')で対象のテーブルを指定し、.delete()などのメソッドを呼び出すだけでデータの追加、更新、削除が直感的に行える。今回の例では、usersテーブルから、created_at(データ作成日時)が指定した日付(例えば昨日)よりも古いデータを削除するという処理を行っている。このように、SDKの強力な機能とシンプルな記述のおかげで、データベース操作の自動化が容易になる。
次に、このデータ削除スクリプトを毎日決まった時間に自動で実行するための仕組みとして、GitHub Actionsが活用されている。GitHub Actionsは、GitHubが提供するCI/CD(継続的インテグレーション・継続的デリバリー)サービスで、リポジトリ内のコードに基づいて様々な処理を自動実行できる。例えば、コードの変更を検知して自動的にテストを実行したり、アプリケーションをデプロイしたりすることが可能だ。今回の目的のように、特定の時間に定期的に処理を実行したい場合には、on.schedule.cronという機能を利用する。cronとは、UNIX系のOSで古くから使われている、指定した時刻にコマンドを自動実行させるための機能のことで、GitHub Actionsでもこのcron記法が採用されている。例えば、"0 21 * * *"という記述は、UTC(協定世界時)の毎日21時0分に処理を実行するという意味になる。これは、日本時間(JST)の午前6時0分に相当するため、毎日早朝にデータ削除が実行されるように設定されている。このように、GitHub Actionsのcron機能を使うことで、手動でスクリプトを実行する手間を完全に省き、決められた時間に自動で処理を進めることができる。
システムを構築する上で、APIキーなどの機密情報を安全に扱うことは極めて重要である。Supabaseに接続するためのURLやAPIキーは、もし外部に漏洩すれば不正アクセスやデータ改ざんにつながる危険性があるため、これらの情報をコードの中に直接書き込んだり、公開されたリポジトリに含めたりすることは絶対に避けなければならない。ここで活躍するのがGitHub Secretsという機能だ。GitHub Secretsは、GitHubリポジトリごとに機密情報を暗号化して保存できる機能で、これらの情報はGitHub Actionsのワークフローからのみ安全に参照できる。具体的には、SupabaseのURLとAPIキーをGitHub Secretsに登録し、GitHub Actionsのワークフローファイル内で環境変数として渡すことで、データ削除スクリプトからこれらの情報に安全にアクセスできるようになる。これにより、機密情報が誤って外部に漏洩するリスクを排除し、システムのセキュリティレベルを大幅に向上させることが可能だ。
また、開発中のシステムが正しく動作するかどうかを確認するためには、迅速なテスト実行が不可欠だ。自動実行が設定されたワークフローの場合、定期実行の時間を待たずにすぐにテストを行いたい場面がよくある。GitHub Actionsにはworkflow_dispatchという機能が用意されており、これを利用すると、GitHubのユーザーインターフェースから手動でワークフローをトリガーできる。これにより、cronによる定期実行を待つことなく、開発者が任意のタイミングでデータ削除スクリプトの動作確認を行えるため、開発効率を大きく高めることができる。
この自動削除システムは、SupabaseのJavaScript SDKを使った簡単なデータ操作と、GitHub Actionsによる堅牢なスケジュール実行、そしてGitHub Secretsによるセキュアな機密情報管理という、現代のシステム開発において重要な要素を組み合わせている。このような自動化システムを導入することで、これまで手作業で行っていたデータ削除の手間と時間を完全に排除し、同時に人的ミスによるエラーのリスクを大幅に削減できる。結果として、開発者はより本質的な開発業務に集中できるようになり、システム全体の安定性と信頼性の向上にも寄与する。システムエンジニアを目指す上で、このような自動化、効率化、そしてセキュリティの考え方は非常に重要であるため、これらの技術と概念をしっかりと理解し、自身のスキルとして身につけてほしい。