今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
いま読んでいる一膳get-convex/convex-backendTypeScript で純粋な関数を書くだけで、強力な一貫性を備えたリアクティブデータベースを構築できるオープンソースバックエンド信頼度 1.31ほかの一膳gradio-app/gradioPythonで機械学習モデルをWebアプリに変える、最速のUIビルダーです。信頼度 1.43ほかの一膳nhost/nhostGraphQLを備えたオープンソースのFirebase代替品。PostgreSQL・Hasura・認証・ストレージ・サーバーレス機能を統合したバックエンド。信頼度 1.13
今日の優良食堂 · ギット飯が代わりに導入・分析

get-convex/convex-backend

TypeScript で純粋な関数を書くだけで、強力な一貫性を備えたリアクティブデータベースを構築できるオープンソースバックエンド

クエリもミューテーションもビジネスロジックも、すべて純粋なTypeScript関数として書くだけで、複数人が同時編集する画面の変更がその場で反映される感覚を体験できます。REST APIを設計してエンドポイントをつなぎ直す手間がなく、強い一貫性を保ったまま状態管理がそのまま反応的に動く仕組みなので、AIアプリのデータ状態を扱う場面でも安心して試せます。Cargo.tomlの依存関係やairbyte_import.rsのような実装、Justfileによる開発環境まで揃っているので、クラウドの無料枠でもセルフホストでも、今日その場で立ち上げて挙動を確かめられます。

01 / 概要
何をするものか一文で言うと
ひとことでTypeScript で純粋な関数を書くだけで、強力な一貫性を備えたリアクティブデータベースを構築できるオープンソースバックエンド

Convexは、Web/LLMアプリ開発者向けのオープンソースなリアクティブデータベースです。Rust製のバックエンド(crates以下)とTypeScript製のサーバー関数・クライアントライブラリ(npm-packages以下)を組み合わせ、クエリ・ミューテーション・アクションを純粋なTypeScriptで書けるようにしています。Dockerまたはプリビルドバイナリでセルフホストでき、ダッシュボードやCLIも含めてクラウド版に近い機能を自前運用できます。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

crates/local_backendがRuntimeの上に載る実行エッジとなり、HTTPやWebSocket経由のリクエストを受け取ります。crates/application/src/api.rsのApplicationApiトレイトがexecute_public_query・execute_public_mutationなどを定義し、authenticationクレートでの認証を経てdatabaseクレートでの読み書きへつなげる構造です。ユーザー定義関数はnpm-packages/udf-runtimeが用意するJS環境で、.cargo/config.tomlに記載されたパッチ入りのカスタムV8上で実行されます。common/src/bootstrap_model以下にはインデックスやスキーマ、テーブルなどの永続モデルが定義され、snapshot_importやexportsといったワーカー群がインポート・エクスポート・クーロンジョブなどの背景処理を担当します。全体はCargoワークスペースとしてクレートごとに責務分割されており、self-hosted/README.mdにあるDockerイメージまたはバイナリでまとめてデプロイされる構成です。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    self-hosted/README.mdの手順に沿ってDocker Composeでバックエンドとダッシュボードを起動すると、コンテナのログにインスタンスシークレットとadmin keyのデフォルト値が表示されます。

  2. STEP 02

    READMEの注意書きの通り、ソースからビルドする場合はデフォルトのインスタンスシークレットとadmin keyを変更しないと、本番相当の権限でアクセスできてしまう状態になります。

  3. STEP 03

    起動後はCLIからconvex devやconvex deployでTypeScript製のクエリ・ミューテーションをデプロイでき、ダッシュボードでテーブルやログを確認できます。

  4. STEP 04

    バックエンドのログには、ビーコン機能によりデプロイメントのランダムID・マイグレーションバージョン・Git rev・稼働時間が定期的に出力されるのが見えます。

  5. STEP 05

    --disable-beaconフラグを付けずに起動すると、この匿名テレメトリ送信は動き続けます。

  6. STEP 06

    BUILD.mdに従いソースからRustクレート群をビルドする場合は、カスタムV8バイナリのダウンロードやmise経由でのprotocインストールなど、ネイティブ依存の準備に時間がかかると想定されます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

自前のインフラ上に、TypeScriptで書いたクエリ・ミューテーション・アクションを実行できるリアクティブデータベースバックエンドと、それを操作するCLI・ダッシュボードが手に入ります。Neon・Fly.io・Vercelなど好みのインフラと組み合わせて動かせる、自己完結型のConvexデプロイメントが構築できます。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

READMEに明記されている通り、ランダム化テストなど社内で使われている高度なテストフレームワークはオープンソース版には含まれておらず、信頼性の一部は非公開テストに依存しています。

02

Windows環境での動作実績はLinuxMacほど蓄積されていないとREADMEに明記されており、自己責任での検証が必要です。

03

セルフホスト版バイナリには匿名ビーコンが標準で組み込まれており、無効化するには明示的に--disable-beaconを指定する必要があります。

04

ソースからビルドする場合、デフォルトのインスタンスシークレットとadmin keyのままだとセキュリティ上のリスクになります。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

自前サーバーでConvexを動かしたいチーム、特にNeonやFly.io、Vercelなど好みのインフラと組み合わせたい開発者に向いています。Rustのクレート構成がapplication・common・database・authenticationなど責務ごとに整理されており、ApplicationApiトレイトを見るだけでクエリ・ミューテーション・アクションの実行経路を追えるため、コードを読むだけでも動作の骨格は把握できます。ただし内部の高度なテスト群は非公開なので、本番投入前には自分の環境でセルフホストガイドに沿った検証を行うことをおすすめします。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する