プログラミング
SQLite用ゼロ依存、超軽量データベースタイムマシン
A zero-dependency, ultra-lightweight database time machine for SQLite (github.com)
要約
このツールは、SQLiteデータベースファイルをローカル開発中に任意の過去の状態に即座に巻き戻すことができる、ゼロ依存の超軽量WebアプリケーションおよびCLIデーモンです。PHP 8+とVanilla JSのみで構築されており、依存関係がありません。スナップショットの視覚的な比較やピン留め、エクスポート機能も備えています。
全文翻訳
⏱️ タイムトラベルSQLiteデバッガー (データベースタイムマシン)
オープンソースで超軽量なWebアプリケーションおよびCLIデーモンで、ローカル開発中に破損または変更されたSQLiteデータベースファイルを、ビデオのスクラブのように、任意の過去の状態(例: 3分前)に追跡し即座に巻き戻すことができます。
🇹🇷 トルコ語ドキュメント: トルコ語ガイドについては、README.tr.mdファイルを参照してください。
🚀 特徴
⚡ ゼロ依存: 純粋なPHP 8+とVanilla JSで構築されています。重いフレームワークやnpmパッケージは必要ありません。
🌐 完全な国際化 / 多言語対応: 翻訳ファイルはlang/ディレクトリに完全に分離されています。UIから動的に言語を切り替えることができます(例: 🇹🇷 トルコ語、🇬🇧 英語)。lang/xx.jsonファイルを追加または更新することで、簡単に貢献できます。
💾 SQLite WALモード対応: PRAGMA journal_mode=WAL; を実行しているデータベースの.sqlite-walおよび.sqlite-shmファイルをシームレスにバックアップおよび復元します。
🔍 視覚的なデータとテーブルの差分ビューア: 任意の履歴スナップショットと現在のライブデータベースとの間で、行数やテーブルの変更(ライブでは+3行)を復元前に比較できます。
📌 スナップショットのピン留めとタグ付け: 自動クリーンアップから保護するために、重要なスナップショットをワンクリックでピン留めできます。
📥 ワンクリックスナップショットエクスポート: 任意の履歴データベース状態を.sqliteファイルとして直接ダウンロードできます。
⌨️ キーボードナビゲーションショートカット: 左矢印 (⬅️) および右矢印 (➡️) キーを使用して、タイムラインをスムーズにナビゲートできます。
🔄 自動インスタントスナップショット (ウォッチャーデーモン): バックグラウンドのCLIスクリプト (watcher.php) がデータベース.sqliteの変更を監視し、タイムスタンプ付きのスナップショット(バックアップ/1715000000_database.sqlite)を自動的に作成します。
🧹 自動クリーンアップ: 最大50個のバックアップを維持し、ディスクの散らかりを防ぐために、ピン留めされていない古いスナップショットを削除します。
📁 プロジェクトレイアウト
time-travel/
├── index.html # Chrono Console UI (Tailwind CSS + Vanilla JS + i18n Engine)
├── api.php # スナップショット一覧、復元、差分、エクスポート、i18n API
├── watcher.php # CLIバックグラウンドリスナーデーモン スクリプト (WAL & シグナル対応)
├── lang.php # 多言語 (i18n) ヘルパークラス
├── lang/ # JSON言語ファイルディレクトリ
│ ├── tr.json # トルコ語ファイル
│ └── en.json # 英語ファイル
├── database.sqlite # 対象SQLiteデータベースファイル (自動作成)
├── backups/ # タイムスタンプ付きバックアップディレクトリ (自動作成)
├── README.md # 主要な英語ドキュメント
└── README.tr.md # トルコ語ドキュメント & ガイド
🌍 翻訳ガイド: 言語ファイルの追加と更新
1. 新しい言語の追加
ISOコードに一致するJSONファイル(例: lang/es.json, lang/de.json)をlang/ディレクトリ内に作成します:
{
"code": "es",
"name": "Español",
"flag": "🇪🇸",
"cli": { ... },
"api": { ... },
"ui": { ... }
}
2. 既存の翻訳の更新
lang/*.json内の任意のファイルを開き、文字列を編集します。変更は、サーバーを再起動せずにWeb UIおよびCLIに即座に反映されます。
💻 インストールと使用方法
1. ウォッチャーデーモンを開始します (ターミナル1)
php watcher.php
カスタム言語またはデータベースファイルを指定するには:
php watcher.php database.sqlite en
2. ローカルWebサーバーを開始します (ターミナル2)
php -S 127.0.0.1:8000
3. Webインターフェースを開く
ブラウザを開き、以下にアクセスします:
http://127.0.0.1:8000
🧪 テスト方法
Webインターフェースを開きます。「✍️ テストデータを追加 (DB書き込み)」をクリックします。
watcher.phpからのターミナル出力を観察します:
[+] スナップショットを作成しました: 1715000000_database.sqlite
タイムラインスライダーをドラッグするか、⬅️ / ➡️ 矢印キーを使用します。「🔍 差分を比較」をクリックして、テーブル行の変更を確認します。「⚡ この状態に復元」をクリックして、データベースを巻き戻します!
🔒 ファイルパーミッション (Linux / Unix)
chmod -R 775 .
📄 ライセンス
このプロジェクトはMITライセンスの下でオープンソースです。