ANTIGRAVITY LABEN
記事一覧/アプリ開発
アプリ開発/2026-03-21中級

Antigravity × Deno 2 開発ガイド — セキュアな次世代ランタイムで AI 駆動開発を始める

Deno 2 と Antigravity を組み合わせた開発ガイド。パーミッションシステム、npm 互換、Fresh フレームワークを AI エージェントで効率的に構築する実践手順を解説します。

DenoTypeScript11Freshバックエンド2セキュリティ12

取り組みの背景

Deno 2 は Node.js の生みの親 Ryan Dahl が設計した次世代 JavaScript / TypeScript ランタイムです。セキュリティファーストの権限管理、TypeScript のゼロ設定サポート、npm パッケージとの完全互換など、モダンな開発者が求める機能を標準で備えています。

Antigravity と組み合わせることで、Deno 2 のパーミッション設定やモジュール設計を AI エージェントに任せながら、安全で高速なアプリケーションを構築できます。ここでは環境構築から Fresh フレームワークでのフルスタック開発、Deno Deploy へのデプロイまでを実践的に解説します。

Deno 2 の特長と Antigravity との親和性

Deno 2 が開発者にとって魅力的な理由はいくつかあります。

まず、パーミッションシステムです。ファイルアクセス、ネットワーク通信、環境変数の読み取りなど、すべてのシステムリソースへのアクセスに明示的な許可が必要です。Antigravity のエージェントは、生成したコードに必要な権限を自動で判別し、deno.json の設定に反映できます。

次に、TypeScript ファーストの設計です。tsconfig.json の設定や ts-node のようなトランスパイラが不要で、.ts ファイルをそのまま実行できます。Antigravity が生成する型安全なコードとの相性は抜群です。

さらに、npm 互換モードにより、npm: プレフィックスを使って既存の npm パッケージをそのまま利用できます。node_modules を持たないクリーンなプロジェクト構造を保ちながら、Express や Prisma といった人気パッケージを活用できます。

Antigravity で Deno 2 プロジェクトを始める

Antigravity のターミナルで Deno 2 プロジェクトを初期化してみましょう。エージェントに次のように指示します。

Deno 2 で REST API サーバーを作成してください。
Oak フレームワークを使い、ユーザーの CRUD 操作を実装してください。
パーミッション設定も deno.json に含めてください。

Antigravity は以下のようなプロジェクト構造を生成します。

my-deno-api/
├── deno.json
├── main.ts
├── routes/
│   └── users.ts
├── middleware/
│   └── logger.ts
├── models/
│   └── user.ts
└── tests/
    └── users_test.ts

deno.json には必要なパーミッションとタスクが定義されます。

{
  "tasks": {
    "dev": "deno run --watch --allow-net --allow-read --allow-env main.ts",
    "start": "deno run --allow-net --allow-read --allow-env main.ts",
    "test": "deno test --allow-net --allow-read --allow-env"
  },
  "imports": {
    "@oak/oak": "jsr:@oak/oak@^17",
    "@std/assert": "jsr:@std/assert@^1"
  }
}

ポイントは --allow-net--allow-read--allow-env のように、必要最小限の権限だけを付与している点です。Antigravity はコードの内容を解析し、過剰な --allow-all を避けた安全な設定を提案します。

Oak フレームワークで REST API を構築する

Oak は Deno 向けの軽量な HTTP フレームワークで、Express ライクな API を提供します。Antigravity に「Oak でユーザー管理 API を作って」と指示すると、以下のようなルーティングコードが生成されます。

// routes/users.ts
import { Router } from "@oak/oak";
 
interface User {
  id: string;
  name: string;
  email: string;
}
 
const users: Map<string, User> = new Map();
const router = new Router();
 
router
  .get("/api/users", (ctx) => {
    ctx.response.body = [...users.values()];
  })
  .get("/api/users/:id", (ctx) => {
    const user = users.get(ctx.params.id);
    if (!user) {
      ctx.response.status = 404;
      ctx.response.body = { error: "User not found" };
      return;
    }
    ctx.response.body = user;
  })
  .post("/api/users", async (ctx) => {
    const body = await ctx.request.body.json();
    const user: User = {
      id: crypto.randomUUID(),
      name: body.name,
      email: body.email,
    };
    users.set(user.id, user);
    ctx.response.status = 201;
    ctx.response.body = user;
  });
 
export default router;

Antigravity の補完機能は Deno の標準ライブラリ(@std/)や JSR レジストリのモジュールも認識するため、crypto.randomUUID() のようなランタイム API も正確にサジェストします。

Fresh フレームワークでフルスタック開発

Deno 2 のフルスタック開発には Fresh フレームワークが最適です。Fresh はアイランドアーキテクチャを採用しており、必要な部分だけをクライアントサイドでハイドレーションします。

Antigravity に次のように依頼します。

Fresh 2 でブログアプリを作ってください。
記事一覧ページと記事詳細ページを実装し、
マークダウンファイルからコンテンツを読み込む構成にしてください。

Fresh のルーティングはファイルベースで、routes/ ディレクトリ内のファイルがそのまま URL パスに対応します。Antigravity はこの規約を理解し、適切なファイル配置でコードを生成します。

blog-app/
├── deno.json
├── main.ts
├── routes/
│   ├── index.tsx          # 記事一覧
│   └── posts/
│       └── [slug].tsx     # 記事詳細
├── islands/
│   └── LikeButton.tsx     # インタラクティブコンポーネント
├── components/
│   └── PostCard.tsx        # サーバーサイドコンポーネント
└── content/
    ├── hello-world.md
    └── getting-started.md

islands/ に配置したコンポーネントだけが JavaScript バンドルに含まれるため、パフォーマンスに優れたサイトが構築できます。

テスト駆動開発と Antigravity

Deno 2 にはテストランナーが標準搭載されています。Antigravity にテストの生成を依頼すると、Deno.test() を使ったテストコードを自動で作成します。

// tests/users_test.ts
import { assertEquals } from "@std/assert";
 
Deno.test("POST /api/users creates a new user", async () => {
  const response = await fetch("http://localhost:8000/api/users", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      name: "田中太郎",
      email: "tanaka@example.com",
    }),
  });
  const user = await response.json();
  assertEquals(response.status, 201);
  assertEquals(user.name, "田中太郎");
});

deno test コマンド一つでテストを実行でき、カバレッジレポートも --coverage フラグで取得可能です。Antigravity のエージェントはテスト結果を解析し、失敗したケースの修正案を即座に提案します。

Deno Deploy へのデプロイ

Deno Deploy は Deno 公式のエッジホスティングサービスで、GitHub リポジトリと連携するだけで自動デプロイが実現します。Antigravity から以下の手順でセットアップできます。

まず、deployctl をインストールします。

deno install -gArf jsr:@deno/deployctl

次に、GitHub リポジトリを Deno Deploy プロジェクトに紐付けます。

deployctl deploy --project=my-deno-api --entrypoint=main.ts

Antigravity は GitHub Actions のワークフローファイルも生成でき、プルリクエストごとにプレビューデプロイを実行する CI/CD パイプラインを構築できます。

name: Deploy
on:
  push:
    branches: [main]
 
jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4
      - uses: denoland/setup-deno@v2
      - run: deno task build
      - uses: denoland/deployctl@v1
        with:
          project: my-deno-api
          entrypoint: main.ts

npm パッケージとの共存

Deno 2 の npm: プレフィックスにより、Prisma、Zod、Hono など人気の npm パッケージをそのまま利用できます。

import { z } from "npm:zod@3";
import { Hono } from "npm:hono@4";
 
const UserSchema = z.object({
  name: z.string().min(1),
  email: z.string().email(),
});
 
const app = new Hono();
 
app.post("/users", async (c) => {
  const body = await c.req.json();
  const result = UserSchema.safeParse(body);
  if (!result.success) {
    return c.json({ errors: result.error.issues }, 400);
  }
  return c.json({ user: result.data }, 201);
});
 
Deno.serve(app.fetch);

Antigravity は npm: インポートと jsr: インポートの使い分けを理解し、Deno ネイティブのパッケージが存在する場合はそちらを優先的に提案します。

パーミッション設計のベストプラクティス

Deno のパーミッションシステムを最大限に活用するため、Antigravity に「このプロジェクトに最適なパーミッション設定を分析して」と依頼すると、コードベース全体をスキャンし、必要な権限を洗い出します。

よく使うパーミッションの組み合わせとその用途を整理すると、以下のようになります。

  • --allow-net=api.example.com: 特定ホストへのネットワークアクセスのみ許可。外部 API 呼び出しに使用。
  • --allow-read=./content,./config: 特定ディレクトリへの読み取りのみ許可。設定ファイルやコンテンツの読み込みに使用。
  • --allow-env=DATABASE_URL,API_KEY: 特定の環境変数のみ許可。シークレット管理に使用。

--allow-all はデバッグ時のみに限定し、本番環境では必ず最小権限の原則を適用しましょう。Antigravity はこの原則に沿った設定を自動生成します。

まとめ

Deno 2 と Antigravity の組み合わせは、セキュリティと開発効率を両立させる強力な開発環境を提供します。TypeScript のゼロ設定サポート、きめ細かなパーミッション管理、そして npm との完全互換性により、モダンなウェブアプリケーション開発を加速できます。

Antigravity のエージェントは Deno 2 のエコシステム(JSR、Fresh、Oak、Deno Deploy)を理解しているため、プロジェクトの初期化からデプロイまで一貫した支援を受けられます。ぜひ次のプロジェクトで試してみてください。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

アプリ開発2026-03-20
Antigravity エージェントでセキュアな API バックエンドを構築する — 認証・バリデーション・レート制限の実装パターン
Antigravity の AI エージェントを活用して、JWT 認証・入力バリデーション・レート制限を備えたセキュアな API バックエンドを設計・実装する上級ガイド。
アプリ開発2026-06-13
TanStack Query v5 のキャッシュ整合性を壊さない設計 — 無効化境界・楽観的更新・SSR の落とし穴を Antigravity で詰めていく
いいねを押すと表示が一瞬で巻き戻る、別タブから戻ると古い値が残る。TanStack Query v5 で起きるキャッシュ不整合を「壊れる3地点」から逆算し、無効化境界・onMutateのロールバック・QueryClientのリクエスト分離を実コードで設計します。
アプリ開発2026-05-05
Antigravity で React Native iOS アプリを本番品質に仕上げるガイド
Antigravity を活用した React Native iOS アプリの本番開発ワークフローを解説。環境設定から TypeScript 型付きコード生成、TestFlight 提出まで、実際の開発フローに沿って紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →