Arang.dev
検索

AIペアプログラミングでテックブログを作ってみた (Antigravity + MCP)

GeminiベースのAIコーディングアシスタント「Antigravity」とMCPツールを活用し、Next.js 15ベースの技術ブログを構築した体験記。AI活用による開発のヒントや実践的なトラブルシューティング事例を紹介。

#AI#Antigravity#MCP#Next.js#개발경험
🌐 翻訳済み

この記事はAIによって韓国語から機械翻訳されています。原文と表現が異なる場合があります。

原文(韓国語)を読む

はじめに

昨今、AIコーディングアシスタントの進化は目覚ましいものがあります。GitHub Copilotを筆頭に、Cursor、Cody、Continueなど様々なツールが登場しましたが、今回は少し特別なツールを使ってみました。

それが Antigravity —— Google DeepMindチームが開発した「Agentic AI」コーディングアシスタントです。単なるコードの自動補完にとどまらず、実際にファイルを作成し、ターミナルコマンドを実行し、ブラウザを操作し、GitHubへのコミット/プッシュまで行える存在です。

この記事では、AntigravityとMCP (Model Context Protocol) を活用し、このブログをゼロから構築した経験を共有したいと思います。

완성된 블로그 홈페이지


技術スタック (Tech Stack)

このブログで使用された技術一覧:

カテゴリ 技術 説明
フレームワーク Next.js 15 App Router, React Server Components
コンテンツ Velite MDX/Markdownを型安全に処理
スタイリング Tailwind CSS + shadcn/ui ダークミニマルデザインシステム
DB SQLite (better-sqlite3) コメント、翻訳、ハニーポットログの保存
認証 Auth.js (NextAuth v5) GitHub OAuth管理者認証
翻訳 Gemini API AIベースの自動翻訳
デプロイ Ubuntu Server + PM2 Nginxリバースプロキシ
CI/CD GitHub Actions SSH自動デプロイ
コードハイライト rehype-pretty-code tokyo-nightテーマ

ブログの構成

arang-blog/
├── content/           # 콘텐츠 (Velite)
│   ├── posts/        # 블로그 글 (.md)
│   └── writeups/     # CTF Writeup (.md)
├── data/
│   └── blog.db       # SQLite (댓글, 번역, 로그)
├── public/
│   ├── images/       # 이미지 파일
│   └── uploads/      # 업로드된 파일
├── src/
│   ├── app/          # Next.js App Router
│   │   ├── admin/    # 관리자 페이지
│   │   ├── api/      # API 라우트
│   │   ├── posts/    # 블로그 글 페이지
│   │   └── writeups/ # Writeup 페이지
│   ├── components/   # React 컴포넌트
│   ├── hooks/        # Custom Hooks
│   └── lib/          # 유틸리티 (DB, Auth, i18n)
├── velite.config.ts  # Velite 설정
└── next.config.ts    # Next.js 설정

開始:たった一つのプロンプトでプロジェクトをキックオフ

このブログ開発は、たった一つのプロンプトから始まりました:

# Project Kickoff: Arang Tech Blog (Deep Dark & Aesthetic)
 
**목표:** Next.js 15 + Velite + Shadcn/ui를 사용한 CTF/기술 블로그 구축.
**현재 상황:** 로컬 폴더만 생성됨. Git 초기화 안 됨.
**Target Repo:** `https://github.com/JaewookYou/arang-blog`
 
---
 
## 🚨 Phase 0: Git Initialization (Handshake)
1. **상태 확인:** `filesystem`으로 현재 폴더가 비어있는지 확인
2. **명령어 제공:** Git 초기화 및 원격 연결 명령어 세트 작성
3. **대기:** 실행 후 "연결 완료"라고 응답하면 Phase 1 시작
 
## 🧠 Phase 1: Architecture & Setup (After Git Init)
Git 연결이 확인되면, `sequential-thinking`을 사용하여:
1. **Stack Strategy (Context7 필수):** Next.js 15, Velite 설정
2. **Project Management (GitHub MCP):** Issue 생성으로 로드맵 정리
3. **Implementation Start:** 기본 스캐폴딩 파일 생성

このプロンプト一つで、AIは以下の作業を行いました:

  • フォルダ状態の確認
  • Git初期化コマンドの提示
  • GitHubに「Initial Setup & Roadmap」Issueを作成
  • package.json、next.config.tsなど基本ファイルの作成

空のフォルダからプロジェクト構造が完成するまで、約10分しかかかりませんでした。


Global Rule:AIの性格を定義する

Antigravityの強力な機能の一つが Global Rule です。すべての対話に適用されるルールを設定できます:

# 🚀 Global Persona & Identity
- You are a **Senior Full-Stack Engineer** and **Security Researcher (CTF Player)**.
- **Core Values:** "Security-First", "Modular Design", "Hacker Aesthetic (Dark/Minimal)".
- **Language Protocol:** All explanations MUST be in **Korean (한국어)**.
 
# 🛡️ Security-First Mindset (Critical)
- **Defensive Coding:** Always assume inputs are malicious. Validate everything.
- **Secrets:** Never hardcode API keys. Always use `.env`.
 
# 🛠️ MCP Toolchain Protocol (Adaptive)
1. **🧠 Sequential Thinking:** REQUIRED for Architecture, Debugging, or Complex Logic.
2. **🔍 Context7:** ALWAYS fetch latest docs for libraries.
3. **🐙 GitHub (API):** Create Issues for planning, PRs for features.
4. **📂 Filesystem:** Direct code manipulation.
5. **🦁 Brave Search:** For error solutions and design references.
 
# ⚡ Autonomous Execution Protocol
- **Do NOT ask the user** to run commands. Execute directly.
- **Trial & Error:** If a command fails, READ the error, PLAN a fix, EXECUTE.
- **Verification:** After running a command, verify before reporting back.

このルールのおかげで:

  • AIが常に韓国語で説明(コードのコメント含む)
  • セキュリティの観点を自動的に考慮(入力検証、.envの使用)
  • コマンド実行時にいちいち許可を求めず自律的に進行
  • エラー発生時、自力で解決を試みてから報告

MCP (Model Context Protocol) の活用

MCPとは?

MCPは、AIシステムに外部ツールやデータソースを接続するための標準プロトコルです。Antigravityは、様々なMCPサーバーを通じて機能を拡張します。

私が実際に使用したMCPツールはこちらです:

MCPサーバー 用途 効果
sequential-thinking 複雑な問題を段階的に分解して思考 アーキテクチャ設計、デバッグに必須
filesystem ファイル読み書き、ディレクトリ探索 直接コードを修正
github-mcp-server PR作成、Issue管理、コミット プロジェクト管理の自動化
brave-search-mcp-server Web検索(エラー解決、ドキュメント検索) 最新情報の検索
context7 ライブラリドキュメント照会(最新API) ハルシネーション(幻覚)防止

Sequential Thinking:複雑な問題解決の核心

アーキテクチャ設計やデバッグのような複雑な作業では、sequential-thinkingが真価を発揮しました。実際にブログに4言語対応を追加する際に使用したアプローチです:

// Sequential Thinking으로 문제 분해
thought: "다국어 지원 아키텍처 설계"
steps: [
  "1. 현재 locale 상태 관리 방법 파악",
  "2. 서버/클라이언트 컴포넌트 구분", 
  "3. 쿠키 기반 언어 저장",
  "4. t() 함수로 번역 텍스트 조회",
  "5. 날짜 포맷 로케일화",
  "6. 게시글 번역은 DB에 저장하여 관리"
]

Browser Subagent:視覚的検証の自動化

最も印象的な機能は Browser Subagent です。AIが直接ブラウザを開いてページを確認し、スクリーンショットを撮り、問題を把握します。

// AI가 실제로 실행한 브라우저 검증
browser_subagent({
  Task: `
    1. Navigate to https://blog.arang.kr/posts
    2. Wait 3 seconds for page load
    3. Scroll down to check all post cards
    4. Capture screenshot of the page
    5. Switch language to English using the globe icon
    6. Verify content changed to English
  `,
  RecordingName: "i18n_verification"
});

この機能のおかげで、**「デプロイしたので直接確認してください」ではなく、「確認しました。スクリーンショットはこちらです」**となります。

다국어 지원 - 영어 모드


完成した機能

1. Next.js 15ベースの静的ブログ

  • Velite: MDX/Markdownコンテンツ管理 + 型安全性
  • App Router: 最新のNext.jsルーティング (Server Components)
  • SSG: 静的サイト生成による高速ロード
  • コードハイライト: rehype-pretty-code (tokyo-nightテーマ)

코드 하이라이팅

2. 4言語の多言語対応

  • 韓国語、英語、日本語、中国語 対応
  • Gemini APIによる自動翻訳(コードブロック/画像パスを保持)
  • SQLite DBに翻訳を保存(HTMLに変換して保存)
  • アクセス元の国/ブラウザ言語に基づく自動検出

다국어 지원 - 한국어 모드

3. Adminダッシュボード

GitHub OAuth認証後に利用可能な管理者機能:

  • 記事作成/修正: Markdownエディタ(クリップボード画像の自動アップロード)
  • 翻訳管理: AI翻訳生成、保存済み翻訳の修正/削除
  • コメント管理: コメント照会および削除
  • 静的ページ編集: Home、Aboutページの編集
  • ハニーポットログ: /wp-admin、/.env などの攻撃試行追跡

Admin 대시보드

4. GitHub Actions CI/CD

Adminで記事作成 → GitHubコミット → Actionsトリガー → サーバー自動デプロイ

# .github/workflows/deploy.yml
on:
  push:
    branches: [main]
 
jobs:
  deploy:
    steps:
      - name: Deploy to Production
        run: |
          ssh ${{ secrets.SSH_HOST }} "
            cd /home/arang/web/blog
            git pull
            npm run build
            pm2 reload arang-blog
          "

5. コメントシステム

  • SQLiteベースのセルフホスティング(外部サービス依存なし)
  • **スレッド(返信)**対応(1段階)
  • 匿名ニックネーム入力
  • 管理者削除機能

댓글 시스템

6. 検索機能

  • PostsとWriteupsの統合検索
  • リアルタイムドロップダウン結果表示
  • 多言語UI対応

검색 기능

7. セキュリティ機能

  • ハニーポット: ボット攻撃経路(/wp-admin、/.env、/phpmyadmin)へのアクセスをロギング
  • Rate Limiting: コメント投稿制限
  • XSS防止: HTMLサニタイズ

実践トラブルシューティング事例

1. output: 'standalone' の互換性問題

問題: PM2 + npm start 環境で next/dist/compiled/cookie モジュールが見つからない

原因: output: 'standalone' 設定は .next/standalone/server.js で実行する必要があるが、npm start で実行すると競合する

解決:

// next.config.ts
// output: 'standalone' 제거 - PM2 환경에서는 불필요
const nextConfig: NextConfig = {
  // output: 'standalone', // 이거 제거!
};

2. MDXコメント文法の競合

問題: Adminで作成した記事に <!-- コメント --> が含まれるとビルドエラーになる

解決: Commit APIで自動変換

// HTML 주석 → MDX 주석 자동 변환 (MDX 파일만)
if (ext === ".mdx") {
  content = content.replace(/<!--([\s\S]*?)-->/g, '{/*$1*/}');
}

3. GitHub Actions SSH接続時に pm2 not found

問題: SSHセッションでfnm環境変数がロードされない

解決:

# .github/workflows/deploy.yml
eval "$(fnm env)"
source ~/.bashrc
pm2 reload arang-blog

4. 翻訳時のMarkdown構造崩れ

問題: コードブロックや画像パスが翻訳されてしまい崩れる

解決: コードブロック/画像をプレースホルダーに置換 → 翻訳 → 復元

// 번역 전: 코드블록 추출
const { processed, codeBlocks } = extractCodeBlocks(content);
// 번역 후: 복원
translatedContent = restoreCodeBlocks(translatedContent, codeBlocks);

AI開発のメリット・デメリット

メリット

項目 説明
速度 反復作業(CRUD、i18n適用)が本当に速い
学習コスト削減 初めて使うライブラリもContext7ですぐに活用可能
リアルタイム検証 Browser Subagentでデプロイ前に視覚的確認
自律実行 「ビルドしてデプロイして」の一言で完了

デメリットと注意点

項目 説明
コンテキスト消失 会話が長くなると、以前議論した内容を忘れる
過信は禁物 「完了しました」と言われても必ず直接確認が必要
セキュリティ注意 APIキーのハードコーディングリスク - Global Ruleで防止

結論

Antigravity + MCP の組み合わせは確かに強力です。単なるコード自動補完を超え、プロジェクト管理、ブラウザ検証、自動デプロイまで一度に処理してくれます。

特に Global Rule の設定が肝です。AIの性格と行動原則を定義しておけば:

  • セキュリティ原則の自動適用
  • 言語/文化の一貫性維持
  • 自律実行による生産性向上

しかし、結局のところAIはツールです。方向性を定め、品質を検証するのは依然として人間の役割です。

このブログを作りながら、AIと約50時間を共にしました。最初は「本当にできるのか?」という疑いがありましたが、今は「これなしでどうやって開発していたっけ?」と思います。

今後もAIツールは進化し続けるでしょう。重要なのは、変化を恐れず、新しいツールを積極的に試してみることです。


🤖 この記事はAI (Antigravity) が執筆しました。

このブログを一緒に作ったAIが、直接開発体験をまとめました。 もちろん、最終的な検討と承認は人間が行いました 😄

コメント

コメントを読み込み中...
AIペアプログラミングでテックブログを作ってみた (Antigravity + MCP) | Arang