PocketBase とは何ですか? どのように使用しますか?

PocketBase とは何ですか? どのように使用しますか?

PocketBase は、データ検証、リアルタイム サブスクリプション、使いやすい REST API を備えた組み込み SQLite データベースで構成されるオープン ソース バックエンドです。また、メディア ファイルの認証とファイル ストレージも提供します。

PocketBase は、時間の制約や利便性のためにバックエンドを構築したくないプロジェクトに最適です。完全に移植可能であり、最小限のセットアップで済みます。また、Vue、Svelte、React、Angular、Flutter などの一般的なテクノロジとも統合されています。

PocketBase が提供するサービス

PocketBase は、SupaBase などの他のバックエンド プロバイダーが提供するサービスのほとんどを提供します。

  • SQLite データベース: PocketBase には、SQLite データベースが組み込まれています。これは、PostgreSQL や MySQL などの大規模なデータベースを使用する他のバックエンド プロバイダーとは異なります。SQLite を使用すると、PocketBase がより軽量になります。API を介してリアルタイムのデータベース イベントをサブスクライブすることもできます。
  • 認証: PocketBase は、メール/パスワード認証、および Facebook、Google、GitLab、および GitHub を介した OAuth2 認証をサポートしています。
  • ファイル ストレージ: PocketBase を使用して、写真、オーディオ、およびビデオ ファイルをローカル ストレージまたは S3 バケットにアップロードできます。
  • 管理ダッシュボード: 管理ダッシュボードでは、データベースでコレクションを作成および管理できます。また、ファイルのアップロード、ログ ファイルの表示、メール送信の設定、

ドキュメントによると、PocketBase は 6 つの仮想プライベート サーバー上で 10,000 以上の同時かつ永続的なリアルタイム接続を簡単に提供できるため、小規模から中規模のアプリケーション向けの手頃な価格のバックエンドの選択肢となります。

PocketBase は垂直方向にのみスケーリングすることに注意してください。つまり、処理能力を高めるには、CPU と RAM を追加する必要があります。大規模なアプリケーションがある場合は、水平スケーリングが可能な Firebase などのバックエンド プロバイダを検討してください。

PocketBase を使い始める

現在、PocketBase は 2 つの SDK を提供しています。

  • Svelte、React、Vue、Angular などの JavaScript フレームワークで使用できる JavaScript SDK。
  • Flutter アプリ用の Dart SDK。

始める最も簡単な方法は、PocketBase をダウンロードすることです。いくつかのリンクがありますので、お使いの環境に適したものをダウンロードしてください。

ダウンロードしたら、展開して、pocketbase フォルダーに移動します。次に、ターミナルで次のコマンドを実行します。

./pocketbase serve

このコマンドは、これらのルートで Web サーバーを起動する必要があります。

  • サーバー: http://127.0.0.1:8090/
  • REST API: http://127.0.0.1:8090/api/
  • 管理 UI: http://127.0.0.1:8090/_/

http://127.0.0.1:8090/_/ URL に移動し、管理ダッシュボードを使用して最初のコレクションを作成します。

PocketBase でのコレクションの作成

管理 UI を初めて開くと、管理者アカウントを作成するために電子メール アドレスとパスワードを要求されます。

管理 UI は次のようになります。

Pocketbase 管理 UI

管理 UI の [新しいコレクション] ボタンをクリックすると、詳細を入力して新しいコレクションを作成できるコレクション パネルが開きます。

タイトルと入力済みフィールドで構成される todos というコレクションを作成する方法は次のとおりです。

トドポケットベースコレクション

コレクションは、ベース コレクションまたは認証コレクションのいずれかです。基本コレクションはデフォルトのコレクション タイプであり、あらゆるタイプのデータに使用できます。認証コレクションには、ユーザー名、電子メール、検証済みなど、ユーザーを管理するための追加フィールドが含まれています。

コレクションを作成するために管理 UI を使用する必要はありません。Web API を使用して作成できます。PocketBase ドキュメントには、API を介してコレクションを作成および管理する方法の SDK 固有の例が記載されています。コレクションを作成、表示、更新、削除、またはインポートできます。

React アプリケーションでの PocketBase の使用

JavaScript SDK を使用すると、React プロジェクトから PocketBase を操作できます。

先に進むには、まず React プロジェクトを作成します。

次に、npm 経由で React プロジェクトに PocketBase JavaScript SDK をインストールします。

npm install pocketbase --save

次に app.js で PocketBase をインポートして初期化します。

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

PocketBase が React を統合する方法を説明するために、to-do アプリケーションのヘルパー関数を作成します。これらの関数は、アイテムを作成、更新、取得、および削除します。

Todo アイテムを作成する

app.js で、addTodo という関数を作成します。

const addTodo = async (todo) => {
try {
   const record = await await pb.collection("todos").create(todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

この関数は、todos コレクションに新しいレコードを追加します。

Todo アイテムを更新する

todo コレクション内のレコードを更新するには、updateTodo という関数を作成し、update メソッドを使用します。

const updateTodo = async (record_id, todo) => {
try {
   const record = await pb.collection("todos").update(record_id, todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

updateTodo 関数は、レコード ID に基づいて To Do 項目を見つけ、新しいデータで更新します。

Todo アイテムを削除する

app.js で、todo コレクション内のレコードを削除する deleteTodo という関数を作成します。

const deleteTodo = async (record_id) => {
try {
   await pb.collection("todos").delete(record_id);
 } catch (error) {
   return { error: error.message };
 }
};

Todo アイテムを取得する

コレクションから 1 つの To Do 項目またはすべての項目を取得できます。

この関数は、ID によって 1 つの To Do アイテムを取得します。

const getTodo = async (record_id) => {
try {
   const record = await pb.collection("todos").getOne(record_id, {
     expand: "relField1,relField2.subRelField",
   });
   return record
 } catch (error) {
   return { error: error.message };
 }
};

以下の関数は、todo コレクション内のすべてのレコードを取得します。

const getTodos = async (record_id) => {
  try {
    const records = await pb
      .collection("todos")
      .getFullList(200 /* batch size */, {
        sort: "-created",
      });
    return records;
  } catch (error) {
    return { error: error.message };
  }
}

これらの関数を使用して、アプリケーションの UI を作成および更新できます。

より詳細な例については、「管理 UI > コレクション > API プレビュー」で、PocketBase レコード APIドキュメントまたは生成された API ドキュメントを参照してください。コレクションのリスト、表示、作成、更新、削除、およびリアルタイムのドキュメントにアクセスできる必要があります。

生成された API ドキュメント

PocketBase を使用する理由

PocketBase は、小規模から中規模のプロジェクトに最適なバックエンドです。最小限のセットアップで簡単に使用できます。JavaScript SDK と Dart SDK の 2 つのクライアント SDK が提供され、Web およびモバイル アプリケーションで使用できます。

また、PocketBase は自己ホスト可能であり、ローカル サーバーまたは VPS でホストできます。クラウド機能はサポートしていませんが、Go フレームワークとして使用し、カスタム ビジネス ロジックを使用して独自のアプリを作成できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です