AIファーストで全てを書き直す:エンジニアが知るべき新パラダイム

に公開

はじめに:コードを書くのをやめた日

先週、3日かけて書いていたTypeScriptのコードを全て捨てました。

代わりに、Claudeと30分話して、同じ機能を2時間で実装しました。しかも、元のコードより品質が高い。

これは「AIでコーディングが速くなった」という話ではありません。我々がソフトウェアを作る方法が、根本から変わったという話です。

Context is King:なぜMarkdownが最強なのか

なぜか?

  1. LLMのトークン効率: MarkdownはJSONより平均30%少ないトークンで同じ情報を表現
  2. 文脈の保持: 人間の思考プロセスをそのまま保存できる
  3. バージョン管理: Git diffが人間にも読みやすい

新しいツールスタック:学習曲線はもう関係ない

1. Effect-TS vs 素のTypeScript

❌ 従来:シンプルだが脆い

fetchRegular.ts
async function fetchUser(id: string) {
  try {
    const res = await fetch(`/users/${id}`);     // リトライなし
    const user = await res.json();               // 型なし: any
    if (!user.email?.includes('@')) throw Error(); // 手動検証
    return user;                                 // 型: any
  } catch {
    return null;  // エラー握り潰し → 型: any | null
  }
}

✅ Effect:冗長だが堅牢

fetchEffect.ts
const User = Schema.Struct({ 
  email: Schema.Email,  // 自動バリデーション
  age: Schema.Number.pipe(Schema.between(0, 150)) 
})

const fetchUser = (id: string) =>
  Effect.gen(function* () {
    const client = yield* HttpClient.HttpClient;              // HTTPクライアント
    const response = yield* client.get(`/users/${id}`);       // GET リクエスト
    const user = yield* response.schemaBodyJson(User);        // 自動パース&検証
    return user;
  }).pipe(
    Effect.retry(Schedule.exponential(Duration.millis(100))), // 指数バックオフ
    Effect.timeout(Duration.seconds(5)),                      // Duration型
    Effect.withSpan("fetchUser", { id }),                     // OpenTelemetry
    Effect.scoped                                             // リソース自動管理
  )
// 型: Effect<User, HttpError | ParseError | TimeoutException>
//     ↑ すべてのエラーが型で明示的

// 並行処理も1行
Effect.forEach(["id1", "id2"], fetchUser, { concurrency: 5 })

// 💡 AI向け:冗長だが全エラーパスが型安全。人間には煩雑、AIには最適。

なぜ今Effect-TSなのか? AIは複雑な型システムを一瞬で理解します。人間が避けていた「正しいけど難しい」ツールが、突然最適解になりました。

2. Jujutsu (jj) vs Git

# Git:間違えたコミット。やり直しが面倒
git reset --hard HEAD~1
git cherry-pick <commit-hash>
git rebase -i HEAD~3

# Jujutsu:すべての操作がundo可能
jj undo  # 以上!

並列で動く複数のClaude Codeエージェント用の設定:

# 各エージェント用のワークスペース作成
jj workspace add agent-1
jj workspace add agent-2
jj workspace add agent-3

# 各エージェントが並列で作業
# リベースはjjが自動で最適化

3. Project as Code:.context/ディレクトリ

my-project/
├── .context/
│   ├── AGENTS.md        # エージェント用の指示書
│   ├── ARCHITECTURE.md  # 現在のアーキテクチャ
│   ├── DECISIONS.md     # 重要な決定事項
│   └── STATE.md         # プロジェクトの現状
├── src/
└── package.json

AGENTS.mdの例:

# Agent Instructions

## Code Style
- Use functional programming where possible
- Prefer composition over inheritance
- All async operations must use Effect-TS

## Current Context
Working on: Real-time sync engine
Blocked by: WebSocket connection stability
Related files: src/sync/*, src/websocket/*

## DO NOT
- Modify database schema without updating ARCHITECTURE.md
- Use `any` type in TypeScript
- Skip error handling

MCP(Model Context Protocol)で無限の可能性

// context7やカスタムMCPサーバーでドキュメントを直接注入
import { MCPServer } from '@modelcontextprotocol/server';

const docServer = new MCPServer({
  name: 'company-docs',
  version: '1.0.0',
  
  async getContext(query: string) {
    // 社内ドキュメント、API仕様、過去の議事録を検索
    const relevantDocs = await searchVectorDB(query);
    
    // Markdown形式で返す(重要!)
    return relevantDocs.map(doc => 
      `## ${doc.title}\n${doc.content}`
    ).join('\n\n');
  }
});

リアルな実装例:3時間で作るSaaSプロダクト

昨日作ったPRiorityの実装プロセス:

Step 1: コンテキスト設計(30分)

# PRiority - GitHub PR Priority Marketplace

## Concept
Developers can pay to prioritize their PR reviews
Maintainers earn money for reviewing PRs faster

## Technical Requirements
- GitHub integration
- Stripe payment processing  
- Real-time PR status updates
- Fair queue algorithm

Step 2: Claude Codeとの対話(1時間)

# jujutsuでワークスペース準備
jj workspace add claude-frontend
jj workspace add claude-backend
jj workspace add claude-infra

# 並列実装
claude "Build React frontend from .context/SPEC.md"
claude "Implement Stripe webhook handlers"
claude "Setup GitHub Actions for auto-deploy"

Step 3: デプロイ(30分)

# .github/workflows/instant-deploy.yml
name: AI-First Deploy
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy to Vercel
        run: vercel --prod --token=${{ secrets.VERCEL_TOKEN }}

Business as Code:会社全体をMarkdownで動かす

# company-state.md

## Current MRR: ¥4,500,000

## Active Experiments
- A/B Test: onboarding flow (ending: 2025-02-01)
- Feature flag: AI-powered suggestions (10% rollout)

## Key Metrics (updated: 2025-01-27 03:00 UTC)
- DAU: 12,456 (+12% WoW)
- Churn: 2.3% (-0.5% from last month)
- NPS: 71

## Strategic Focus This Week
1. Fix WebSocket stability issues (P0)
2. Ship collaborative editing (P1)
3. Optimize LLM token usage (P2)

AIエージェントはこのファイルを読んで、自動的に優先順位を理解します。

エンジニアが今すぐ始められること

1. 小さく始める

# 今日から始められる第一歩
mkdir .context
echo "# Project Context" > .context/README.md

2. AIとペアプロする時の鉄則

// ❌ Bad: 曖昧な指示
// "Make this faster"

// ✅ Good: 計測可能な指示
/**
 * Optimize this function:
 * Current: 340ms for 10k items
 * Target: <100ms
 * Constraints: Memory usage <50MB
 */

3. 毎日1つ、古い前提を疑う

月曜日:「DBマイグレーションは危険」→ Event Sourcingなら常に安全
火曜日:「テストは後で書く」→ AIが同時に書く
水曜日:「認証は複雑」→ Clerk/BetterAuthで5分
木曜日:「スケーリングは難しい」→ Edgeランタイムで自動
金曜日:「モニタリングは大変」→ OpenTelemetryで自動計装

破壊的な可能性:自分たちが作れる未来

今すぐ作れる・必要とされているツール

  1. Context Manager for Teams

    • Slack/Discord/Notionの会話をMarkdownに構造化
    • 収益モデル:使用量課金(座席課金ではない!)
  2. AI-First IDE

    • コードではなくコンテキストを中心にした開発環境
    • .context/ディレクトリを第一級オブジェクトとして扱う
  3. Markdown-Native Database

    • SQLiteのようにシンプル、でもMarkdownネイティブ
    • AIエージェントが直接読み書き可能
  4. Effect-TS Visual Debugger

    • 複雑なEffect chainを視覚化
    • AIが最適化提案を生成
  5. Business Metrics as Code Platform

    • 全社メトリクスをGit管理
    • AIが異常検知と改善提案を自動生成

最後に:エンジニアとして生きる最高の時代

10年前、「フルスタックエンジニア」は夢物語でした。
5年前、「一人でSaaSを作る」は限界がありました。
今日、一人で企業価値10億円のプロダクトが作れる

必要なのは:

  • 古い常識を捨てる勇気
  • 毎日実験する好奇心
  • 3時間で出荷する速度

コードを書くのが仕事だった時代は終わりました。

価値を生み出すのが仕事の時代が始まりました。

そして、その価値を最速で形にできるのは、新しいパラダイムを理解したエンジニアだけです。

今夜も眠れません。
作りたいものが多すぎて。

君は、何を作りますか?


📚 参考リンク

🚀 次のアクション

  1. .context/ディレクトリを作る
  2. Effect-TSを一つの関数で試す
  3. 今晩、何か小さなツールを3時間で作って公開する

新しい世界は、君のキーボードから始まる。

Discussion