プログラミングの知識がなくても、AIに日本語で指示するだけ(vibe coding)で NextWorksのアプリを作って公開できます。対応AIツール:Claude Code / Cursor / Codex / Google AI Studio など。
全体の流れ(登場人物は3人)
【開発者(あなた)】 【運営】 【利用者(各社の管理者)】
①準備 → ②ひな形作成 ⑥審査して承認・署名 ⑧ストアから
→ ③AIに指示して開発 → → 権限に同意して
→ ④手元で動作確認 (問題があれば却下/ インストール
→ ⑤提出 公開後も緊急停止可) → メニューから利用
アプリは隔離された安全な箱(サンドボックス)の中だけで動きます。本体のデータや設定を壊すことは仕組み上できないので、安心して開発・導入できます。
開発者の手順
1 準備(最初の1回だけ・約10分)
- Node.js をインストール(nodejs.org から「LTS」版。画面の指示どおり進めるだけ)
- SDK一式を入手する
- 仕様は公開なので、AIツールには機械可読の仕様URLをそのまま渡せます(承認不要):
…/api/ext/v1/manifest-schema.jsonと…/api/ext/v1/openapi.json - SDK本体(ひな形生成・提出ツール)は承認ベンダー限定。運営の承認で受け取ったベンダートークン(
nwv_...)で取得します:
(zipを展開するとcurl -H "X-Vendor-Token: nwv_あなたのトークン" https://license.miraios.com/public/sdk/download -o nextworks-sdk.zipsdkフォルダになります。以後アップデートも同じコマンドで最新版を取得できます)
- 仕様は公開なので、AIツールには機械可読の仕様URLをそのまま渡せます(承認不要):
- お好みのAIコーディングツールを用意(Claude Code / Cursor / Codex / Google AI Studio のどれでも)
2 アプリのひな形を作る(コピペ1行・約1分)
ターミナル(コマンドプロンプト)に貼り付けて実行します:
node sdk/create-nextworks-plugin/index.mjs my-app --id 会社名.アプリ名 --name "訪問記録"
会社名.アプリ名は半角小文字(例:acme.visit-log)。会社名部分は運営に登録した「名前空間」と同じにしますmy-appというフォルダができ、動くサンプルとAI向けの説明書(AGENTS.md)が入っています
2種類のアプリがあります。用途で選んでください。
| 種類 | 向いている用途 | 作り方 |
|---|---|---|
| iframe型(既定) | 画面付きの業務アプリ。本体機能(データ/AI/ファイル/タスク/通知/外部API)は NxBridge で使う | 上のコマンド |
| セルフホスト型(remote) | 音声処理・大容量・常時稼働・独自バックエンドが要るアプリ。自分のサーバーでホスト | 末尾に --remote を付ける |
セルフホスト型のひな形(依存ゼロのNodeサーバー付き。接続・Webhook署名検証・定期実行が実装済み):
node sdk/create-nextworks-plugin/index.mjs my-remote-app --id 会社名.アプリ名 --name "音声議事録" --remote
cd my-remote-app && node server.mjs # → http://localhost:8990
- 定期実行(スケジューラ)は remote 型で使えます。
manifest.jsonのschedules(例:60分ごと)に宣言すると、本体が署名付き通知(event=schedule)をあなたのサーバーに送ります(最短5分)
3 手元で動かしてみる(コピペ2行)
cd my-app
npm run dev
ブラウザで http://localhost:8787 を開くと、NextWorks本体が無くてもアプリが動きます(練習用のお試し環境。データは再起動で消えます)。
- 「ポートが使用中」と出たら番号を変えて起動できます:Mac/Linux
PORT=8788 npm run dev/ Windows(PowerShell)$env:PORT="8788"; npm run dev - ひな形には
npm run dev / pack / submitのショートカットが同梱されています(AIツールもこれを使います)
4 AIに日本語で指示して開発する(ここが本番)
my-app フォルダをAIツールで開いて、作りたいものを日本語で伝えるだけです。
例:「顧客への訪問記録アプリにしてください。日付・訪問先・担当者・メモを登録できて、一覧は新しい順に並べ、検索もできるようにして。見た目は本体のテーマ色に合わせて。」
- Codex / Claude Code は、フォルダ内の
AGENTS.md(開発ルール)を自動で読み、NextWorksの流儀(守るべき制約)に沿ってコードを書いてくれます - Cursor / その他のツールでは、最初に一言「AGENTS.mdを読んでルールに従って」と伝えると確実です
- Claude Code / Cursor は MCPサーバー(
sdk/mcp-server)を登録すると、AIが仕様書を自分で参照できてさらに正確になります
作ったら③の画面を再読み込みして確認 →「ここを直して」とAIに伝える → の繰り返しです。
本体の機能を使う(自作しない) — AIには「本体の◯◯を使って」と伝えると、AGENTS.md の早見表に沿って NxBridge 経由で実装します。
| やりたいこと | 一言の例 |
|---|---|
| このアプリ専用データの保存/一覧 | 「登録・一覧・検索できるように」 |
| 本体の従業員/顧客を選ばせる | 「担当者は本体の従業員から選べるように(core.user:read)」 |
| AIで要約・下書き | 「本体のAIで議事録を要約して(capabilities に ai:generate を宣言)」 |
| 音声の文字起こし | 「録音を本体AIで文字起こしして話者も分けて(ai:transcribe+files:write)」 |
| ファイル添付+テキスト抽出 | 「Word/PDFを読み込んで本文を取り込んで(files:write)」 |
| 本体タスク化・通知 | 「TODOを本体のタスクに追加して(core.task:create)」 |
| 外部サービス連携 | 「Slackに通知(http:external+externalHosts。鍵は本体で預かる)」 |
- これらは NxBridge 経由で本体が代理実行します(アプリ内に作り直さない・外部APIキーを埋め込まない)。
- 使う前に
NxBridge.capabilities()でこの本体の対応状況を確認するのが安全(無効な機能はフォールバック)。まだ本体に無い機能をAIが外部APIで勝手に作ろうとしたら止めてください(審査で却下)。
AIが自動で守ってくれるルール(知っておくと安心)
- アプリは自分専用のデータ置き場しか触れない(他社アプリや本体のデータは見えない・壊せない)
- 外部への勝手なデータ送信はできない(仕組みでブロックされます)
- 見た目は本体のテーマに自動で馴染む
5 提出する(アプリのフォルダの中で・1行ずつ実行)
完成したら提出用ファイルを作って送ります。ベンダートークン(nwv_...)は運営から受け取ってください。
cd my-app
npm run doctor # 提出前の自己診断(禁止API・権限の宣言漏れ・version)
npm run submit -- --save-token nwv_あなたのトークン # ← 初回のみ(トークンを保存)
npm run pack
npm run submit
- 提出前に
npm run doctorを実行すると、fetch/alert/confirm/promptの使用や、コードが使う機能とmanifestの権限宣言のズレ、version不一致を事前に検出できます([error]は審査で却下されやすい) - AGENTS.md を最新化したいときは
npm run update-agents -- --url https://利用先のNextWorks(本体の最新仕様=新機能をAIの開発ルールに反映。あなたの固有メモは保持されます) - 初回だけ
--save-tokenでトークンを保存すれば、以後はnpm run pack→npm run submitの2つだけでOKです - 必ず1行ずつ実行してください(2つのコマンドを1行に繋げるとエラーになります)
- 提出した瞬間に自動チェックが走り、問題があればその場で理由が表示されます(直して再提出)
- 合格すると「審査待ち」になり、あとは運営の承認を待つだけです
- 再提出(アップデート)は
manifest.jsonのversionを上げてからpack→submitします(例:0.1.0 → 0.1.1)
トークンの取り扱い(重要)
・トークンはチャット(AIへの指示欄)やアプリのフォルダ内のファイルに貼らないでください。AIの会話履歴やgitに残ります
・--save-token の保存先はユーザーフォルダ(~/.nextworks/vendor-token)=アプリのフォルダの外なので、gitに混入しません
・環境変数 NEXTWORKS_VENDOR_TOKEN でも渡せますが、Windowsでは既に開いていたターミナルに反映されないため、うまくいかない時は --save-token を使ってください
・うっかり貼ってしまったら、運営にトークン再発行を依頼すれば古いものは無効になります
運営(NextWorks側)の手順
すべてライセンスサーバー管理画面 → 「サードパーティ」タブで行います。
- ベンダー登録:開発者の名前・メール・名前空間(例:
acme)を登録 - 承認:「承認」ボタン → 提出トークンが1回だけ表示されるので、安全な方法で開発者に渡す
- 審査:提出が届いたら「審査」ボタンで、自動チェック結果と要求している権限を確認
- 問題なければ「承認して公開」(自動で電子署名され、ストアに掲載されます)
- 問題があれば「却下」(理由を添えられます)
- 緊急停止(キルスイッチ):公開後に問題が見つかったら「失効」→ 全利用者の環境で自動的に止まります
上級:プラットフォーム関数(フェーズ3・既定OFF)
capabilities:["functions:run"] を宣言したアプリは、本体サーバー上の分離環境でコードを実行できます(音声処理など重い処理を、開発者が自前サーバーを持たずに動かす用途)。本体サーバー上で第三者コードが動くため、既定では完全に無効です。有効化は運営(インフラ担当)の判断で、次の2つが揃ったときだけ動作します:
- 各テナントのサーバーで
isolated-vm(V8アイソレート=真の分離ランタイム)を導入(cd backend && npm install isolated-vm。ネイティブビルドにC++ツールチェーンが必要) - 環境変数
TP_FUNCTIONS_ENABLED=true(+任意でTP_FUNCTIONS_MEMORY_MB/TP_FUNCTIONS_TIMEOUT_MS)を設定
- 未導入・未設定なら、関数呼び出しは自動的に
501/503を返し、既存動作には一切影響しません - 関数から使えるのは本体が注入する
nx.core.list/nx.ai.generate/nx.logのみ(fs/net/require 等へはアクセス不可)。1日あたりの実行上限つき
推奨:再販・マルチテナント運用では、各顧客サーバーで有効化せず、専用のサンドボックス用サーバーでのみ有効化することを強く推奨します(第三者コードの実行はリスクが高いため)
利用者(各社の管理者)の手順
- NextWorksの プラグイン管理 → 「サードパーティアプリ」 を開く
- 使いたいアプリの「インストール」を押す
- 権限の同意画面(このアプリが何を見られるか・できるかが日本語で表示)を確認して同意
- サイドバーのメニューに追加されるので、クリックして利用開始
- 不要になったら「削除」(データは残るので、再インストールすれば元どおり)
よくある質問
はい。②③⑤のコピペと、④の「日本語でAIに指示」だけで完結します。AIが行き詰まったら「AGENTS.mdを読み直して」「開発サーバーのエラーを見て直して」と伝えるのがコツです。
三重に守られています。①アプリは隔離された箱の中でしか動けず、同意した範囲のデータしか見えません。②外部へのデータ送信は仕組みで遮断されます。③運営の審査・電子署名を通ったものしか配布されず、問題があれば全環境で即時停止(キルスイッチ)できます。
上級者向けに「セルフホスト型」があります。開発者が自分のサーバーでアプリを動かし、NextWorksとは安全な合鍵(資格情報)と署名付き通知で連携します。詳細な技術仕様(開発者向けドキュメント・OpenAPI仕様)については、お問い合わせよりご相談ください。
はい。提出時に --price 500 のように価格(円)を付けるだけで、ストアに「¥500 で購入」ボタンが表示され、利用者はカード決済(Stripe)で購入できます。取り分は開発者70%・運営30%で、売上は運営の管理画面に自動記録されます(お支払いは運営から個別にご案内します)。銀行振込などカード以外の決済は、運営が入金確認後に手動でインストール権を付与できます。
困ったときは(実際にあったトラブルと対処)
| 症状 | 原因と対処 |
|---|---|
Cannot find module ...sdk/...pack.mjs | 実行する場所の間違い。アプリフォルダ(my-app)の中にいるなら npm run pack を使う。直接パスを書くなら ../sdk/...(sdkは1つ上の階層) |
本番で画面が動かず NxBridge is not defined | 古いひな形で作ったアプリの既知問題(修正済み)。最新のSDKでひな形を作り直すか、AIに「bridge.jsの中身をindex.htmlに内包して」と伝える |
削除ボタン等が本番で反応しない(Ignored call to 'confirm()'...) | 本番のサンドボックスでは alert / confirm / prompt が使えません。AIに「confirmを使わず、ページ内の確認UI(2度押し方式など)にして」と伝える |
ポート8787が使用中 | 別番号で起動:$env:PORT="8788"; npm run dev(Mac/Linuxは PORT=8788 npm run dev) |
npm run submit が「ベンダートークンが見つかりません」 | npm run submit -- --save-token nwv_あなたのトークン で1回保存すれば以後は不要。環境変数方式はWindowsで開いていたターミナルに反映されないので非推奨 |
| 再提出したのに本番が変わらない | manifest.json の version を上げてから pack→submit。反映後、本体のストアで新バージョンへ更新 |
| 自動チェックで却下された | 表示された理由をそのままAIに貼り付けて「直して」 |
- 迷ったらAIに「
npm run devを起動してエラーメッセージを読んで直して」と伝える - それでも解決しなければ運営(NextWorksサポート)へ