🤖 この記事は 2026-06-09 にFuturistic Imaginationの自動コンテンツパイプライン(Gemini 2.5 Flash)によって生成されました。
5月20日の朝7時、淹れたてのコーヒーを一口すする前に、私のスマートフォンが激しく振動した。
Slackの通知画面を開くと、真っ赤なエラーログが滝のように流れ落ちていた。Buffer APIの連携エラー、YouTube APIの認証トークン失効、そして自社メディアのSEO自動リライトパイプラインの停止。
Futuristic Imagination LLCが運営する11の自社オウンドメディア、そしてクライアントに提供しているGemini API搭載のシステムを含む、計10のプロジェクトが同時に悲鳴を上げていた。
元SESで、数々の炎上案件を這いつくばるようにして生き延びてきた私には、この手の「同時多発エラー」の嫌な予感が一瞬で理解できた。外部APIの仕様変更か、あるいは認証局のトークン更新処理におけるロジックのバグだ。
普通なら、複数のエンジニアが集まって緊急MTGを開き、影響範囲をスプレッドシートに洗い出し、分担を決めてから作業に入るだろう。しかし、Futuristic Imaginationにそんなまどろっこしい手順は存在しない。私と、私が開発したAI開発パートナー「Antigravity(アンチグラビティ)」の2人がいれば、1時間でこのカオスは鎮圧できる。
この記事では、あの極限の1時間に何が起きたのか、そして私たちがどのような技術とスタック、そして思想で開発に向き合っているのかを等身大に記録しておきたい。
安全弁を破壊する。「Antigravity」の制限解除という決断
エラーの原因は、複数のAPIを跨ぐOAuthトークンの自動更新処理における、Next.js(Version 16系)側のサーバーレス関数のタイムアウトだった。VercelのExecution Limitに引っかかり、トークンの更新が途中で途絶え、依存しているすべてのバッチ処理が連鎖的にクラッシュしていた。
影響範囲は10プロジェクト。通常、これらを一つずつ手作業で修正し、テストし、再ビルドをかけてデプロイしていては、丸一日あっても足りない。
私は即座に、自社で開発・運用しているAI開発エージェント「Antigravity」のセキュリティ設定を『Unrestricted(制限なし)』へと切り替えた。
普段は、コードの安全性を担保するためにいくつかのサンドボックス制限をかけている。だが、一刻を争う障害対応において、その安全弁はただの足枷でしかない。制限を解除されたAntigravityは、私のローカル環境のファイルシステムへの直接アクセス、APIの実行、そしてVercelのCLI操作権限を完全に掌握する。
「すべてのプロジェクトの `app/api/auth/refresh/route.ts` をスキャンし、タイムアウトを回避する軽量な非同期キュー処理に書き換えろ。認証処理はEdge RuntimeではなくNode.js環境に逃がす。TypeScriptのStrict Modeは絶対に崩すな」
ターミナルにプロンプトを叩き込む。Antigravityは瞬時に思考を開始し、ローカルにクローンされている10プロジェクトのソースコードを並列で解析し始めた。
完璧な型定義と、バイブコーディングがもたらすカタルシス
AIにコードを書かせる際、多くのエンジニアが「生成されたコードのコンパイルエラー」に悩まされる。しかし、当社のコードベースはTypeScriptの厳格なStrict Mode(厳密な型チェック)で制御されている。型定義が完璧に設計されていれば、AIがバグを生み出す余地は極端に狭まる。
Antigravityは、Next.js 16の新しいメタデータ定義や、Gemini 2.5 Flash APIの最新スキーマに適合したクリーンな型安全コードを、秒速で出力していく。
「Buffer APIのレスポンスオブジェクトの型が古い。型定義ファイルをアップデートし、インターフェースを再定義した。これで型チェックは通る」
画面に流れるログを見ながら、私は脳内でコードをビルドし、Antigravityの判断が正しいかを見極める。これが、私たちが大切にしている「バイブコーディング」だ。技術の仕様を体で理解しているからこそ、AIとグルーヴ感を共有し、言葉を交わすように開発を進められる。
修正されたコードは、次々とGitにコミットされ、VercelのDeploy Hookへと送られていく。
// Antigravityが修正した非同期リフレッシュ処理の一部
export const dynamic = 'force-dynamic';
export const maxDuration = 60; // タイムアウトを最大まで引き伸ばし、処理を確実にする
export async function POST(request: Request) {
// 厳格な型安全性を確保した上で、複数のトークンを並行して更新
const payload: RefreshPayload = await request.json();
const results = await Promise.allSettled(
payload.tokens.map(token => refreshOAuthToken(token))
);
// エラーハンドリングとログ監視システムへの即時通知
// ...
}
ターミナル上では、10個のプロジェクトのビルドプロセスが並列で走り、Vercelのダッシュボードに次々とグリーンの「Ready」マークが灯っていく。
YouTube APIの再認可、BufferのSNSスケジューリングの復旧、そして自社オウンドメディアのSEO自動リライトエンジンの再稼働。
時計の針が8時を指す前、すべてのシステムは元通り、いや、以前よりも強固な非同期設計へとアップデートされて完全復旧した。スマホを握りしめてから、ちょうど58分後のことだった。
「自社実証ファースト」だから、トラブルすらプロダクトの血肉になる
このトラブル対応の間、私はクライアントへの謝罪文を書くことも、上司への報告書を作ることもしていない。なぜなら、私自身がこのシステムの最大かつ最も執拗なヘビーユーザーだからだ。
私たちは、自分たちが毎日使い倒し、血を流し、改善を繰り返したものしか世の中に提供しない。「架空の実績」や「綺麗にパッケージングされただけのAIツール」を売るビジネスには、1ミリの価値も感じない。
今回、Antigravityの制限を解除して10プロジェクトを爆速で復旧させたという実績と、その過程で得られた「複数プロジェクトの一括デプロイと型定義の自動同期」という知見は、そのまま当社の採用コンテンツ自動化SaaSである「補給不要の自販機型」採用システムの機能へと昇華される。
自社メディアを11サイト運営し、累計1,500本以上の記事をAIで自動生成・最適化してきた泥臭い実績。Google Search ConsoleのデータをAPIで自動収集し、GA4と連携させて低順位の記事を勝手にリライトするシステム。これらはすべて、こうした泥臭いカオスを、技術の力でスマートにねじ伏せてきた結果として存在している。
私たちが求めているのは、こうした「技術と自動化の極限」を、自らの手を動かして追求したいエンジニアだ。
形骸化したMTGで時間を浪費したい人、指示された仕様書通りにしかコードを書けない人には、当社の環境はただの荒野に見えるだろう。だが、自分の書いたコードが、AIの力で10倍、100倍の生産性となり、1人で数万人規模のメディアを動かすエンジンになることに興奮を覚える人にとって、これ以上の遊び場はない。
今日も自動で4本の記事がパブリッシュされ、GSCのデータを基にしたリライトが3件完了した。私の手は、1文字もコードを叩いていない。