🤖

未経験がAnkiのAddonを作りながらCopilot性能テスト

2024/01/07に公開

実験まとめ

Pythonと電子工作の基礎マニュアルを読んだレベルな私が、Copilotと一緒にどこまで出来るかをテストしました。結果、シンプル電子工作+Hook利用コーディングなら15時間[1]で作れました。

Copilotの印象として、一般的なコーディング知識は教えてくれるものの、プロジェクト特有のコードの解決には不向きという印象でした。なので、Copilotを扱う時のコツが2つあります:

  • 一般的なカスタム用の仕組み(API、Hook他)が開発側から用意されているか
  • 一般的でない仕組みの場合は、そのリファレンスがCopilotの取り込みやすい形で用意されているか

つまり、広く知れ渡ったツールで構成されたプロジェクトの表面をイジるだけなら最早Copilotの返信をコピペするだけで8割作業が完結します。しかしそれ以上の操作、例えば特異な仕様、リファレンスやリポジトリをAIが読み込めない環境、現実の物理特性が関わる組み込みな実装であればAIコピペでは足りません。そのあたりを境にして人間の学習コストが増えると思います。

実験の詳細と目的と結果

Copilotの性能調査をしました。アプリ Anki Desktopで問題を解くまでドアの前で立ちふさがり続ける人形を実装する際にCopilotに質問をしてその結果を示します。

実験結果: 単一ファイルで完結するコーディングOK、大規模プロジェクトコーディングNO、コード外実装NO

シンプルな数行コーディングなら最強の助っ人に見える

他のファイルや物理ガジェットと連携しないコードなら、ファイルやシェルにコピペ=>実行で9割方即動作可能のレベルです。スペルミスもありませんし、学習内容が新しければシンタックスエラーも出しません。

APIやHookがプロジェクト内で用意されているなら、その範囲までコピペでカスタムできる

Copilotではコードやファイルの依存関係が分かりません。なのでメンテンス性や拡張性を維持したコードやモジュールを0から作る事は難しいです。しかし一般的なAPIやHookの扱いはCopilotに聞けば分かりますので、開発側が一般的なカスタマイズ用の仕組みを用意してくれていればその範囲まではイジれます。

Arduino専用言語や配線の基本も出来る

CopilotはArduinoの物理的な配線とArduino言語の扱い方を教えてくれました。特にArduino用APIについてはチャットの返信をコピペするだけで作れました。

Anki Desktop プログラム全体像の把握は出来なかった

CopilotではIDEで開いている単一ファイルは読んでくれます。さらにチャット欄にコピペすることでも読んでくれます。しかし全体像を把握しているのかどうか分かりません。例えば@Workspace機能はエラーを出すことが多く、ローカルのドキュメントを読んでくれないのかなと思わせておいて、一般論な範囲で特定のコードの位置関係を示唆してくれたりします。

プロジェクト全体を確実に読み込ませるにはチャット欄に膨大なドキュメントを1つずつ読み込ませる方法がありそうですが、現在人力コピペしか方法が見当たらず、実用的ではありません。(CursorではGitHubのRepsitoryを含むURLからDocを読み取れるので、1動作で構造を把握するのは可能です。)

電子配線の知識の限界とコード外エラーの限界

Copilotは通信エラーや配線ミスの可能性を示唆しますが、コードのようにエラーを直に読み取るわけではないので、直接解決することは難しいです。更に一般的な電子パーツの配線や物理特性についての知識は聞いても拒否されがちです。(Cursorはその辺り返信もしてくれますので、より広いモーダルで把握したい場合はCursorが良いと思います。)

物理構成(使用アプリinコード):

  • Laptop(Anki Desktop in Python)-Arduino(in Arduino)-サーボモータ

資料集

addonの作り方。Hookと呼ばれるAttributeがあるのでそれを使うと便利。一方で他のAPI等は見当たらず。

脚注
  1. https://imgur.com/gallery/ADR3dzv ↩︎

Discussion