アプリが存在する理由
ワークフローはノーコードの自動化を担います。 しかし、コードが必要なものもあります。たとえば、カスタムの料金算出エンジン、独自のエンリッチメントパイプライン、レコードの更新ごとに実行されるコンプライアンスチェック、社内ツールからデータを取得するカスタム UI パネルなどです。 アプリを使えば、これらを一級の拡張機能として構築できます。外部から API と通信する壊れやすいスクリプトではなく、型システム、権限モデル、UI へ完全にアクセスできる、プラットフォーム上で実行されるコードとして実現できます。アプリで定義できるもの
アプリは、twenty-sdk を使って エンティティ を宣言する TypeScript パッケージです。
| エンティティ | 機能 |
|---|---|
| オブジェクトとフィールド | 既存オブジェクト上の新しいデータテーブルとフィールド — 組み込みのものと同様に扱われます |
| ロジック関数 | HTTP ルート、cron スケジュール、またはデータベースイベントによってトリガーされるサーバーサイドの TypeScript |
| フロントコンポーネント | サンドボックス化された React コンポーネントで、Twenty の UI(サイドパネル、ウィジェット、コマンドメニュー)内でレンダリングされます |
| スキルとエージェント | AI 機能 — 再利用可能な指示と自律型アシスタント |
| ビューとナビゲーション | 事前設定済みのリストビューとサイドバーのメニュー項目 |
.ts ファイルに export default defineObject(...) を記述するだけで、SDK がそれを検出します。
実行方式
- ロジック関数は、ホストからサンドボックス化された分離された Node.js プロセスで実行されます。 それらは、アプリのロール権限の範囲にスコープされた型付き API クライアントを通じてデータにアクセスします。
- フロントコンポーネントは Remote DOM を用いた Web Workers 内で実行されます—メインページからサンドボックス化されつつ、ネイティブの DOM 要素(iframe ではありません)をレンダリングします。
- 権限は API レベルで強制されます。 アプリは自分のロールで許可されたものだけを参照できます。
開発者エクスペリエンス
ローカル環境で TypeScript プロジェクトとしてアプリを作成します。 CLI がソースファイルを監視し、実行中の Twenty サーバーとライブ同期します — ファイルを編集すると、1 秒以内に UI に変更が反映されます。 スキーマが変更されると、型付き API クライアントは自動的に再生成されます。 準備ができたら、yarn twenty app:publish --private で本番サーバーにプッシュするか、yarn twenty app:publish でアプリを npm と Twenty マーケットプレイスに掲載します。
最初のアプリを構築する
3 フェーズのウォークスルー — 雛形の作成、ローカルサーバーの実行、変更内容の同期。