Apps
非技術者のチームメイトが頼まずに使える一文 CRUD ツール。Agent が生成、Postgres から高速提供。
App は 5 つの Keep の形で最も重いもの。Agent がその場で生成する小さな Web アプリケーション — HTML、CSS、JavaScript、データに直結した CRUD エンドポイント。
答えが「これを見つけた」ではなく「チームに必要なツール」のときに App を使用してください。返品リクエストフォーム。在庫エディタ。サポート用の顧客検索ページ。編集可能フィルタ付きの生成ダッシュボード。
App の作成
チャットの一文で十分。
> users テーブルの CRUD 管理画面を作って — name、email、plan、「プランキャンセル」ボタン付き。
Agent は:
usersテーブルスキーマを読み取り。- リストビュー + 編集フォームの HTML を生成。
- アクティブテーマで CSS を書く。
- Tablize の direct-PG レイヤー経由で CRUD エンドポイント(list、read、update、delete)を配線。
- Split ビューに App をレンダリング。
聞いて磨ける — 「email で検索フィールドを追加して」「admin ユーザーには削除ボタンを無効化して」 — 各変更は変わった部分だけパッチする単一の Agent ターン。
App の解剖
- UI — HTML / CSS / プレーン JS。ビルドステップなし、React なし。1 秒未満でロード。
- Data Contract — App が実行を許可されたクエリと変更のセット。先に宣言、バックエンドが強制。
- エンドポイント — 宣言されたクエリに対する自動生成 REST エンドポイント。Postgres 直行、約ミリ秒。
- 権限 — 誰が見る、誰が編集、誰が削除。デフォルトはワークスペースメンバー、上書き可能。
- バージョン履歴 — すべての生成が保存され、ロールバック可能。
App はあなたのワークスペースと同じドメインから提供されるので、ワークスペースメンバーには認証が自動で動きます。公開 App は app.tablize.com/a/<id> のような安定 URL を生成。
Data Contract
ほとんどの「ローコード」ツールには 2 つの欠陥のどちらかがあります:
- オープンなデータベースアクセス — UI が任意の SQL を発行可能、UI にバグがあれば災害。
- 事前構築ブロック — 制約され、実際に必要なものを表現できない。
Data Contract はそのどちらでもありません。Agent が App を生成すると、呼び出すクエリのリスト — パラメータ化、型付け、読み取り専用または読み書き — も生成。バックエンドはリスト外のクエリを拒否します。
つまり:
- App は高速 — Postgres 直行、リクエストパスに Agent なし。
- App は安全 — Contract が宣言しないことは何もできない。
- App は監査可能 — Contract は人間可読リスト。公開前にレビュー可能。
後で機能を追加したくなれば、Agent が Contract を拡張して UI を再生成。手書き SQL なし。
CRUD 操作
- Create — 行を insert。
- Read — list、filter、sort、paginate。
- Update — 個別行を編集。
- Delete — ソフト(デフォルト)またはハード。
デフォルトフォームはテーブルの NOT NULL と CHECK 制約に対して検証。カスタム検証(例: 「plan は free|plus|pro のいずれか」)はカラムコメントから取得されるか、生成中に質問されます。
テーマ
Dashboards と同じ 11 テーマ。一文で切り替え: 「terminal テーマを使う」。
テーマは App ごと。チームは衝突なくサポートアプリを corporate で、Ops アプリを synthwave で持てます。
公開
App は公開するまで下書きのみ:
- 下書き — あなただけが見て実行。
- Team — ワークスペースメンバー。
- Public — URL を持つ誰でも(レート制限あり、ログインなし)。
各公開モードは現在バージョンの git スタイルタグ。公開 App を前バージョンに戻すと、履歴を失わずに悪い変更を解消できます。
バージョンロールバック
サイドバー → App → Versions。すべての保存が短い自動説明と表示。Restore をクリックでライブバージョンを戻す。公開済み App:
- Team / Public — ロールバックは即時、ユーザーは数秒以内に古いバージョンを見ます。
- 下書き — ロールバックはあなたのセッションでのみ発生。
ロールバックは安全 — Data Contract は UI と並んでバージョン管理されるので、新 UI に対して不一致クエリを誤って実行しません。
埋め込み
Dashboard と同じ — 公開 App は iframe 埋め込みをサポート:
<iframe src="https://app.tablize.com/a/<id>/embed" width="100%" height="600"></iframe>
マーケティングサイトに顧客編集可能フォームを埋め込んだり、Notion ドキュメント内にサポートツールを埋め込んだりするのに有用。
App vs Dashboard
| Dashboard | App | |
|---|---|---|
| ユーザー意図 | 読む | 読むかつ書く |
| パネル | 視覚的 | 視覚的 + フォーム、ボタン |
| Contract | 読み取り専用クエリ | 読み + 書きエンドポイント |
| 複雑度 | 低 | 中 |
Dashboard に多くの「編集」インタラクションを追加していると気づいたら、それが App に移行するタイミング。
制限
| プラン | アクティブ App | 1 日リクエスト |
|---|---|---|
| Free | — | App 利用不可 |
| Plus | 3 | 10k |
| Pro | 25 | 100k |
| Max | 無制限 | 100 万+ |
リクエスト数はすべての App 合計。制限に達した App は優雅に劣化 — 500 ではなく翌日まで「rate limited」ページを表示。
カスタムドメイン
Max プランは App を独自ドメイン(例: inventory.acme.com)にバインドをサポート。CNAME セットアップは 2 行、TLS は Let’s Encrypt 経由で自動プロビジョン。
よくある落とし穴
- フォーム送信で「Update failed」。 通常、フォームに含まれない NOT NULL カラム。Agent は頼めば検出して修正: 「欠落カラムを含めて」。
- 初公開時に App が空白レンダー。 Data Contract が本番で失敗するクエリを宣言(dev データに本番にないものがあった)。App のログで View errors をクリック。
- 公開 App URL に「workspace suspended」。 所有者アカウントの課金問題。課金を修正、App が戻ります。
- 隣の Dashboard とテーマが合わない。 テーマはアーティファクトごと。両方を同じテーマ名に明示的に設定。
次のステップ
- Dashboards — 読み取り専用の兄弟ケース。
- Reports — ナラティブな形のため。
- ワークスペースとロール — App ユーザーを招待する前のシートと権限セットアップ。