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

TypeScript + Antigravity で実現する型安全フルスタック開発ガイド

Antigravity を使って TypeScript フルスタックアプリを型安全に構築する実践ガイド。Zod によるバリデーション、型推論の活用、エージェントとの協調開発まで徹底解説。

typescript26antigravity435fullstack5type-safezod2next.js4

TypeScript と Antigravity を組み合わせることで、AIエージェントによる自動コード生成の恩恵を受けながら、型安全性を損なわない堅牢なフルスタックアプリケーションを構築できます。Antigravity のエージェント機能を最大限に活用しながら、TypeScript の型システムと Zod を使ったバリデーションを組み込む実践的なワークフローを順を追って整理していきます。

この記事で学べること

  • Antigravity の TypeScript サポートの仕組みと活用ポイント
  • 型安全な API ルートとフロントエンドの構築手順
  • Zod スキーマを用いたランタイムバリデーションの統合
  • Antigravity エージェントへの効果的な TypeScript プロンプト指示
  • よくある型エラーとエージェントを使った解決法

対象読者: TypeScript の基礎知識があり、Antigravity を実務レベルで活用したい開発者。


前提知識・環境準備

まず必要なツールを用意します。

  • Google Antigravity(バージョン 1.20 以上): antigravity.google/download からダウンロード
  • Node.js 20 以上
  • TypeScript 5.3 以上

Antigravity を起動したら、新規ワークスペースを作成し、以下のプロンプトでプロジェクトを初期化します。

TypeScript フルスタックスターターを作成してください。
Next.js 15 App Router、Zod、Tailwind CSS を使用し、
型安全な API ルートと形式検証を含む構成にしてください。

エージェントがフォルダ構成・package.json・tsconfig.json を自動生成します。


TypeScript プロジェクトの構成と型設計

Antigravity エージェントが生成するフォルダ構成は次のようになります。

my-app/
├── src/
│   ├── app/
│   │   ├── api/
│   │   │   └── users/
│   │   │       └── route.ts   ← 型安全な API ルート
│   │   └── page.tsx
│   ├── lib/
│   │   └── schemas.ts         ← Zod スキーマ定義
│   └── types/
│       └── index.ts           ← 共有型定義
├── tsconfig.json
└── package.json

共有型定義の作成

src/types/index.ts に共有型を定義します。エージェントへのプロンプト例:

src/types/index.ts に以下の型を定義してください:
- User(id, name, email, createdAt)
- CreateUserInput(name, email)
- ApiResponse<T>(data, error, success)
これらは API ルートとフロントコンポーネントで共有します。

エージェントが生成する型定義の例:

// src/types/index.ts
export interface User {
  id: string;
  name: string;
  email: string;
  createdAt: Date;
}
 
export interface CreateUserInput {
  name: string;
  email: string;
}
 
export interface ApiResponse<T> {
  data: T | null;
  error: string | null;
  success: boolean;
}

Zod によるランタイムバリデーションの統合

TypeScript の型チェックはコンパイル時にしか機能しません。実行時のデータ検証には Zod を使い、型推論と組み合わせます。

src/lib/schemas.ts に Zod スキーマを作成してください:
- CreateUserSchema(name: 2〜50文字、email: メール形式必須)
- 型推論で CreateUserInput 型を自動導出してください

エージェントが生成するスキーマ例:

// src/lib/schemas.ts
import { z } from "zod";
 
export const CreateUserSchema = z.object({
  name: z.string()
    .min(2, "名前は2文字以上で入力してください")
    .max(50, "名前は50文字以内で入力してください"),
  email: z.string()
    .email("有効なメールアドレスを入力してください"),
});
 
// Zod スキーマから TypeScript 型を自動生成
export type CreateUserInput = z.infer<typeof CreateUserSchema>;
// => { name: string; email: string; }(手動型定義と完全一致)

z.infer を使うことで、スキーマの変更が型定義に自動反映され、ズレが生じません。


型安全な API ルートの実装

Next.js App Router の API ルートに Zod バリデーションを組み込みます。

// src/app/api/users/route.ts
import { NextRequest, NextResponse } from "next/server";
import { CreateUserSchema } from "@/lib/schemas";
import type { ApiResponse, User } from "@/types";
 
export async function POST(
  request: NextRequest
): Promise<NextResponse<ApiResponse<User>>> {
  try {
    const body = await request.json();
 
    // Zod でランタイムバリデーション
    const result = CreateUserSchema.safeParse(body);
    if (!result.success) {
      return NextResponse.json(
        {
          data: null,
          error: result.error.errors[0].message,
          success: false,
        },
        { status: 400 }
      );
    }
 
    // バリデーション済みデータは型安全に使用可能
    const { name, email } = result.data; // CreateUserInput 型が確定
    const newUser: User = {
      id: crypto.randomUUID(),
      name,
      email,
      createdAt: new Date(),
    };
 
    return NextResponse.json({ data: newUser, error: null, success: true });
  } catch {
    return NextResponse.json(
      { data: null, error: "内部サーバーエラー", success: false },
      { status: 500 }
    );
  }
}

返り値に ApiResponse<User> 型を明示することで、フロントエンドとの型の一貫性が保証されます。


Antigravity エージェントへの TypeScript プロンプト戦略

エージェントに高品質な TypeScript コードを生成させるには、型の制約を明示するプロンプトが重要です。

効果的なプロンプト例

型推論の活用を指示する場合:

ユーザーフォームコンポーネントを作成してください。
- React Hook Form + Zod resolver を使用
- CreateUserSchema の型を zodResolver で接続
- errors オブジェクトの型は UseFormReturn から自動推論させる
- 送信ハンドラーは ApiResponse<User> を受け取り、型安全に処理

型エラーの修正を依頼する場合:

以下の型エラーを修正してください:
"Type 'string | undefined' is not assignable to type 'string'"
user.email が undefined になりうる箇所を特定し、
Non-null assertion の代わりに適切な型ガードを使って修正してください。

AGENTS.md での TypeScript 設定

プロジェクトルートに AGENTS.md を作成し、TypeScript の規約をエージェントに伝えます(Antigravity 1.20 以降 GEMINI.md と共に参照されます)。

# AGENTS.md
 
## TypeScript 規約
- `any` 型の使用を禁止。`unknown` + 型ガードを使用すること
- 型推論が効く場合は明示的な型アノテーションを省略してよい
- Zod スキーマから `z.infer` で型を導出し、重複した型定義を避ける
- null チェックは Optional Chaining(`?.`)を優先する
- API レスポンスは必ず `ApiResponse<T>` でラップすること

よくあるエラーと Antigravity を使った対処法

エラー 1: Property 'X' does not exist on type 'Y'

このエラーはオブジェクトの型定義と実際のプロパティ名のズレで発生します。

Antigravity エージェントへの指示:

TypeScript エラー "Property 'userId' does not exist on type 'User'" を修正してください。
User 型の定義を確認し、プロパティ名の統一(userId か id か)を決定して全ファイルに反映してください。

エージェントがファイル全体を横断して一括修正します。

エラー 2: 非同期関数の型推論ズレ

// ❌ 問題: async 関数の戻り値型が広すぎる
async function fetchUser(id: string) {
  const res = await fetch(`/api/users/${id}`);
  return res.json(); // Promise<any> になってしまう
}
 
// ✅ 修正: 明示的な型アノテーション
async function fetchUser(id: string): Promise<ApiResponse<User>> {
  const res = await fetch(`/api/users/${id}`);
  return res.json() as Promise<ApiResponse<User>>;
}

エージェントへの指示:

fetchUser 関数に明示的な戻り値型 Promise<ApiResponse<User>> を追加し、
呼び出し元でも型推論が正しく機能するようにしてください。

エラー 3: Enum vs Union Type の選択

Antigravity がコード生成時に enum を使う場合があります。TypeScript では Union Type の方がツリーシェイクに有利です。

生成されたコードの enum を Union Type に書き換えてください:
status: "pending" | "active" | "inactive"
理由:バンドルサイズ削減と型推論の正確性向上のため。

応用:エージェントを使った型定義の自動同期

大規模プロジェクトでは、バックエンドとフロントエンドの型定義が乖離しがちです。Antigravity エージェントを使って型定義の同期チェックを自動化できます。

src/types/index.ts と src/app/api/**/route.ts を横断的に確認し、
型定義の不整合(プロパティ名・型の違い)をすべてリストアップしてください。
修正が必要な箇所は自動的に修正してください。

Manager Surface(マルチエージェント)を使えば、型チェックエージェントとテストエージェントを並列実行し、CI 相当の品質チェックをローカルで実施できます。

詳しい使い方は Next.js + Antigravity フルスタック開発 および Supabase + Antigravity でバックエンド構築 の記事も参考にしてください。


全体を振り返って

TypeScript + Antigravity の組み合わせは、AIによる高速コード生成と静的型システムによる品質保証を両立させる強力なアプローチです。主なポイントをまとめます。

  • Zod + z.infer でスキーマと型を一元管理し、重複を排除する
  • AGENTS.md に TypeScript 規約を記述してエージェントの生成品質を向上させる
  • API ルートに明示的な型アノテーションを付けることでフロントエンドとの型一貫性を保証する
  • Manager Surface を使って型チェックとテストを並列実行し開発速度を上げる

次のステップとして、Vercel + Antigravity デプロイガイド で型安全なアプリを本番環境にデプロイする方法も確認してみてください。

シェア

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

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

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

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

関連記事

アプリ開発2026-03-28
Antigravity × Supabase でリアルタイム対応フルスタックアプリを構築する実践ガイド
Antigravity IDE と Supabase を組み合わせて、認証・データベース・リアルタイム同期を備えたフルスタックアプリを構築する方法をステップバイステップで解説します。
アプリ開発2026-05-06
Google AI Studio に Antigravity エージェントが統合 — Firebase Studio 移行後の新開発ワークフロー入門
Firebase Studio の終了に伴い、Google AI Studio 2.0 に Antigravity コーディングエージェントが統合されました。ブラウザだけでフルスタックアプリを開発できる新ワークフローを入門者向けに解説します。
アプリ開発2026-05-03
Antigravity × TypeScript で作る冪等性キーと重複排除ストア本番設計ガイド
Stripe Webhook の二重課金や Temporal ワークフローの再実行で起きる重複処理を、冪等性キーと重複排除ストアで止める本番設計を、Antigravity を伴走者にして TypeScript で組み上げる実践ガイドです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →