PocketBaseで5分でバックエンド構築 - オールインワンBaaS入門
PocketBaseで5分でバックエンド構築
PocketBaseは、たった1つの実行ファイルで完結するオープンソースのバックエンドです。Firebase/Supabaseのようなバックエンド・アズ・ア・サービス(BaaS)の機能を、セルフホストで提供します。
PocketBaseとは
PocketBaseは、Go言語で書かれた組み込みSQLite搭載のバックエンドフレームワークです。主な特徴は以下の通りです。
- オールインワン: 認証、データベース、ファイルストレージ、管理UI
- リアルタイム: リアルタイムサブスクリプション標準搭載
- 超軽量: 単一バイナリ(約15MB)で動作
- セルフホスト: 完全に自分のサーバーで管理
- 無料: オープンソース(MIT License)
セットアップ
インストール
# macOS/Linux
wget https://github.com/pocketbase/pocketbase/releases/download/v0.21.0/pocketbase_0.21.0_darwin_amd64.zip
unzip pocketbase_0.21.0_darwin_amd64.zip
chmod +x pocketbase
# 起動
./pocketbase serve
# 管理画面: http://127.0.0.1:8090/_/
# API: http://127.0.0.1:8090/api/
初期設定
ブラウザで http://127.0.0.1:8090/_/ にアクセスし、管理者アカウントを作成します。
クライアントSDKの使用
JavaScript/TypeScript
npm install pocketbase
import PocketBase from 'pocketbase'
const pb = new PocketBase('http://127.0.0.1:8090')
// 認証
async function login() {
const authData = await pb.collection('users').authWithPassword(
'test@example.com',
'password123'
)
console.log(authData.token)
console.log(authData.record)
}
// レコード作成
async function createPost() {
const data = {
title: 'My First Post',
content: 'Hello PocketBase!',
author: pb.authStore.model.id,
published: true,
tags: ['tutorial', 'pocketbase']
}
const record = await pb.collection('posts').create(data)
console.log(record)
}
// レコード取得
async function getPosts() {
const records = await pb.collection('posts').getList(1, 50, {
filter: 'published = true',
sort: '-created',
expand: 'author' // リレーションを展開
})
console.log(records.items)
}
リアルタイムサブスクリプション
// リアルタイムで変更を監視
pb.collection('posts').subscribe('*', (e) => {
console.log(e.action) // create, update, delete
console.log(e.record)
})
// 特定のレコードを監視
pb.collection('posts').subscribe('RECORD_ID', (e) => {
console.log('Record changed:', e.record)
})
// 購読解除
pb.collection('posts').unsubscribe('*')
まとめ
PocketBaseは、たった1つの実行ファイルで以下の機能を提供します。
- 認証: メール/パスワード、OAuth2
- データベース: SQLite + リアルタイム
- ファイルストレージ: 自動サムネイル生成
- 管理UI: ノーコードでCRUD操作
- REST API: 自動生成されるエンドポイント
- 拡張性: Goでカスタムロジック追加
Firebase/Supabaseの代替として、セルフホストしたい場合に最適な選択肢です。特に小〜中規模のプロジェクトや、プロトタイプ開発に非常に有効です。次のプロジェクトで、ぜひ試してみてください。