ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-04-02上級

Antigravity AgentKit 2.0で受託案件を3倍速でこなす現場ワークフロー完全公開

Antigravity AgentKit 2.0を使って受託開発案件の生産性を3倍以上に高める現場ワークフローを公開。要件定義から実装・テスト・納品まで、複数のエージェントを分業させる設計パターンとagents.md雛形を提供します。

Antigravity338AgentKit17受託開発5フリーランス3エージェント64

取り組みの背景:なぜAgentKit 2.0が受託開発の「ゲームチェンジャー」なのか

受託開発の請け負い会社やフリーランスプログラマーにとって、生産性=年収 です。

月50万円の案件を完納するのに通常40営業時間かかるなら、時給換算は12,500円。しかし同じ40時間かかる案件を、Antigravity AgentKit 2.0を使えば 13営業時間 で完納できます。残り27時間で他案件を並行受注でき、月収が3倍に跳ね上がります。

AgentKit 2.0の基本:マルチエージェント設計の考え方

AgentKit 2.0の最大の強みは、複数のエージェントを役割分担させ、オーケストレーション(指揮)できる 点です。

従来の「ChatGPT 1つでコード生成」ではなく、以下のように役割を分けます:

  • 要件定義エージェント — クライアントのヒアリング結果から仕様書を自動生成
  • 実装エージェント — フロントエンド・バックエンド・DB設計を並行処理
  • テストエージェント — ユニットテスト・統合テスト・E2Eテストを自動生成
  • レビューエージェント — コードの品質・セキュリティ・パフォーマンスをチェック
  • デプロイエージェント — CloudflareやVercel、AWSへの自動デプロイを実行

各エージェントは独立したコンテキストウィンドウを持つため、「前のエージェントの失敗に引きずられない」という利点があります。1つのチャットで全員が議論するのではなく、並行処理 できるのです。

案件受注からキックオフまでのワークフロー

受託案件を受け取ったら、まず以下のステップを踏みます。

  • Step 1: クライアントとの初期ヒアリング — 予算・納期・技術スタック・既存システムの有無を確認
  • Step 2: タスク分解 — 大きな案件を「機能単位」と「技術層別」に細分化(tasks.mdを作成)
  • Step 3: エージェント割り当て — tasks.mdに基づいて、どのエージェントが何を担当するか決定
  • Step 4: agents.mdの初期化 — 各エージェントのロール・得意分野・制約条件を定義
  • Step 5: キックオフミーティング — Antigravity上でエージェント間の協力ルールを確認

tasks.md の例(月50万円のWebアプリ案件)

# Project: クリニック予約管理システム v1.0

## 機能要件
- [Admin] 患者情報管理(登録・更新・削除)
- [Frontend] 予約カレンダーUI(日時選択→確定フロー)
- [Backend] 予約確保API(同時アクセス時の競合制御)
- [Admin] メール送信(予約確認・キャンセル時)

## 技術スタック
- Frontend: Next.js 16 + TypeScript + TailwindCSS
- Backend: Node.js + Hono + PostgreSQL
- Hosting: Cloudflare Workers + Vercel
- DB: Supabase
- Auth: Supabase RLS

## 納期
- Phase 1(基本機能): 10営業日
- Phase 2(追加機能): 5営業日
- 本番デプロイ: 2営業日

## リスク & 制約
- 既存顧客管理DB(SQLServer 2019)との連携が必要
- クライアントシステムの保守性重視(単体テスト>エレガント性)

agents.md の設計:役割別エージェント構成の雛形

AgentKit 2.0では、プロジェクト直下に agents.md を配置し、各エージェントを宣言します。以下は実際の案件で使ったテンプレートです。

# Project Agents
 
## 1. Requirement Agent(要件定義エージェント)
**Role**: クライアント要件をシステム設計に翻訳
**Responsibility**:
- Figmaデザインから画面フロー・UI仕様を抽出
- ビジネスロジック(予約ルール・キャンセル規則など)を明文化
- APIエンドポイント仕様書を自動生成
 
**Constraints**:
- クライアント提供資料(メール・仕様書・Figma)のみ入力源とする
- 自分で意思決定しない(不明点はImplementation Agentに質問)
 
**Tools**:
- File reading (Figma JSON export)
- Markdown editing (仕様書生成)
- API specification (OpenAPI format)
 
---
 
## 2. Frontend Agent(フロントエンド実装エージェント)
**Role**: Next.js + TailwindCSS でUI構築
**Responsibility**:
- 予約カレンダーコンポーネント(React hooks + Zustand)
- フォーム検証・エラーハンドリング
- 医療機関向けアクセシビリティ対応(WCAG 2.1 AA)
- E2Eテスト(Playwright)
 
**Constraints**:
- TailwindCSS のみ使用(UI frameworks 禁止)
- コンポーネント単位の分割(最大100行)
- 仕様外の技術判断をしない(Backend Agent と協調)
 
**Files**:
- src/components/
- src/pages/
- e2e/
 
---
 
## 3. Backend Agent(バックエンド実装エージェント)
**Role**: Node.js + Hono API 開発
**Responsibility**:
- 予約確保・キャンセルAPI(トランザクション保証)
- メール送信キューイング(Firebase Cloud Tasks or Bull)
- SQLServer レガシーDB との ETL(毎日夜間)
- Rate limiting & 認証(Supabase JWT)
 
**Constraints**:
- PostgreSQL (Supabase) を Single Source of Truth とする
- トランザクション必須(テスト時は自動ロールバック)
- ログ出力は日本語NG(英語で統一、ローカライズは client-side)
 
**Files**:
- src/api/
- src/db/
- tests/unit/
 
---
 
## 4. QA Agent(テスト・品質保証エージェント)
**Role**: 自動テスト生成 & 品質監視
**Responsibility**:
- ユニットテスト (Jest) → Coverage 80% 以上
- 統合テスト (Supertest) → API エンドポイント
- E2Eテスト (Playwright) → ユーザーフロー
- セキュリティ監査 → OWASPトップ10チェック
 
**Constraints**:
- テスト実行時間は 5分以下を目安
- Mocking はデータベース層のみ
- テストコードも本体と同じ品質基準
 
**Files**:
- tests/
 
---
 
## 5. Deployment Agent(デプロイメントエージェント)
**Role**: 本番環境へのリリース & モニタリング
**Responsibility**:
- Vercel への自動デプロイ (Next.js)
- Cloudflare Workers へのデプロイ (API)
- 環境変数・シークレット管理
- GitHub Actions CI/CD パイプライン構築
- デプロイ後のヘルスチェック
 
**Constraints**:
- 本番リリースは必ず dry-run を先行実行
- ロールバック手順を docs/ROLLBACK.md に記載
- デプロイ時間は 3分以下
 
---
 
## Agent Handoff Rules(エージェント間の引き継ぎルール)
 
1. **Requirement → Frontend/Backend**: 仕様書(Markdown + OpenAPI)でハンドオフ
2. **Frontend → QA**: PR を作成し、QA が自動テスト実装
3. **Backend → QA**: テストスイート実行、Coverage レポート確認
4. **QA → Deployment**: テスト全パス後に Deployment Agent へ通知
5. **Deployment → Client**: デプロイ完了通知 + 動作確認チェックリスト送付
 
---
 
## Success Metrics
- コード生成エラー率: < 5%
- テストカバレッジ: 80% 以上
- デプロイ失敗率: 0%
- 納期遵守率: 100%

このagents.mdを案件開始時に作成することで、各エージェントの「何をするのか」「何をしてはいけないのか」が明確になります。

実装フェーズのエージェント分業

いよいよ実装フェーズです。Antigravityの Planning ModeFast Mode を組み合わせます。

Planning Mode での全体設計(1営業日)

  1. Requirement Agent が仕様書を確定
  2. Frontend Agent が コンポーネント設計書を作成(UI ツリー + props インターフェース)
  3. Backend Agent が ERD(Entity Relationship Diagram)と API スキーマを定義
  4. 3者が合意に達するまで調整

この段階では コード生成は最小限 です。設計ドキュメント(Markdown + Mermaid図)に時間を使います。

Fast Mode での並行実装(5営業日)

設計がロックされたら、以下を並行処理:

  • Frontend Agent: コンポーネント実装 → ローカルテスト
  • Backend Agent: APIエンドポイント実装 → curl でテスト
  • QA Agent: テスト作成(実装に並行して)

各エージェントの出力は src/tests/ フォルダに自動保存され、Git でバージョン管理されます。

コード例:並行実装時の役割分担

// Frontend Agent: src/components/AppointmentCalendar.tsx
import { useState } from 'react'
import { supabase } from '@/lib/supabase'
 
export const AppointmentCalendar = () => {
  const [selectedDate, setSelectedDate] = useState<Date | null>(null)
  const [selectedTime, setSelectedTime] = useState<string | null>(null)
 
  const handleConfirm = async () => {
    if (!selectedDate || !selectedTime) return
 
    const { data, error } = await supabase
      .from('appointments')
      .insert([
        {
          patient_id: 'YOUR_PATIENT_ID',
          appointment_date: selectedDate.toISOString(),
          appointment_time: selectedTime,
        },
      ])
 
    if (error) console.error('Booking failed:', error)
    else console.log('Booking confirmed:', data)
  }
 
  return (
    <div className="space-y-4">
      {/* Calendar picker UI */}
      <button onClick={handleConfirm}>予約を確定する</button>
    </div>
  )
}
// Backend Agent: src/api/appointments.ts
import { Hono } from 'hono'
import { postgres } from '@/db'
 
const app = new Hono()
 
app.post('/appointments', async (c) => {
  const body = await c.req.json()
  const { patient_id, appointment_date, appointment_time } = body
 
  // Transaction: check availability + insert
  const client = await postgres.connect()
  try {
    await client.query('BEGIN')
 
    const existing = await client.query(
      'SELECT * FROM appointments WHERE appointment_date = $1 AND appointment_time = $2 AND status = $3',
      [appointment_date, appointment_time, 'confirmed']
    )
 
    if (existing.rows.length > 0) {
      await client.query('ROLLBACK')
      return c.json({ error: 'Time slot unavailable' }, 409)
    }
 
    await client.query(
      'INSERT INTO appointments (patient_id, appointment_date, appointment_time, status) VALUES ($1, $2, $3, $4)',
      [patient_id, appointment_date, appointment_time, 'confirmed']
    )
 
    await client.query('COMMIT')
    return c.json({ success: true })
  } catch (err) {
    await client.query('ROLLBACK')
    return c.json({ error: 'Database error' }, 500)
  }
})
 
export default app
// QA Agent: tests/unit/appointments.test.ts
import { describe, it, expect, beforeEach } from 'vitest'
import { supabase } from '@/lib/supabase'
 
describe('Appointments API', () => {
  beforeEach(async () => {
    // Clear test data
    await supabase.from('appointments').delete().neq('id', -1)
  })
 
  it('should confirm appointment when slot is available', async () => {
    const response = await fetch('/api/appointments', {
      method: 'POST',
      body: JSON.stringify({
        patient_id: 'test-patient-1',
        appointment_date: '2026-04-10',
        appointment_time: '14:00',
      }),
    })
 
    expect(response.status).toBe(200)
    const data = await response.json()
    expect(data.success).toBe(true)
  })
 
  it('should reject booking when slot is taken', async () => {
    // Insert existing appointment
    await supabase.from('appointments').insert([
      {
        patient_id: 'test-patient-2',
        appointment_date: '2026-04-10',
        appointment_time: '14:00',
        status: 'confirmed',
      },
    ])
 
    const response = await fetch('/api/appointments', {
      method: 'POST',
      body: JSON.stringify({
        patient_id: 'test-patient-3',
        appointment_date: '2026-04-10',
        appointment_time: '14:00',
      }),
    })
 
    expect(response.status).toBe(409)
  })
})

複数のエージェントが同時に異なるファイルを生成しているので、マージコンフリクトを最小化 するため、ファイルの役割分担を明確にしておく点が肝心です。

テスト・品質保証フェーズ

QA Agent の役割は、単に「テストを書く」ことではなく、信頼性の保証 です。

テスト自動生成

コードが実装される度に、QA Agent が即座に以下を生成:

  • ユニットテスト(入力→出力の検証)
  • 統合テスト(API→DB→メール送信までの流れ)
  • E2Eテスト(ブラウザでのユーザー操作再現)

カバレッジ管理

npm test -- --coverage

Coverage が 80% を下回った場合、自動的に不足分のテストコードを生成するよう QA Agent に指示します。

セキュリティ監査

QA Agent が OWASP Top 10 をチェック:

  • SQL インジェクション(Parameterized queries 使用確認)
  • XSS(ユーザー入力のサニタイズ確認)
  • CSRF(トークン生成確認)
  • 認証・認可(Supabase RLS ポリシー確認)

デプロイ・納品フェーズ

全テストが パス したら、Deployment Agent が本番環境へのリリースを実行します。

自動デプロイパイプライン

# .github/workflows/deploy.yml
name: Deploy to Production
 
on:
  workflow_dispatch:  # 手動トリガーのみ(自動デプロイ禁止)
 
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test
      - run: npm run test:e2e
 
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to Vercel
        env:
          VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
        run: npx vercel deploy --prod --token $VERCEL_TOKEN
      - name: Deploy API to Cloudflare
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
        run: npm run deploy:workers
 
  notify:
    needs: deploy
    runs-on: ubuntu-latest
    steps:
      - name: Send Slack notification
        run: |
          curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
            -d '{"text":"✅ Production deployment successful"}'

デプロイ後チェック

  1. Vercel Analytics で ページロード時間を確認(3秒以下)
  2. Sentry で エラーレート を確認(0%)
  3. Cloudflare Logpush で API エラーを確認

クライアントコミュニケーションの効率化

受託開発では、進捗報告が生命線 です。Antigravity を使うことで、これまで手作業だった報告を自動化できます。

自動進捗レポート生成

毎日夕方 18:00 に Antigravity が Git の commit ログを解析し、以下を自動生成:

# 本日の進捗レポート(2026-04-02)
 
## 完了したタスク
- [x] 患者情報管理画面 UI 実装(3コンポーネント)
- [x] 予約 API エンドポイント実装(POST /appointments)
- [x] ユニットテスト追加(カバレッジ +8%)
 
## 進行中のタスク
- [ ] 予約キャンセル API(明日完了予定)
- [ ] メール送信機能(テスト中)
 
## ブロッキングイシュー
なし
 
## 次営業日の予定
- バックエンド実装完了
- 統合テスト開始

このレポートを Slack や Google Chat に自動投稿することで、クライアントは 毎日最新の状況を把握 でき、信頼感が生まれます。

修正依頼の高速処理

クライアントから「予約画面の色を青から緑に変えてほしい」といった修正依頼が来たら:

  1. 修正内容を Slack で送信
  2. Antigravity が該当コンポーネント(src/components/AppointmentCalendar.tsx)を特定
  3. Frontend Agent が色定義を自動更新
  4. QA Agent が既存テストの互換性を確認
  5. Deployment Agent が Vercel Preview へ自動デプロイ
  6. クライアントが確認 URL を受け取る

所要時間:10〜15分 (従来は 1時間以上)

単価・月収の最大化

Antigravity を使った受託開発の最大の魅力は、時間単価の劇的な向上 です。

時間単価の計算例

従来のフリーランス(ChatGPT のみ)

  • 月50万円の案件 × 40時間 = 時給 12,500円

Antigravity を使った場合

  • 月50万円の案件 × 13時間 = 時給 38,500円 (3倍以上)

時間が浮く理由:

  • 設計フェーズ:50% 削減(Requirement Agent が自動化)
  • コード生成:60% 削減(4 Agents が並行処理)
  • テスト作成:70% 削減(QA Agent が自動化)
  • デプロイ:90% 削減(Deployment Agent が自動化)

並行案件管理の上限

Antigravity を使うと、1人で月間3〜4本の案件を並行処理できます。

  • 小案件(30万円以下):2週間で完納 → 月3本
  • 中案件(50万円):20営業日で完納 → 月2本
  • 大案件(100万円以上):6週間 → 並行は1本のみ

月収 = 単価 × 処理本数なので:

  • 月30万円 × 3本 = 月90万円
  • 月50万円 × 2本 = 月100万円

従来の「月50万円 × 1本 = 月50万円」と比べて、収入が2倍 になります。

値上げ交渉のタイミング

Antigravity で生産性を3倍にしても、クライアントは「高速納品」の理由を知りません。ここが重要です。

値上げ時の説明フレーズ

Antigravity という AI IDE を導入し、設計・実装・テスト・デプロイを最新の自動化技術で行っています。その結果、品質を維持しながら納期を短縮できるようになりましました。業界標準の時給単価(¥15,000–25,000)に合わせて、本案件は ¥18,000/時間 での請負になります。

このように説明すれば、クライアントも「技術投資の成果」として納得しやすいです。

失敗パターンと学び

実際の案件で起きた失敗事例を紹介します。

失敗 1: エージェントへの過信

初回の案件で起きた問題

新人ライセンスを持つ Backend Agent に「SQLServer レガシーDB との連携」を丸投げしたところ、エージェントが正規化されていない古い テーブル構造を無視し、非効率なクエリを生成してしまいましました。

学んだこと

  • Requirement Agent が 制約条件を明文化 しておく必要がある
  • 特に「レガシーシステムとの互換性」は明示的に agents.md に記述する
  • エージェント は指示の粒度に強く依存する

失敗 2: コンテキスト肥大化

4週目に起きた問題

実装が進むにつれ、各エージェントのコンテキスト(入力としての仕様・ライブラリドキュメント・既実装コード)が膨大になり、エージェントが「何を今実装すべきか」を見失うようになりましました。

学んだこと

  • 大型案件は Sprint 単位(1週間ごと)で分割する
  • Sprint ごとに tasks.md を更新し、エージェントの視点を「今週のゴール」に限定する
  • 過去の Sprint は /archive/ に移動して、コンテキストノイズを減らす

失敗 3: クライアント期待値管理

納品1週間前に起きた問題

クライアントが「予約が自動で メール確認 される機能」があると思い込んでいて、実装されていない機能として指摘されましました。

学んだこと

  • 仕様書は Figma・要件定義書とは別に、クライアントが 署名を入れるチェックリスト を用意する
  • 「このチェックリストにない機能は、追加開発(別料金)です」と明確化する

まとめ

Antigravity AgentKit 2.0 を使った受託開発ワークフローは、単なる効率化ではなく、ビジネスモデルの転換 です。

  • 従来: 1本の案件に時間をかけ、単価 ¥50万 × 月1本 = 月収 ¥50万
  • 新時代: 複数案件を並行処理し、単価 ¥50万 × 月3本 = 月収 ¥150万

本記事で紹介した agents.md の雛形・tasks.md の分割方法・デプロイパイプラインは、全てコピペで使えるテンプレートです。

あなたの next 案件から、ぜひこのワークフローを試してみてください。納期短縮と月収向上の両立が実現します。


参考書籍

詳しく学びたい方は以下の書籍をお勧めします:

シェア

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

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

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

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

関連記事

Agents & Manager2026-05-05
AgentKit 2.0 でサブスク型AIエージェントサービスを作る — Stripe課金から月次収益設計まで
AgentKit 2.0を使ったサブスクリプション型AIエージェントサービスの構築方法を完全解説。Stripe課金統合・マルチエージェント設計・プライシング戦略・解約防止まで、月次収益を安定させる実装ガイドです。
Agents & Manager2026-07-17
エージェントに渡した参照メモの7割は届いていませんでした — head で切る運用の限界を測った記録
定期実行のエージェントに参照メモを cat と head で渡していたところ、肝心な行が黙って落ちていました。切り取り位置を実測し、行数ではなくセクション単位の契約に置き換えるまでの記録です。
Agents & Manager2026-07-16
作業中のエージェントに、次の指示をいつ渡すか — 待つ・割り込む・積むを実運用で測りました
Antigravity v2.3.0 で入ったメッセージのキューイングと Send Now。待つ・割り込む・積むの三択を同じ物差しで測り、積んだ指示が古くなる問題と、前提スタンプで手戻りを22%から9%へ下げた記録をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →