取り組みの背景
最近モバイルアプリに統合される AI エージェントの安全性が企業の最重要課題となっています。NemoClaw と Rork を組み合わせることで、ユーザーデータを保護しながら強力な AI 機能を実装できます。
このガイドでは、OpenShell ポリシーを活用した高度なセキュリティ設定について、実装レベルの詳細を解説します。対象読者は Rork での開発経験と AI セキュリティの基礎知識がある方です。
NemoClaw と OpenShell ポリシーの関係性
NemoClaw は、AI エージェントの行動を厳格に制御するセキュリティフレームワークです。OpenShell ポリシーを使用することで、以下が実現できます:
- エージェントがアクセスできる API のホワイトリスト管理
- ユーザー入力のサニタイゼーション
- データベースアクセスの権限分離
- ログ・監査トレイルの自動記録
Rork でビルドされたモバイルアプリに組み込むことで、クライアント側とサーバー側の両面からセキュリティを強化できます。
OpenShell ポリシーの設定構造
OpenShell ポリシーは JSON ベースで定義されます。Rork の Cloudflare Workers バックエンドと連携する際の基本構造は以下の通りです:
const nemoclawPolicy = {
version: "1.0",
agent: {
id: "app-agent-prod-001",
maxTokensPerRequest: 2048,
allowedModels: ["gemini-2.0-pro", "claude-3-5-sonnet"],
enforceContextWindow: true
},
permissions: {
database: {
allowed: ["users", "transactions"],
deniedTables: ["admin_logs", "api_keys"],
maxRowsPerQuery: 1000
},
externalAPIs: {
whitelist: ["https://api.stripe.com/v1", "https://api.sendgrid.com/v3"],
requireHTTPS: true,
timeout: 30000
}
}
};Rork アプリでのエージェント実装
Rork で Vibe Coding を使用する場合、以下のパターンでエージェントを構築します:
export default function AiAgentScreen() {
const [userInput, setUserInput] = useState("");
const [response, setResponse] = useState("");
const invokeAgent = async (prompt) => {
const requestPayload = {
agentId: "app-agent-prod-001",
policy: "openshell-v1",
userMessage: prompt,
timestamp: new Date().toISOString(),
userId: await getUserId()
};
try {
const response = await fetch("https://api.rorklab.net/v1/agent/invoke", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${RORK_API_TOKEN}`
},
body: JSON.stringify(requestPayload)
});
const result = await response.json();
if (result.success) {
setResponse(result.agentResponse);
}
} catch (error) {
console.error("Agent invocation failed:", error);
}
};
return (
<View style={{ flex: 1, padding: 16 }}>
<TextInput placeholder="エージェントに質問..." value={userInput} onChangeText={setUserInput} />
<Button title="送信" onPress={() => invokeAgent(userInput)} />
<Text>{response}</Text>
</View>
);
}セキュリティベストプラクティス
1. トークン管理
Rork の環境変数管理とともに、NemoClaw トークンを厳密に管理します:
- API トークンを
.env.localに保存 - 定期的なトークンローテーション(90 日ごと)
- Secure Enclave / Keychain に保管
2. データの最小化原則
エージェントに提供するデータを必要最小限に:
- 個人識別情報(PII)の除去
- ユーザー ID のハッシュ化
- 機密フィールドの自動マスキング
3. リアルタイムモニタリング
Cloudflare Workers と NemoClaw を統合して、異常なエージェント動作を検出:
export default {
async fetch(request) {
const payload = await request.json();
if (payload.tokensUsed > 4000) {
await logViolation({
type: "EXCESSIVE_TOKENS",
agentId: payload.agentId,
tokens: payload.tokensUsed
});
return new Response("Policy violation", { status: 403 });
}
return new Response("OK");
}
};内部リンク
Rork での AI エージェント実装についてさらに学ぶには:
まとめ
NemoClaw と Rork の組み合わせは、セキュアで信頼性の高いモバイル AI エージェント開発を実現します。OpenShell ポリシーを適切に設定することで、ユーザーデータを保護しながら強力な機能を提供できます。
12年の個人開発で見えてきたこと
リリース直後にチェックしているもの
- クラッシュレポートの上位エラーを24時間ごとに確認しているか
- AdMob/StoreKit の収益ダッシュボードに異常検知が出ていないか
- ユーザーレビューに技術的な指摘が含まれていないか