Java 21 が必須になった
firebase-tools 15 で、Java 21 未満のサポートが削除されました。ローカルでデータベースを動かすだけのために、JDK を入れる必要はないはずです。
出典: firebase-tools v15.0.0 リリースノート公式の Cloud Firestore エミュレータを置き換える、Rust 製の単一バイナリです。JVM は要りません。ミリ秒で起動し、公式エミュレータとの parity をテストで確かめます。
curl -fsSL https://hidane.dev/install.sh | sh
v0.5.1 · macOS · Linux
最新のリリースを ~/.local/bin に入れます。SHA-256 で検証済みです。Homebrew、npm(Windows も)、cargo、Docker はインストールを参照してください。
v0.5.1 · hidane doctor・migrate・benchmark savings・report、Testcontainers に対応
firebase-tools 15 で、Java 21 未満のサポートが削除されました。ローカルでデータベースを動かすだけのために、JDK を入れる必要はないはずです。
出典: firebase-tools v15.0.0 リリースノート正式なベンチマーク環境での中央値で、公式エミュレータはポートを開くまでに 852 ms かかり、アイドル時に 148 MiB を使います。同じマシンで、hidane v0.5.1 は 1.53 ms、9.3 MiB です。
出典: ベンチマーク結果(全サンプル付き、英語)リスナーを接続した状態では、公式エミュレータのバッチ書き込みがドキュメントの総数に比例して遅くなります。100k 件では 11 倍です。hidane は、commit のコストが変更した件数だけで決まるように設計しています。同じ 10 万件は 4.9 秒で、バッチごとの時間は一定です。
出典: 実測値と生ログ(英語)起動とメモリ: AWS c7i.xlarge 1 台(Ubuntu 24.04、Java 21、firebase-tools 15.33.0)で両方を測った中央値です(2026-10-13)。測り方は bench/(英語)にあります。リスナー接続時の書き込み: Phase 0 の実測値で、同じ条件での比較ではありません。この条件はまだベンチマークに含まれていません。背景は Why hidane(英語)にまとめています。
verified は、そのクライアントの結果を公式エミュレータと突き合わせて確認したものです。not verified は、hidane がそのトランスポートを提供しているものの、まだ誰もそのクライアントで動かしていないものです。各 SDK が必要とするトランスポートは compatibility(英語)を参照してください。
hidane は公式エミュレータをオラクルとして扱います。公式の応答を記録し、テストスイートがその記録をすべて hidane に対して再生します。テストの裏付けがない互換性は主張しません。
現時点で、公式エミュレータの応答 26,556 件を 57 の記録に収め、CI がそのすべてを hidane に対して再生しています。SDK の記録も両方のエミュレータで突き合わせています(results)。数え方は docs/parity.md(英語)にあります。
| 領域 | トランスポート | 記録した | 全体を比較 | SDK の記録 |
|---|---|---|---|---|
| ドキュメントと書き込みgRPC, REST | gRPC, REST | 5,749 | 5,119 | 一致 2既知の差 4 |
| クエリと集計gRPC, REST | gRPC, REST | 1,787 | 1,079 | 一致 9 |
| トランザクションgRPC, REST | gRPC, REST | 215 | 210 | 一致 4既知の差 3 |
| Listen / Write ストリームgRPC | gRPC | 1,307 | 1,270 | 一致 4既知の差 4 |
| RESTREST | REST | 875 | 870 | 一致 1既知の差 1 |
| WebChannelREST, WebChannel | REST, WebChannel | 34 | 31 | 一致 2既知の差 1 |
| Security RulesgRPC, REST, WebSocket, プロセス内 | gRPC, REST, WebSocket, プロセス内 | 15,366 | 5,567 | 既知の差 2 |
| エクスポートとインポートREST, CLI | REST, CLI | 70 | 67 | 一致 3 |
| 認証と管理エンドポイントgRPC, REST, WebChannel | gRPC, REST, WebChannel | 875 | 823 | 一致 1既知の差 3 |
| 値と上限gRPC, REST, WebChannel, プロセス内 | gRPC, REST, WebChannel, プロセス内 | 278 | 274 | — |
| 合計 | 26,556 | 15,310 | 一致 26既知の差 18 |
全体を比較: 記録が保持する応答の全体(ステータス、メッセージや本文、値)を、実行ごとに変わる値(時刻や ID など)だけを除いて比べている応答の数です。そのほかは Security Rules の判定と理由、応答の一部、またはステータスで比べています。内訳と比べ方はテストごとに docs/parity.md にあります。SDK の記録: 同じ手順を SDK から両方のエミュレータに対して実行した記録の組です。既知の差は、results/README.md または parity exceptions に理由が書かれている差です。意図的に公式と違える点(75 件)は parity exceptions(英語)に一覧があります。
サーバー SDK とネイティブクライアント。firebase-admin、Google Cloud の各ライブラリ、iOS、Android、Flutter が firebase-tools の配下で動きます。
GitHub の v0.1 マイルストーンSecurity Rules。公式エミュレータと同じ判定を、1 リクエストにつき 1 回の評価で行います。読み取り、書き込み、リスナー、クエリを公式と 1 ケースずつ突き合わせており、コンパイラの警告、ルールのカバレッジレポート、debug() の出力も公式と同じです。v0.2.0 でリリースし、v0.2.1 で Emulator UI のリクエスト表示にも対応しました。@firebase/rules-unit-testing も Node とブラウザの両方で確かめています。
GitHub の v0.2 マイルストーンブラウザのクライアント。ブラウザ上の firebase-js-sdk と Flutter Web に対応します。v0.3.0 でリリースし、SDK 自身のブラウザ用テスト 1,183 件が公式エミュレータと同じく hidane でも通ります(Chromium)。Flutter Web も確かめています。
GitHub の v0.3 マイルストーンFunctions のトリガー。firebase emulators:start の下で、Firestore のイベントを Functions エミュレータに届けます(v1 と v2)。v0.4.0 でリリースし、公式エミュレータが送るイベントを記録して再生しているほか、関数が公式と同じデータを受け取ることも確かめています。
GitHub の v0.4 マイルストーン範囲、目標値、リスクは ROADMAP(英語)にあります。
どのチャネルでも、同じリリースのバイナリが入ります。macOS(arm64、x86_64)、Linux(arm64、x86_64、静的リンク)、Windows(x64)に対応しています。
cargo binstall hidaneavailablebrew install hidane-dev/tap/hidaneavailablenpm install --save-dev hidaneavailabledart pub global activate hidaneavailabledocker run -p 8080:8080 ghcr.io/hidane-dev/hidaneavailablecurl -fsSL https://hidane.dev/install.sh | shavailable