Vercel Sandboxの紹介
Vercel Sandbox
先日の Vercel Ship で Vercel Sandbox という面白いサービスが公開されました!
Vercel Sandbox とは?
AI が生成したコードや信頼できないコードを安全に実行できるサービスです。Fluid Compute を基盤とした短命な Micro VM で動作し、最大で 45 分(デフォルトでは 5 分まで)まで実行可能です。サンドボックスごとに最大で 8 つの vCPU、vCPU ごとに 2GB のメモリが割り当てられます。
2025-07-30 時点ではベータ版なので、すべてのプランで無料で使えちゃいます!気前がいいですね。
使用できるランタイム
使用できるランタイムは Node.js と Python です。Node.js はバージョン 22 で、パッケージマネージャは npm と pnpm に対応しています。python はバージョン 3.13 で、パッケージマネージャは pip と uv が使えます。
また、sudo もいい感じに使えるそうです。
実際に使ってみる
ではサンドボックスを作ってみましょう!
1. Vercel CLI をインストール
すでにインストールしている人はスキップしてください。
インストール:
pnpm i -g vercel
2. 環境構築
新しいディレクトリsandbox-test
を作成して、必要なパッケージをインストールします。
mkdir sandbox-test && cd sandbox-test
pnpm add @vercel/sandbox
pnpm add -D @types/node
3. プロジェクトの作成
Vercel のプロジェクトを作成してリンクします。
# プロジェクトをリンク、存在しない場合は新しく作成
vercel link
# 認証トークンを`.env.local`に保存
vercel env pull
4. コード作成
以下のコードをsandbox.js
というファイルに保存してください。
import { Sandbox } from '@vercel/sandbox';
async function main() {
const sandbox = await Sandbox.create();
await sandbox.writeFiles([
{
path: "script.js",
// Vercel Blogの方ではstreamになっていますが、contentが正しいです。
content: Buffer.from(`
// パッケージも使えます
import chalk from "chalk";
console.log(chalk.green("Hello from Vercel Sandbox!"));
console.log("現在の日時:", new Date().toLocaleString());
`)
},
{
path: "package.json",
content: Buffer.from(JSON.stringify({
type: "module",
dependencies: {
chalk: "^5.4.1"
}
}))
}
]);
await sandbox.runCommand({
cmd: "npm",
args: ["install"],
stdout: process.stdout,
stderr: process.stderr
});
await sandbox.runCommand({
cmd: "node",
args: ["script.js"],
stdout: process.stdout,
stderr: process.stderr
});
}
main().catch(console.error);
5. 実行してみる
以下のコマンドで実行します。TypeScript を使っているので、tsx
を使っています。
pnpm dlx tsx --env-file .env.local main.ts
実行すると、以下のような出力が得られるはずです!
Hello from Vercel Sandbox!
現在の日時: 7/29/2025, 6:26:27 PM
まとめ
Vercel Sandbox は、信頼できないコードを安全に実行するための非常に便利なツールです。
AI が生成したコードや、外部からのコードを実行する際に、セキュリティを確保しながら簡単にコードを実行できるので良さそうですね。
Discussion