「またAIに嘘をつかれた」と嘆く前に知るべきこと
深夜2時、静まり返ったオフィスでデバッグ作業の真っ最中。「このライブラリの使い方はこうです」とAIが自信満々に提示したコードをコピペして実行する。しかし、ターミナルに表示されるのは無慈悲なエラーログ。調べてみれば、そのAPIは1年以上前に廃止されていた——。
開発やクリエイティブ制作の現場で、そんな経験をして静かにブラウザのタブを閉じたことはないでしょうか。
クリエイティブテックの領域をはじめとするシステム開発やUI/UXデザインの実装現場では、日々新しい技術が検証され、プロトタイピングが繰り返されています。その中で、AIの「もっともらしい嘘(ハルシネーション)」は依然として大きな課題です。GitHub Copilotなどの登場によって「AIにコードを書かせる」ことにはすっかり慣れた現在でも、この問題はつきまといます。
事実、GitHub Copilot自体も大きな進化を遂げています。公式のベストプラクティスとして、従来の単なるインライン補完から一歩進み、.github/copilot-instructions.mdを用いたカスタムインストラクションの設定や、詳細なコメントによるコンテキスト提供が推奨されるようになりました。また、VS CodeのChat拡張への機能統合や、エージェントモード、CLIの活用など、開発者の意図をより正確に汲み取るためのワークフローへと移行が進んでいます。
しかし、それでもなお「AIに正しく文脈を理解させる」という壁に直面する場面は少なくありません。
「プロジェクトの複雑な背景や、昨日リリースされたばかりの最新技術を、もっと正確に理解できるAIはないのか?」
そう考えたとき、議論の俎上に載るのは、現在エンジニア界隈で熱い視線を浴びている2つのツール、「Phind(ファインド)」と「Cursor(カーソル)」でしょう。
どちらも開発者を強力に支援するAIですが、そのアプローチは対照的です。Phindは「検索エンジン」から進化し、Web上の膨大な最新情報を武器にします。一方、Cursorは「VS Codeのフォーク」として生まれ、ローカルにあるプロジェクト全体のコードベースを深く理解することを武器にします。特にCursorは、Composer(マルチファイル編集)でプロジェクト全体を把握させてから編集依頼を行ったり、Agent Mode(自律的なタスク実行)を活用したり、⌘Kで素早くインライン修正を行ったりと、ツール固有の実践的なアプローチが次々と生み出されています。
制作現場では「結局、どっちを使えばいいの?」という疑問がよく聞かれますが、結論から言えばその問い自体が少しずれています。なぜなら、これらは「外部知(Web)」と「内部知(Local)」という、全く異なる領域を専門としているからです。
本記事では、極端な2つの検証シナリオを設定し、両者の決定的な「構造差」を明らかにします。一つはドキュメントすらまともに整備されていない「最新ライブラリの実装」。もう一つは、長年の継ぎ足しでスパゲッティ化した「大規模レガシーコードの改修」です。
この検証を通じて、チームの生産性を最大化し、技術的な実現可能性とユーザーの利便性を両立させるための現実的な解を導き出します。単なる機能比較ではなく、制作フローそのものを見直すきっかけとなるはずです。
AIエディタのRAG品質を決定づける「外部知」と「内部知」のバランス
検証に入る前に、なぜこれほどまでにツールによって回答が異なるのか、その裏側にある技術的背景を共有します。ここを理解することで、検証結果への納得感が段違いに変わるはずです。
なぜLLM単体では実務に耐えられないのか
ChatGPTやClaudeといった大規模言語モデル(LLM)は極めて優秀ですが、単体では実務において致命的な弱点を抱えています。それは「学習データの鮮度」と「プロジェクト固有知識の欠如」です。
LLMは過去に学習したデータに基づいて回答するため、昨日リリースされたフレームワークの破壊的変更や、APIの廃止情報は知り得ません。例えば、OpenAIの公式情報(2026年1月時点)によると、GPT-4oやGPT-4.1といった旧モデルは2026年2月に廃止され、より長い文脈理解やツール実行能力を備えたGPT-5.2(InstantおよびThinking)が新たな主力モデルへと移行します。こういった最新のモデル移行情報や、それに伴うAPIの仕様変更などは、リアルタイムな外部情報にアクセスできなければAIは把握できません。実際、公式ドキュメントで推奨されている最新の手法ではなく、学習時点での古いベストプラクティスを自信満々に提示してしまうケースは珍しくありません。
また、現在進行中のプロジェクトの仕様や、チーム独自のコーディング規約も当然ながら把握していません。
これらを補う技術がRAG(Retrieval-Augmented Generation:検索拡張生成)です。一言で表すなら、LLMに質問を投げる前に、関連する情報を外部から検索(Retrieve)し、それをプロンプトに含めることで、回答の精度を高める技術です。PhindもCursorも、このRAGをコア技術として採用していますが、「どこから情報を取ってくるか」というアプローチが対照的です。
Web検索型(Phind)とローカルインデックス型(Cursor)の構造的違い
Phindの本質は「開発者向けに最適化された検索エンジン」です。質問が入力されると、Phindは高速にWebをクロールし、公式ドキュメント、GitHubのIssue、Stack Overflow、個人の技術ブログなどから最新の関連情報を集めます。これが、常に更新され続ける「外部知」へのアクセスです。旧モデルから新モデルへの移行期など、最新のベストプラクティスが日々変化する状況では、このWeb検索力が大きな武器となります。
対してCursorの本質は「プロジェクトのコードベースを熟知したアシスタント」です。Cursorはプロジェクト内の全ファイルをスキャンし、ベクトル化してインデックスを作成します(Codebase Indexing)。質問が来ると、Webではなく、手元にあるローカルファイル群から関連する定義や依存関係を即座に引き出します。これが、プロジェクト固有の文脈を持つ「内部知」です。例えば、CursorのComposer機能でプロジェクト全体を把握させてから大規模な編集依頼を出したり、⌘Kで素早くインライン修正を行ったりする際、この内部知が極めて高い精度とクリエイティビティを発揮します。
検証のための3つの指標:鮮度・文脈・再現性
今回の比較検証では、以下の3つの軸で評価を行います。
- 情報の鮮度(Freshness)
- リリース直後の変更や、公式に廃止(Deprecated)となった機能への対応力。
- 既に使えなくなった「古い書き方」や「廃止されるGPT-4oなどの旧モデル」を提案してこないか。旧モデル廃止に備えた、新しいGPT-5.2ベースのコードへの移行手順を正しく提示できるか。
- 文脈の理解(Context Awareness)
- プロジェクト固有のコーディング規約や、ファイル間の複雑な依存関係の把握力。
- 「単体では動くが、このプロジェクトの設計思想には合わないコード」になっていないか。
- 再現性と具体性(Reproducibility)
- 提示されたコードが修正なしでそのまま動作するか。
- エラーが出た際に、自律的に原因を特定し修正案を提示できるか。
これらは、クリエイティブな制作フローを維持するために不可欠な要素です。AIが生成したコードの裏取り調査に時間を奪われていては、本末転倒となります。
検証①:ドキュメントが未整備な「最新ライブラリ」の実装
最初の検証は「鮮度」の戦いです。AIにとって最も過酷な環境、つまり学習データに含まれていない最新技術を扱わせます。
シナリオ設定:リリース直後のAIフレームワークを利用
ここでは、仮定として「LangChain」や「LlamaIndex」のような進化の速いライブラリの、リリースから1週間以内の破壊的変更(Breaking Changes)を含むバージョンアップを想定します。具体的には、主要なクラスのインポートパスが変更され、古いメソッドが廃止された状況で、新しいAPIを使った実装を依頼します。
プロンプト:
「最新のv0.X.Xを使用して、RAGパイプラインを構築するコードを書いてください。非推奨の
OldChainクラスは使わず、新しいNewRunnableインターフェースを使用すること。」
Phindの挙動:検索エンジンの面目躍如
Phindにこのプロンプトを投げると、即座に「Searching...」のステータスが表示され、Web検索が走ります。ここでの挙動は見事なものでした。
結果:
Phindは、公式のリリースノートだけでなく、GitHub上の「Migration Guide(移行ガイド)」や、開発者が投稿したばかりのIssueの議論まで拾い上げました。
出力されたコードは、指定通り新しいNewRunnableインターフェースを使用しており、インポートパスも最新のものに修正されていました。特筆すべきは、コードの横に「ソース元」へのリンクが明示されている点です。「この書き方は、この公式PR(プルリクエスト)に基づいています」という根拠が示されるため、実装時の安心感が違います。
Phindの強みは、「Web上の集合知」へのアクセス速度です。ドキュメントがまだ整備されていなくても、GitHub上の生のコードや議論を見つけ出し、それを正解として提示できる。これは、未知のエラーに遭遇した際や、最先端の技術スタックを採用する際の強力な武器になります。
Cursorの挙動:情報の孤島での苦戦
一方、Cursor(ChatGPTモード、Web検索OFFまたは簡易検索)で同じプロンプトを実行すると、典型的なハルシネーションが発生する傾向があります。
結果:
Cursorは、学習データに含まれる「古い知識」に基づいて、自信満々にOldChainクラスを使ったコードを生成しがちです。プロンプトで「使わないで」と指示したにもかかわらず、新しいインターフェースの具体的な仕様を知らないため、無理やり古い知識と混ぜ合わせた、「存在しないメソッドを持つ架空のクラス」をでっち上げてしまうケースが見られます。
もちろん、CursorにもWeb検索機能(@Web)はありますが、Phindのような「開発特化の検索ランキングアルゴリズム」を持っていないため、検索結果のノイズ除去に失敗することがあります。一般的なSEO記事に引っ張られ、古い解説記事を参考にしてしまうケースが見受けられました。
このラウンドは、圧倒的な「外部知」へのアクセス能力を持つPhindの優位性が際立ちます。
検証②:複雑な依存関係を持つ「大規模レガシーコード」の改修
次は「文脈」の戦いです。ここではWebの情報は役に立ちません。正解はプロジェクトの中にしかないからです。
シナリオ設定:スパゲッティコードの機能追加
対象とするのは、数年間にわたり継ぎ足し開発されてきた数百ファイルの規模を持つWebアプリケーションです。バックエンドは複雑なクラス継承がなされ、独自のユーティリティ関数が各所に散らばっています。ドキュメントは皆無です。
タスク:
「
OrderServiceクラスにあるprocessPaymentメソッドに、新たにDiscountCalculatorを使った割引ロジックを追加してください。ただし、既存のエラーハンドリングフロー(CustomErrorHandler)を壊さないようにしてください。」
Cursorの挙動:驚異的な「空気を読む」力
Cursorでプロジェクトを開き、Cmd+K(またはCtrl+K)で指示を出します。この時、Cursorはバックグラウンドでインデックス化されたコードベース全体を参照します。
結果:
Cursorが出力したコードは、驚くほど「プロジェクトに馴染んで」出力されます。
- 依存関係の解決: 指示には書いていない
DiscountCalculatorのインポート文を、正しいパスから自動で追加します。 - スタイルの統一: プロジェクト内で使われている独特な変数名の命名規則や、インデントのスタイルを的確に模倣します。
- 安全性の確保:
CustomErrorHandlerがどのように実装されているかを別ファイルまで参照し、その仕様に合わせたtry-catchブロックを生成します。
CursorのRAGは、単にキーワードマッチしているだけではありません。コードの構造(AST:抽象構文木)レベルで依存関係を理解しているため、「このメソッドを呼ぶなら、この引数オブジェクトにはこのプロパティが必要だ」という暗黙の了解まで汲み取ってくれます。
Phindの挙動:コンテキスト不足による「一般論」の限界
同じタスクをPhindに投げます。Phindはブラウザベース(またはVS Code拡張)ですが、ローカルファイルのインデックス化能力には制限があります。
結果:
Phindは、一般的な「良いコード」としては正解を出します。しかし、このプロジェクトにおいては「不正解」となることが多いです。
- インポートパスが推測であり、実際のディレクトリ構造と異なっている。
- エラーハンドリングが一般的な
Exceptionクラスを使っており、プロジェクト固有のCustomErrorHandlerの作法に従っていない。
Phindにこれを正しく解かせるには、関連するファイル(OrderService.ts, DiscountCalculator.ts, CustomErrorHandler.tsなど)の中身を全てコピー&ペーストしてプロンプトに含める必要があります。しかし、数百ファイルの依存関係を手動で選別して渡すのは現実的ではありません。
このラウンドは、プロジェクト全体の文脈を掌握するCursorの優位性が明らかです。
構造分析:なぜ回答品質にこれほどの差が生まれるのか
検証結果から、両者の得意領域が明確に分かれました。では、技術的に何がこの差を生んでいるのでしょうか。RAGのパイプライン(情報の流れ)を分解して見てみましょう。
取得した情報をLLMにどう渡しているかの技術的考察
最大の違いは、「情報の取得元(Retriever)」と「再ランク付け(Reranker)」の設計思想にあります。
Phindのパイプライン:
- ユーザーの質問を検索クエリに変換(Query Expansion)。
- 複数の検索エンジンAPIを叩き、上位のWebページを取得。
- 各ページの内容をスクレイピングし、質問に関連する部分(チャンク)を抽出。
- LLMにとって読みやすい形式に要約し、コンテキストとして注入。
- ポイント: Webという広大な海から、いかに「今必要な最新情報」を釣り上げるかに特化しています。SEOノイズを除去し、コードスニペットを優先的に抽出するアルゴリズムが優秀です。
Cursorのパイプライン:
- ローカルファイルのコードをチャンク分割し、Embedding(ベクトル化)してローカルDBに保存。
- ユーザーの質問もベクトル化し、類似度の高いコードチャンクを検索(Vector Search)。
- さらに、直近で開いていたファイルや、カーソル位置の周辺コードを「強いコンテキスト」として優先採用。
- これらをLLMのコンテキストウィンドウに詰め込む。
- ポイント: 「今見ているファイル」と「関連する別ファイル」の関連性を計算する精度が極めて高いです。特に
@Codebase機能は、単純なベクトル検索だけでなく、コードの参照関係(Go to Definitionのような構造解析)も加味していると考えられます。
トークンウィンドウの使い方の違い
LLMが一度に処理できる情報量(コンテキストウィンドウ)には限りがあります。情報を詰め込みすぎると、重要な指示を忘れたり、推論速度が落ちたりします。
Phindは、Web上の情報を要約して渡すことで、トークン消費を抑えつつ広範な知識を扱います。一方、Cursorは、生のコードをそのまま渡すことを重視します。コードは「要約」してしまうと意味が変わってしまう(変数名一つ間違えるだけで動かなくなる)ため、Cursorのアプローチは実装の正確性を担保する上で理にかなっています。
結論:開発フェーズに応じた「ハイブリッド運用」のベストプラクティス
「PhindとCursor、どちらを採用すべきか?」
この問いに対する答えは、「両方を導入し、開発フェーズに応じて使い分ける」です。制作プロセスを細かく分解していくと、それぞれのツールが最も輝く瞬間が明確に見えてきます。単一のツールで全てを解決しようとするのではなく、適材適所で組み合わせることが、技術的な実現可能性とユーザーの利便性を両立させるための現在の最適解と言えます。
新規技術調査・プロトタイプ作成は「Phind」
プロジェクトの立ち上げ期(0→1フェーズ)や、未知のライブラリの導入検討時は、検索と推論に特化したPhindが圧倒的な効力を発揮します。
- 用途: 技術選定の比較、複雑なエラーの根本原因調査、最新APIの実装仕様の確認、検証用サンプルコードの生成。
- アクション: まずブラウザでPhindを開き、「〇〇という要件を実現するための、現在のベストプラクティスは?」と問いかけます。公式ドキュメントや最新の技術ブログを横断的に検索して回答を組み立てるため、自ら情報を探し回る時間を大幅に短縮できます。
詳細設計・実装・リファクタリングは「Cursor」
プロジェクトが具体的に動き出し、コードベースが複雑に育ってきた段階(1→10フェーズ)では、Cursorへ主軸を完全に移します。
- 用途: 大規模な機能追加、複数ファイルにまたがるバグ修正、システム全体のリファクタリング、コードレビューの自動化、テストコードの網羅的な生成。
- アクション: エディタをCursorに切り替え、プロジェクト固有の文脈を活用します。例えば、Composer機能を使ってプロジェクト全体を把握させてから複雑な編集依頼を出したり、
⌘Kで素早くインライン修正を行ったりします。また、@codebaseコマンドを活用して「このコードを現在のプロジェクトの設計思想や命名規則に合わせて書き換えて」といった高度な指示を出すことで、既存コードとの整合性を保った実装が可能です。
両者を組み合わせた最強の開発ワークフロー
実務において最も生産性が高まるのは、以下の連携フローです。
- Phindで外部知を収集: 実現したい機能や直面している課題についてPhindに質問し、最新のライブラリ情報や推奨される実装パターンを特定する。
- 知識の抽出と移植: Phindが生成した信頼性の高いサンプルコードや、参考となる公式ドキュメントのURLをコピーする。
- Cursorで内部知へ適応: Cursorを開き、コピーした情報をプロンプトに貼り付けつつ、「このサンプルとベストプラクティスを参考に、現在のプロジェクトの
UserModuleに機能を組み込んで」とAgent Modeで自律的な実装を指示する。
この手順を踏むことで、「外部知(最新の技術動向)」を「内部知(プロジェクト固有の文脈)」に高精度で変換して適用することができます。これこそが、AI駆動の制作フローにおいて求められる中核的なスキルセットです。
導入に向けた次のステップ
GitHub CopilotがVS CodeのChat拡張に統合されエージェント機能が強化されるなど、AIコーディング支援ツール全体が急速な進化を続けています。しかし、「Copilotだけ」あるいは「無料のChatGPTだけ」という単一ツールの運用に留まっていると、PhindやCursorが提供する特化型の恩恵を取りこぼすことになります。制作効率の差は、そのままビジネス展開のスピード差や、最終的なUI/UXの品質向上に割けるリソースの差に直結します。
まずは、テックリードや主要な制作メンバーで、このハイブリッド運用を一定期間テスト導入してみてください。コードの実装スピードが上がるだけでなく、「調べ物」や「文脈の共有」にかかる認知負荷が劇的に下がることを実感できるはずです。
本格的な導入にあたっては、自社のセキュリティポリシー(CursorのPrivacy Modeの徹底など)に合わせたガイドラインを策定し、段階的にチーム全体へ定着させていくアプローチが有効です。最適なツール選定と運用ルールの構築が、制作組織のポテンシャルを最大限に引き出す基盤となります。
コメント