コードソリューション(β版)
1. コードソリューションとは
Anyflow Embed の「ソリューション」は、通常 GUI(ノーコードエディタ)でトリガーステップやアクションステップを組み立てて作成します。コードソリューションでは、そのうちアクションの実行ロジック部分を TypeScript(Deno)を使ったコードで記述します。
Embed CLI でサーバーとローカルを同期し、コーディングエージェント(Claude Code / Codex など)で実装します。複雑な分岐処理やデータ加工など、GUI のステップ形式では表現しづらいロジックを直接コードで書きたい場合にご利用ください。
コードソリューションは、管理画面でソリューションを新規作成する際に「コード」を選択することで作成します。詳細は「4. ソリューション作成の流れ」を参照ください。

エディタ画面ではコードの編集はできず、閲覧のみ可能です。編集はローカル環境で行ってください。
■ イメージ:ソリューション構築の流れ
2. 全体像
コードソリューションは次の二層で構成されます。
処理部分
データ取得・加工・登録などのロジック
コード(main.ts)
定義部分
トリガー、エンドユーザー変数、ウィザード設定など
管理画面(GUI)solution.lock にスナップショットされる
定義部分には次の 3つが含まれます。現時点ではいずれも GUI 側で設定し、コードでは変更できません。
トリガー: ソリューション実行の起点となるアプリとトリガーの種類、その出力スキーマ
エンドユーザー変数: 導入先のエンドユーザーに入力させるフィールド
ウィザード設定: エンドユーザー向けセットアップ UI(画面構成・ウィジェット・ラベル)
3. セットアップ
セットアップは大きく 3 つです: Deno → Embed CLI → ログイン
3-1. Deno のインストール
コード化ソリューションは Deno で記述します。公式ガイドに従ってインストールしてください。
公式: https://docs.deno.com/runtime/#quick-install
PATH が通っているか確認します。
補足: エディタで直接コードを見る場合は、VS Code の Deno 拡張を入れると型補完・診断が効きます。 F1 → Deno: Initialize Workspace Configuration で有効化してください。
3-2. Embed CLI のインストール
embedというファイル名のバイナリが~/binに入ります。~/binを PATH に通してください。curlとunzipが必要です。動作確認:
Windows 環境について: Windows 用のバイナリ配布はありません。WSL を利用してください。
3-3. ログイン
組織名は、管理画面にログインする際に使うものと同じです。
ログインは Auth0 を介した OAuth 2.0 (Authorization Code Flow) で行われます。ログインコマンドを実行するとブラウザが自動的に開きます。ブラウザを開くコマンドが見つからなかった場合、Auth0 の認可URLがコンソールに表示されます。ご自身でアクセスしていただくと認証完了します。

ログイン状態の確認:
4. ソリューション作成の流れ
4-1. 管理画面でコードソリューションを作成
ソリューションは管理画面で作成します。「コード化が有効な組織」であれば、ソリューションの初期画面でコードを選べます。トリガー・エンドユーザー変数・ウィザードなどの定義部分はここで設定します。

4-2. 空ディレクトリを作って pull
pull コマンドはサーバの状態をローカルにするです。管理画面のURLに含まれる solution-id をコピーして pull コマンドに渡してください。ソリューション作成直後に遷移する管理画面のURLの構造を次に示します: https://embed.anyflow.jp/solutions/<solution-id>/workflow
初回 pull はディレクトリが空であることを要求します(.git / .gitignore は例外として許可されます)。
また git 管理は必須ではありませんが、あとから変更履歴を追ったりロールバックしたりする場合は、pull の前に git init しておくのがおすすめです。
4-3. skills を追加(任意)
skills はコーディングエージェント向けの参照情報です。npx skills add コマンドで skills を追加すると、エージェントは Embed CLI の基本的な使い方に加えて、使用するアプリクライアント(@anyflowinc/<name>)の API リファレンスを参照できるようになります。Embed CLIおよびコードソリューションについての概観、制約、トラブルシューティングの3種類のskillを用意しています。これらの skills を入れなくても動作しますが、コーディングエージェントが実装で迷いにくくなるため追加を推奨します。
インストール範囲は用途に応じて選んでください。
プロジェクト単位:
./<agent>/skills/に追加されます。solution.lockなどと同様に git 管理できますが、ソリューションごとに再実行が必要です。マシン全体(
-g):~/<agent>/skills/に追加されます。一度実行すれば、以降作成するソリューションで再実行は不要です。
追加時にどのエージェント向けに設定するかを選択します。追加後は、利用しているエージェントのスキル一覧から反映されているか確認できます。
4-4. コードの実装
コーディングエージェント(Claude Code / Codex など)に要件を伝えて main.ts を実装してもらいます。
連携可能なSaaSクライアントは embed libs で確認できます。
4-5. サーバーへ反映
push コマンドはローカルの状態をサーバに同期するコマンドです。push コマンドで編集したコードをサーバに反映させます。
5. ファイル構成と所有境界
pull するとおおよそ次の構成になります。
main.ts
あなた(user)
✅
main.ts が import するファイル
user
✅
deno.json
共有
✅ (※後述の 1 エントリだけ注意)
generated/types.ts
サーバー
❌ 自動生成のためのため
solution.lock
サーバー生成 / ユーザー選択
❌ GUI 設定のスナップショットであるため
.embed/
CLI
❌ CLI の同期状態であるため
deno.json は imports / tasks / compilerOptions など全体を編集して構いませんが、例外として compilerOptions.types の "./generated/types.ts" エントリは消さないでください。消すとソリューション固有の型が読み込まれません。
6. コードの書き方
エントリポイントは main.ts
workflow 関数を export します。
入力の型を確認する(TriggerOutput / EndUserInputs)
TriggerOutput と EndUserInputs は generated/types.ts に定義されます。GUI で設定したトリガーステップ / エンドユーザー変数の定義によって決定します。このファイルは自動生成されるため、編集しないでください。
アプリクライアント(@anyflowinc/<name>)
外部 SaaS への読み書きは @anyflowinc/<name> クライアント経由で行います。利用可能なクライアントは embed libs で確認し、deno add @anyflowinc/<name> で追加します。
7. 制約
実行環境の制約
実行環境はサンドボックス化されています。SaaS 連携はアプリクライアント経由で行います。一般的な JS/TS ライブラリ含め、deno add コマンドでライブラリを自由に追加できます。
メモリ上限: 1GiB
最長実行時間: 60min
ファイルシステムへの書き込み: 非対応
β版での制約
実行ログの確認: コード中の console.log などは画面上のログとして表示されません。確認したい値は Slack / Google Sheets / Google Drive 等のアプリクライアント経由で出力してください。
動作確認: ローカルでの実行コマンドは提供していません。変更を確認するには embed push した上で、テスト実行をしてください。ジョブの結果のみ確認できます。
デプロイ: エンドユーザーへのソリューションの提供はまだできません。ソリューションの実行はテスト実行のみとなっています。
アプリクライアント: GUI版のソリューションで使用できるアプリすべてには対応していません。順次追加していく予定です。
管理画面でのファイル閲覧: 管理画面ではすべてのファイル内容の閲覧はできません。現在は main.ts のみ閲覧ができます。
8. トラブルシューティング
embed が見つからない
~/bin が PATH に通っているか確認 → embed version
VS Code でコード補完・診断が出ない
プロジェクトで Deno 拡張を有効化(F1 → Deno: Initialize Workspace Configuration)。クライアントは deno add で追加
triggerOutput の中身が分からない
generated/types.ts を読む
クライアントの正しい使い方が分からない
該当パッケージの reference.md(node_modules/@anyflowinc/<name>/reference.md)を参照
実行結果・ログが見えない
「7. 現在の制約」を参照
embed push がコンフリクトで止まる
マーカー解決 → 再 embed pull(ゼロ件で完走するとクリア)
Windows で動かない
WSL を使う
認証切れ(exit 3)
再度 embed login -o <組織名>
最終更新