# Fóir：エージェントが構築の土台にするバックエンド

Fóirは、GraphQL API、チーム向けのコンソール、サインインとロール、顧客間のデータ分離まで、アプリケーションのバックエンド全体を1つの設定ファイルから提供します。コーディングエージェントが設定を書き、MCPサーバーを通じてプロジェクトを動かせるため、構築したアプリは実際の顧客を迎えられる状態になります。

これはfoir.ioのプレーン版です。エージェントと、見るより読みたい方のためのページです。

プロジェクトを作成：[https://platform.foir.io/signup](https://platform.foir.io/signup)

## エージェントで始める

MCPサーバーに接続し、そこからコントラクトを読んでください。MCPサーバーは、ロールで許可されたツールを一覧表示し、ドキュメントを検索します。

```
foir mcp
```

- MCPのセットアップ：[https://docs.foir.dev/ai/mcp](https://docs.foir.dev/ai/mcp)
- エージェント向けのドキュメントインデックス：[https://docs.foir.dev/llms.txt](https://docs.foir.dev/llms.txt)
- 1ファイルにまとめた全ドキュメント：[https://docs.foir.dev/llms-full.txt](https://docs.foir.dev/llms-full.txt)

## チームに選ばれる理由

- 1つの設定ファイルで、本来なら個別のサービスを組み合わせて用意するバックエンドが手に入ります。データベースのルール、サインイン、コンテンツエディター、メディア配信、通知、課金です。
- 顧客の分離はデータベースで強制されます。アクセスルールは行レベルセキュリティにコンパイルされるため、誰かがチェックを忘れても行が漏れることはありません。
- APIはモデルから生成されるため、手書きのエンドポイントで間違える余地がありません。
- コンテンツはリクエストごとに解決されます。新しい言語やオーディエンスはフィールドを設定するだけで、何も再ビルドされません。
- フルマネージドです。ホスティング、パッチ適用、スケーリングは不要です。
- 主導権は手元に残ります。コードは自分のホスティングで動き、支払いは自分のStripeアカウントに直接入り、すべてのレコードは所有するPostgresデータベースにエクスポートできます。
- エージェントも安全に作業できます。書き込みは下書きとして保存され、トークンには承認した権限だけが含まれ、本番に反映される内容は人が承認します。
- 認可エンジンのDemesneはオープンソースです：[https://foir.io/demesne](https://foir.io/demesne)

## 対象となる利用者

- 多くの顧客に販売するプロダクト。各顧客は、共通のモデルの上で独自のデータ、メンバー、サインインを持つ組織になります。
- コーディングエージェントで構築した、実際のサインイン、ロール、データ分離に対応できるアプリ。
- 1つのプラットフォームで多数のクライアントプロジェクトを運用する制作会社。
- 下書き、予約されたキャンペーン、パーソナライズを必要とする、コンテンツ中心のサイトやアプリ。

## 得られるもの

| Capability | できること |
| --- | --- |
| 生成されるAPI | モデルから構築されるGraphQL APIです。 |
| コンソール | すべてのモデルに使えるエディターです。バージョン、リアルタイムの共同編集、オーディエンスとして見るプレビューを備えています。 |
| Ask Fóir | コンソール内のアシスタントです。データに関する質問に答え、ロールの範囲内で変更を下書きとして行います。 |
| サインイン | ホスト型のログインは1つです。パスキー、2段階認証のほか、Google、Apple、Shopify、任意のOIDCプロバイダーに対応します。 |
| ユーザーとロール | ユーザーは1つにまとめてプールで管理し、メンバーシップとロールは1つの権限リストから構成します。 |
| 組織 | アプリをSaaSにします。顧客ごとに、行レベルセキュリティとして強制される境界が設けられます。 |
| キー | 公開可能キー、サーバーキー、管理者キーがあります。キーのスキーマには、そのキーに付与されたものだけが含まれます。 |
| レコード | レコードは所有するユーザー専用にできます。更新は冪等キーを受け付けるため、リトライしても安全です。 |
| 公開 | 書き込みは下書きとして保存されます。公開に再ビルドは不要です。ロールアウトはキャンペーンを一括で反映し、ロールバックもできます。 |
| パーソナライズ | バリアントは、位置情報、セグメント、独自のディメンションをもとにサーバー上で選ばれます。バリアントはレコード全体、または1つのフィールドを置き換えられます。 |
| オペレーション | 独自のコードを、署名付きでスコープが限定されたトークンを使ってAPI経由で呼び出します。すべての実行が記録されます。 |
| シークレット | 保管庫です。関数とエージェントが持つのは参照だけで、キーそのものは持ちません。 |
| フック | レコードとオペレーションのイベントがオペレーションを実行します。配信は再送できます。 |
| ペイウォール | 任意のオペレーションに、ユーザーまたは組織ごとのクォータを設定できます。クォータは、Stripeまたはアプリストアで購入したサブスクリプションによって引き上げられます。 |
| 通知とメール | 個人ごとの設定に対応したプッシュ通知と受信箱通知です。メールテンプレートには、送信時にレコードの内容が差し込まれます。 |
| メディア、検索、位置情報 | 画像は各画面のサイズに合わせ、WebPとAVIFで配信されます。意味で検索できます。距離クエリも使えます。 |
| 作業 | 公開中のページに残したノートはタスクになります。エージェントが下書きし、人が承認します。 |
| エージェント | 長時間稼働するエージェントが、MCP経由でコンテンツを最新に保ちます。変更できる範囲はキーで制限されます。 |
| アプリ | コンソール内に置くアプリ独自の管理ページと、他のシステムのレコードとの同期を保つ連携です。 |
| エクスポート | すべてのレコードを、所有するPostgresデータベースにエクスポートできます。 |

それぞれについて、ドキュメントにページがあります：[https://docs.foir.dev](https://docs.foir.dev)

## プロジェクトの始め方

1. アカウントは人が[https://platform.foir.io/signup](https://platform.foir.io/signup)で作成します。この手順にはブラウザーが必要です。
2. `foir workspaces create --name acme --select`
3. モデルを定義した`foir.config.ts`を書き、続けて次を実行します：`foir push`。
4. エージェントがサインイン中の人としてプロジェクトで作業できるよう、`foir mcp`を実行します。

## 知っておきたいこと

- 位置情報、サインイン状態、セグメントはサーバー上で判定されるため、リクエストを書き換えてパーソナライズを偽装することはできません。
- 解決済みのバリアントを含むレスポンスはプライベートとしてマークされるため、共有キャッシュがある訪問者向けの内容を別の訪問者に返すことはありません。
- FóirとSupabase、Firebase、Sanity、Payloadなどとの比較：[https://foir.io/compare](https://foir.io/compare)
- 料金：[https://foir.io/pricing](https://foir.io/pricing)
