AIファーストで全てを書き直す:エンジニアが知るべき新パラダイム
はじめに:コードを書くのをやめた日
先週、3日かけて書いていたTypeScriptのコードを全て捨てました。
代わりに、Claudeと30分話して、同じ機能を2時間で実装しました。しかも、元のコードより品質が高い。
これは「AIでコーディングが速くなった」という話ではありません。我々がソフトウェアを作る方法が、根本から変わったという話です。
Context is King:なぜMarkdownが最強なのか
なぜか?
- LLMのトークン効率: MarkdownはJSONより平均30%少ないトークンで同じ情報を表現
- 文脈の保持: 人間の思考プロセスをそのまま保存できる
- バージョン管理: Git diffが人間にも読みやすい
新しいツールスタック:学習曲線はもう関係ない
1. Effect-TS vs 素のTypeScript
❌ 従来:シンプルだが脆い
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:冗長だが堅牢
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が自動で最適化
.context/
ディレクトリ
3. Project as Code: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で自動計装
破壊的な可能性:自分たちが作れる未来
今すぐ作れる・必要とされているツール
-
Context Manager for Teams
- Slack/Discord/Notionの会話をMarkdownに構造化
- 収益モデル:使用量課金(座席課金ではない!)
-
AI-First IDE
- コードではなくコンテキストを中心にした開発環境
-
.context/
ディレクトリを第一級オブジェクトとして扱う
-
Markdown-Native Database
- SQLiteのようにシンプル、でもMarkdownネイティブ
- AIエージェントが直接読み書き可能
-
Effect-TS Visual Debugger
- 複雑なEffect chainを視覚化
- AIが最適化提案を生成
-
Business Metrics as Code Platform
- 全社メトリクスをGit管理
- AIが異常検知と改善提案を自動生成
最後に:エンジニアとして生きる最高の時代
10年前、「フルスタックエンジニア」は夢物語でした。
5年前、「一人でSaaSを作る」は限界がありました。
今日、一人で企業価値10億円のプロダクトが作れる。
必要なのは:
- 古い常識を捨てる勇気
- 毎日実験する好奇心
- 3時間で出荷する速度
コードを書くのが仕事だった時代は終わりました。
価値を生み出すのが仕事の時代が始まりました。
そして、その価値を最速で形にできるのは、新しいパラダイムを理解したエンジニアだけです。
今夜も眠れません。
作りたいものが多すぎて。
君は、何を作りますか?
📚 参考リンク
🚀 次のアクション
-
.context/
ディレクトリを作る - Effect-TSを一つの関数で試す
- 今晩、何か小さなツールを3時間で作って公開する
新しい世界は、君のキーボードから始まる。
Discussion