バックエンド構築に毎回サーバーを立てて設定ファイルを整えて……という作業、もっとシンプルにならないかと感じる場面は多いはずです。PocketBaseはその問題をGo製の単一実行ファイルで解決するオープンソースツールです。

この記事でわかること:

  • PocketBaseが解決する課題と概要
  • 認証・リアルタイムDB・ファイルストレージ・管理UIの各機能
  • Firebase・Supabaseとの具体的な違い
  • 導入の手順と注意点

https://github.com/pocketbase/pocketbase

バックエンドを「1ファイル」で用意する

Firebaseはアプリ開発を手軽にするクラウドサービスですが、Googleアカウントへの依存やリクエスト数に応じた料金体系から、個人開発や小規模なプロジェクトでは扱いにくい局面が出てきます。Supabaseはセルフホストに対応しているものの、PostgreSQLを含む複数コンテナを起動する必要があり、ローカル開発環境のセットアップにひと手間かかります。

PocketBaseはその両方の弱点を突いた設計になっています。zipを展開して ./pocketbase serve を実行するだけでサーバーが起動し、認証・データベース・ファイルストレージ・管理ダッシュボードが即座に使える状態になります。実行ファイルのサイズはLinux x64で約12MBです。

主な機能

リアルタイムデータベース(SQLite)

内部ではSQLiteを使用しており、レコードの変更をリアルタイムで受け取るサブスクリプションに対応しています。JavaScriptのSDKを使うと、次のようにコレクション全体の変更を監視できます。

import PocketBase from 'pocketbase';

const pb = new PocketBase('http://127.0.0.1:8090');

pb.collection('posts').subscribe('*', function(e) {
  console.log(e.action); // "create", "update", "delete"
  console.log(e.record);
});

レコードの検索や絞り込みもシンプルなAPIで操作できます。

const list = await pb.collection('posts').getList(1, 20, {
  filter: 'published = true',
  sort: '-created',
});

認証管理

メール+パスワード認証とOAuth2の両方に対応しています。認証トークンはサーバーに保存されず、完全にステートレスな設計です。ログアウトは pb.authStore.clear() でクライアント側のトークンを破棄するだけで完結します。

認証を必要とするAPIルールはコレクションごとにダッシュボードから設定でき、@request.auth.id != "" のような式でアクセス制御を記述します。

ファイルストレージ

ファイルのアップロードとダウンロードがAPIで完結します。画像はリサイズやサムネイル生成もサポートしており、URLのパラメーターで出力サイズを指定できます。

管理ダッシュボード

http://127.0.0.1:8090/_/ にアクセスするとWebのUIが表示されます。コレクションの作成・スキーマ管理・APIルールの設定・レコードの閲覧・編集がブラウザから操作できます。APIスキーマの自動ドキュメントも備わっているため、フロントエンドの開発者と連携しやすい作りになっています。

Goフレームワークとしての利用

スタンドアロンアプリとして使うだけでなく、GoのライブラリとしてインポートしてカスタムAPIルートやイベントフックを追加することもできます。Javascriptのスクリプト(JSVM)でも拡張可能で、Go環境がなくても独自のロジックを後付けできます。

Firebase・Supabaseとの違い

観点 PocketBase Firebase Supabase
ホスティング セルフホスト(VPS、ラズパイ等) Googleクラウドのみ セルフホスト可(Docker)
データベース SQLite Firestore(NoSQL) PostgreSQL
セットアップ 実行ファイル1つ SDK設定のみ(クラウド) 複数コンテナ起動が必要
料金 完全無料(MITライセンス) 無料枠あり・従量課金 無料枠あり・従量課金
本番運用 v1.0.0未満につき注意 安定 安定

データの所在地を自社サーバーに限定したい場合や、月々のクラウド費用を抑えたい個人開発では、PocketBaseの選択は合理的です。一方、v1.0.0未満のためフルバックワード互換は保証されておらず、バージョンアップ時には変更履歴の確認が必要です。

導入手順

  1. GitHubのリリースページから対象プラットフォームのzipをダウンロードします。最新バージョンはv0.37.3(2026年4月22日リリース)です。
  2. アーカイブを展開して ./pocketbase serve を実行します。
  3. 初回起動時にブラウザでインストーラーが開くので、スーパーユーザーのメールアドレスとパスワードを設定します。
  4. http://127.0.0.1:8090/_/ から管理ダッシュボードにアクセスできます。

JavaScript SDKは npm install pocketbase でインストールできます。Dart SDKも提供されており、FlutterアプリからのアクセスにはDart版を使います。

まとめ

PocketBaseはFirebase・Supabaseが担ってきたバックエンド機能を、単一ファイルの実行バイナリとして提供するOSSです。GitHubのスター数は5.8万を超えており、個人開発・プロトタイプ・小中規模のアプリで広く使われています。本番クリティカルな用途では現時点でのv1.0.0未満という状態を踏まえて採用を判断することが重要です。ローカルで5分試してみれば、その手軽さは体感できます。