私は仕事でも個人的なプロジェクトでも、さまざまな AI コーディング ツールを試してきました。 GitHub Copilot は、私のツールボックスに最近追加されたものです。時には生産性が向上することもありますが、私は非常に多くの困難に直面してきたため、良いことよりも害の方が大きいと感じています。
AI は間違いを犯す可能性があります。間違いが多かった。しかし、GitHub Copilot を使用するまでは、これほどひどいことになるとは思いませんでした。どのような間違いがあるのですか?
変数名の間違い。あるファイルでは変数名を「phone」として定義し、別のファイルでは同じ変数を「phone_number」として定義しています。データ型が一致しません。 1 つのファイルでは、変数が日時型として正しく定義されています。ただし、別のファイルでは、同じ変数を文字列型として設定します。
そして、クリーンなコーディングとベストプラクティスに従うことから始めさせないでください。ユーティリティ関数を生成した後、それを使用せずにどこにでも同じ機能を記述する場合があります。最近のプロジェクトで、コードに競合状態が発生しました。
ああ、間違いを明らかにするように要求すると、どのように応答するか想像してください。 「まったくその通りです。むしろこうすべきでした。」

NotebookLM には情報を収集するだけではありません。
LLM ボットが指示したこと以外のすべてを実行しているのを見つけたことがありますか? GitHub Copilot は、それを次のレベルに引き上げることもあります。計画を立てたり、何かについて話し合ったりするよう依頼すると、機能全体の実装が始まります。これは、私がよく直面するもう 1 つの一般的なシナリオです。
私はバックエンドとして PostgreSQL と Python を使用しています。データベースの移行を行う必要があります。 GitHub Copilot にデータベース モデルの実装を依頼すると、それを超えて、Alembic を使用して移行ファイルが生成され、次に移行を実行しようとしますが、(バージョンの不一致のため当然のことながら) 失敗し、コードベースを読み取り、移行ファイルを変更し、再度移行を試行して再び失敗し、このループにはまってしまいます。
移行に関連することを何もしないように指示しない限り、移行は毎回そうしようとします。コーディング エージェントのデフォルトの動作は、指定されたプロンプトに厳密に準拠し、それ以上のことは行わないことです。つまり、それが正しく実行できれば、一般的には悪いことではありません。しかし、間違いを犯し、その間違いのループにはまってしまうと、多くの時間とリソースが失われます。

Python の世界へようこそ!
コーディング エージェントの使用で最も優れている点の 1 つは、ファイル自体に変更を加えられることです。コードをコピーし、入力する場所を見つけてそこに貼り付ける必要はありません。エージェントがこれらすべてを行います。その後、そのコード スニペットを確認して、それを採用するか拒否するかを決定できます。
ただし、最近、GitHub Copilot が単にスニペットをファイルに書き込むのではなく、更新されたコードでファイル全体を再生成するという問題を確認しました。ファイル全体が新しいファイルとして表示され、コードもすべて新しいため、新しい変更が何であるかわからないという問題が発生します。
新しい変更を理解するにはファイル全体を最初から確認する必要があるため、これではエージェントを使用する目的が損なわれます。最近のセッションでは、エージェントが正しい方法で行うよりも頻繁にこれを行うことがわかりました。実際、最小限の変更を加えるように指示しただけで、エージェントがファイル全体を書き換える場合は、さらにイライラします。
コーディング エージェントの質問モードでは、議論したり、疑問を解消したり、説明したり、システムを計画したりするために (もちろん) 質問することができます。あるいは、それが本来あるべき姿だった。ただし、GitHub Copilot では、Ask モードは機能を簡略化した Agent モードのように動作します。
デバッグやバグ修正をしているときに、このようなことがよく起こります。私は質問モードで Copilot とエラーを共有し、説明と解決方法を教えてもらいます。これを行うのは、ボットを盲目的に信じるのではなく、エラーを正しく理解し、解決方法を学ぶためです。理想的なシナリオでは、GitHub Copilot がバグを説明し、その原因となっているコード スニペットを共有し、それを修正するために必要な変更を提案し、場合によってはコードも共有します。
ただし、場合によっては、まだエージェント モードであるかのように動作することがあります。コンテキストを取得してファイルを読み取り、それ自体でファイルを更新しようとしますが、そうあるべきではありません。場合によっては、空白のコード スニペットが共有されることもあります。また、エージェント ツールが無効になっており、ファイルを更新できないというメッセージが表示されることもあります。
最悪の部分は?応答を終えた後、「バグを引き起こしていたコードへの変更はすべて行いました。今すぐ修正する必要があります。」などの内容が誤って言われます。
うーん、いや?これは怪我にさらに侮辱を加えるようなものです。 Copilot を使い始めて以来、Ask モードは私の目的にはまったく役に立ちませんでした。必要なリソースは言うまでもなく、最小の目的でエージェント モードを使用するのはやりすぎのように感じられます。

私は AI コーディングを無視していましたが、より優れた副操縦士、コンテキスト、ガードレールのおかげで、最終的にはほとんどの日で AI コーディングが役立つようになりました。
これらをすべて終えた後、Claude Code や Cursor などの別のコーディング ツールに切り替えようと考えています。私は、時折のサイド プロジェクトや迅速な開発のために、GitHub Copilot を今後も使用し続けるつもりです。できれば、その背後にあるチームが他の競合他社に匹敵するように改良できるよう取り組んでくれることを願っています。