今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

nhost/nhost

GraphQLを備えたオープンソースのFirebase代替品。PostgreSQL・Hasura・認証・ストレージ・サーバーレス機能を統合したバックエンド。

PostgreSQLにテーブルを1つ作るだけで、Hasurベースの自動生成GraphQL APIが立ち上がり、認証とファイルストレージまで同じダッシュボードから触れる感覚をぜひ体験してほしいです。Next.js製のWebとFlutter製のモバイルアプリを、同一のGraphQLエンドポイントで裏側から支えられる点も実務的です。CLI・ダッシュボード・クライアントライブラリまでe2eテストで固められているので、自社サーバーにホストしてFirebaseから離れても、データの主権を自分の手元に置いたまま開発を続けられます。

01 / 概要
何をするものか一文で言うと
ひとことでGraphQLを備えたオープンソースのFirebase代替品。PostgreSQL・Hasura・認証・ストレージ・サーバーレス機能を統合したバックエンド。

Nhostは、PostgreSQL・Hasura(GraphQL API)・認証・ストレージ・サーバーレス関数をひとつにまとめた、オープンソースのFirebase代替バックエンドです。クラウド版のホスティングサービスに加え、CLIによるローカル開発環境とセルフホスト用のdocker-composeも提供します。リポジトリはCLI(Go製)、ダッシュボード、各サービス(auth/storage/postgres)、SDK(nhost-js)などを含むモノレポです。

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

中核はGo製のCLI(cli/ディレクトリ)です。cmd/config配下のサブコマンド(default, apply, pull, validate, edit, show)がnhost.tomlという設定ファイルとsecretsファイルを生成・検証・クラウドへ反映します。apply.goを見ると、ローカルのモデル(model.ConfigConfig)をJSONにマーシャルし、Nhostクライアント経由でクラウドプロジェクトの設定を上書きする流れが確認できます。edit.goではtomlをJSONに変換してjsondiffでパッチを作り、環境ごとのoverlay(local.jsonなど)として保存する仕組みもあります。CLIバイナリはnpm配布時、cli/build/npm/platforms配下のOS・CPU別パッケージをoptionalDependenciesとして持たせることでネイティブバイナリを配る構成です。クライアント側は@nhost/nhost-jsパッケージのcreateClientで認証(signInEmailPassword)とGraphQLリクエスト(graphql.request)を呼び出すシンプルなAPIになっています。

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

    brewかnpmでCLIをインストールすると、cli/build/npm配下のOS別バイナリパッケージがoptionalDependenciesとして解決され、対応するネイティブバイナリが手元に届きます。

  2. STEP 02

    nhost loginを実行すると、clienv/wf_login.goのフローに沿ってブラウザ認証などのログイン処理が走ります。

  3. STEP 03

    nhost initを実行すると、cmd/config/default.goが呼ばれ、nhost.tomlと.secretsファイルがnhostフォルダに生成されます。

  4. STEP 04

    nhost upを実行すると、cmd/dev/up.goとcompose.goがdocker-composeを組み立て、PostgreSQL・Hasura・Auth・Storageなどのコンテナがローカルに起動します。

  5. STEP 05

    クラウド運用ではnhost config apply/pull/validateを使って、ローカルのnhost.tomlとクラウド上の設定を同期する操作を試すことになります。

  6. STEP 06

    フロントエンドからは@nhost/nhost-jsのcreateClientでsubdomainとregionを指定し、signInEmailPasswordとgraphql.requestを呼び出してAPIレスポンスを受け取ります。

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

手元にはnhost.tomlという設定ファイルと.secretsファイル、そしてDocker上で動くPostgreSQL・Hasura・Auth・Storageのローカルスタックが残ります。加えてクラウドプロジェクトとの設定同期(apply/pull)ができる状態になり、フロントエンドからは@nhost/nhost-js経由で認証とGraphQL APIをすぐ呼び出せるようになります。

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

ローカルスタックの起動にはDockerが前提であり、実際のコンテナ起動やポート構成の細部はソースだけでは確認できません。

02

config applyやpullなどクラウド連携系コマンドはNhostアカウントとログインが必要で、無料枠や課金の実態は本リポジトリの範囲外です。

03

モノレポにはcli・dashboard・services・docs・examplesなど多数のサブプロジェクトがあり、全体の依存関係やビルド手順はMakefileやワークフローを個別に追わないと把握しきれません。

04

ダッシュボードのe2eテスト(dashboard/e2e配下)はUI操作を前提にしており、実際の管理画面の見た目や挙動はコードからの推測にとどまります。

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

PostgreSQLとGraphQLを軸に、Firebaseのような認証・ストレージ・サーバーレス関数込みのバックエンドをセルフホストしたい、あるいはCLIでローカル開発を素早く始めたいチームに向いています。CLIのサブコマンド構成(cmd/config, cmd/dev, clienv)や配布方法(npm optionalDependencies)、SDKの呼び出し形は実ソースから直接確認できており、README記載のnhost login/init/upという手順とコード構造は矛盾なく対応しています。ただしDocker起動後の実際の挙動やクラウド機能の細部までは、ソースの静的な確認だけでは断定できない点に留意してください。

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

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

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