はじめに:開発の複雑化と「書く時間」の限界
こんにちは!TubeLingo開発チームです。 皆さんが使っている語学学習プラットフォーム「TubeLingo」は、日々新しい機能を追加しています。しかし、機能が増えるにつれて、プログラムのコードはどんどん複雑になっていきました。
その結果、エンジニアが 「コードを書く時間」 よりも、 「仕様を確認したり、エラーの原因を探したりする時間」 の方が長くなってしまうという問題に直面しました。
そこで私たちは、開発ツールをこれまでの「VS Code」や「Cursor」から、Googleの最新ツール 「Google Antigravity」 へと切り替える決断をしました。今回は、なぜその選択をしたのか、そしてAIと一緒に働くコツについてお話しします。
AIは単なる「補助」から「パートナー」へ
1. ツール選定:AIは「副操縦士」か「実行部隊」か
移行にあたって、私たちは2つの強力なAIツールを比較しました。
✈️ Cursor (カーソル)
- コンセプト: 副操縦士 (Co-pilot)
- 役割: 人間が書き、AIが補完する
- 強み: ファイル単体の高速コーディング
🤖 Google Antigravity
- コンセプト: 実行部隊 (Agent)
- 役割: 人間が指示し、AIが実装する
- 強み: プロジェクト全体の機能実装
なぜAntigravityを選んだのか?
TubeLingoのような複雑なアプリ開発では、単にコードを書くだけでなく、 「コマンドを実行し、ブラウザで動作確認し、エラーがあれば直す」 という一連の作業が必要です。
Antigravityは、AIが自分の「手」を使ってこれらの作業を自律的に行える点が決め手となりました。
2. AIに「手」が生えた!驚きの機能「Skills」
Antigravityを使って最も驚いたのが 「Skills(スキル)」 という機能です。これは文字通り、AIに手足を与えるものです。
- Terminal Skill: AIが自分でコマンドを実行し、エラーが出れば勝手にログを読んで修正案を考えます。
- File Edit Skill: 提案だけでなく、実際にファイルを編集・保存してくれます。
- Browser Skill: AI専用のブラウザを立ち上げ、ボタンをクリックして動作テストを行います。
例えば、「ライブラリの更新チェックをして」と頼むと、AIは勝手に調査を行い、結果をレポートとして提出してくれます。人間はそれを見て「OK」を出すだけです。
3. 賢いAIをどう使い分ける?
AIにも「得意・不得意」があります。私たちはコストと性能のバランスを考えて、2つのモデルを使い分けています。
- Gemini 3 Pro (メイン担当)
- 非常に高速で、大量のコード(コンテキスト)を一度に読み込めます。普段の開発はほぼこれで完結します。
- Claude 3.5 Sonnet (専門家担当)
- 複雑なロジックや、どうしても解決できない問題に直面した時の「セカンドオピニオン」として活躍します。
4. AIを指揮するコツ:「コンテキスト管理」
AIは非常に優秀ですが、すべての情報を一度に渡すと混乱して 「ハルシネーション(嘘)」 をつくことがあります。 AIをうまく指揮するためには、情報の渡し方(コンテキスト管理)が重要です。
① 「@」でピンポイントに指示する
「日記機能を直して」と曖昧に言うのではなく、「 @DiaryInputForm.tsx と @useTopicLogic.ts を見て修正して」と具体的にファイル名を指定します。これだけで精度が劇的に上がります。
② 机の上をきれいにする (Clean Desk)
AIは「現在開いているタブ」を最優先で参照します。別の作業に移る時は、一度すべてのタブを閉じ、必要なファイルだけを開き直すことで、AIの集中力を維持させましょう。
③ 逆検索 (Impact Analysis)
逆に、どのファイルを修正すべきか分からない時は、AIに探させます。 例えば、「 トピック生成機能に関係するファイルをすべて特定し、役割を教えて 」と指示します。これだけで、人間が見落としていた意外な依存関係をAIが洗い出してくれます。
5. AIの「人格」を定義する:Project Rulesの活用
AIエージェントを単なる「検索ツール」から「専属のリードエンジニア」へと進化させる最後のピースが、 System Prompt (Project Rules) の設定です。
Antigravity(およびCursor)では、プロジェクトルートに .cursorrules というファイルを配置することで、AIの挙動を永続的に定義できます。これは言わば、 AIエージェントのための「入社時のオンボーディング資料」 です。
TubeLingoでの設定例
私のプロジェクトでは、以下のようなルールを記述し、AIに「リードエンジニア兼メンター」としての役割を与えています。
.cursorrules Example
-
Role & Behavior あなたは「TubeLingo」のリードエンジニア兼専属メンターです。 単にコードを書くだけでなく、"Why"(なぜそうするのか)を教えながら開発をリードしてください。
-
Tech Stack (Strict)
- Framework: React + Vite
- Language: TypeScript (Any型は禁止。厳格な型定義を行うこと)
- Styling: Tailwind CSS
- Backend: Netlify Functions
-
Development Protocol
- Context First: いきなりコードを書かず、まずは関連ファイルを読み(Read File)、影響範囲を特定すること。
- Impact Analysis: 修正による副作用を考慮し、プランを提示してから実装に移ること。
- Verification: コード修正後は必ず
npm run devやtscを実行し、エラーがないことを自律的に確認すること。
この設定による変化
このファイルを置くだけで、開発体験は劇的に変わります。
- 「TypeScriptで書いて」と毎回言う必要がなくなる。
- 「Netlify Functionsの作法」をAIが常に意識してくれる。
- AIが勝手にテストコマンドを実行し、バグを潰してから報告してくれるようになる。
ツールの機能を最大限引き出すには、ツールへの「指示出し(Prompt Engineering)」そのものをコード化し、プロジェクトの一部として管理することが重要です。
✅ 設定後の確認方法(Verification)
ルールファイル(.cursorrules)を作成したら、本当にAIにその「人格」が宿ったか確認してみましょう。
Antigravityのチャット(Ctrl + L または Ctrl + E)を開き、新しいセッションで以下の質問を投げかけます。
User: 「現在の開発モードと、私の役割を確認してください。」
もし設定が正しく読み込まれていれば、AIは以下のように、定義した役割になりきって答えるはずです。
AI: 「はい、私はTubeLingoのリードエンジニア兼専属メンターです。現在は自律的なAgentモード(Skills有効)で動作しています。ご指示をどうぞ。」
これが返ってくれば、オンボーディングは成功です。AIはあなたの最強のパートナーとして動き出します。
まとめ:コーディングから「ディレクション」へ
Antigravityへの移行で、私たちの仕事は「コードを書くこと」から 「AIエージェントを指揮(ディレクション)すること」 へと変化しました。
細かいミスに悩む時間が減り、その分「どんな機能があればユーザーが喜ぶか?」という本質的な設計に時間を使えるようになりました。AIネイティブな開発環境は、エンジニアをよりクリエイティブな仕事へと導いてくれるツールだと感じています。
あなたもAIと一緒に、新しい語学学習を始めませんか?
YouTubeの「生の声」で学ぶ 📺
動画のURLを入力するだけ。
生のコメントやスラングをAIが解説します。
学んだことを、すぐに実践 ✍️
「自分」を主語にした日記を書いてみませんか?
AIチューターが自然な表現に添削します。
YouTubeの「生の声」で学ぶ 📺
動画のURLを入力するだけ。
生のコメントやスラングをAIが解説します。
学んだことを、すぐに実践 ✍️
「自分」を主語にした日記を書いてみませんか?
AIチューターが自然な表現に添削します。
