AIコーディングでスクリプトを作成。StravaからGPSログをダウンロードして、ミネソタに来てからの行動軌跡をマップに表示させてみた。自分では一行も書かずに、要求仕様をまとめて、AIアシスタントに指示を繰り返しながら、このようなPythonスクリプトを作成できる。
これは初期版なので線の太さやバランスなどが悪くて見にくいが、データとプログラムで生成されているのでパラメータを調整して生成しなおすことは容易だ。
使ったAIは、Claude Code。プログラミングに向いているというSonnet 4というLLM(Large Language Model)を使った、コーディングAIエージェント。
このように自然言語でAIに指示してコーディングを行うことをVibe Coding(Vibes=ノリ)という。
AIアシストコーディングの種類として、Chat GPTのようなチャットに問いあわせて回答を得るタイプ、コードやコメントを書くと自動補完してくれるタイプ、それと、今回のClaude Codeのようなエージェントモード、がある。
よくあるChatGPTは、入力フォームに自然言語で入力すると自然言語(等、画像も生成できる)で返してくる。
それとは異なり、エージェントモードは、コマンドプロンプト上で実行し、ローカルのディレクトリ、プロジェクトを理解して動作する。VS Codeのターミナル上でclaudeを実行すると、そのディレクトリ内にあるファイルを読み込んで理解する。
「このプロジェクトに機能Aを追加」と指示すると、現在あるコードに機能が追加され、ユーザに差分の確認を求める。ユーザが変更を承認すると、そのコードが追加される。
通常のコマンドプロンプト上でも動作できるが、VS Code上で実行すると差分がVSコード上に表示されるので、さらに見やすい。
AIエージェントは、さらに自動テストを提案し、それを実行しようとする。もしテストが失敗すると、合格するまで自動で何度も修正を繰り返す。
ドキュメントの生成、gitのコミット、githubへのプッシュなども自然言語で「コミットを作成」「githubにpush」のように指示すればよい。必要に応じてリポジトリの初期化も行ってくれる。
ちなみに英語だけでなく、日本語もOK。
今回はAIによってPythonスクリプトを作成したが、適切なオプションを付加してスクリプトを実行することも「source venv/bin/activate && python3 generate_heatmap,py --area minnesota」などとコマンドをタイプせずに「SVGでミネソタ近郊のヒートマップを生成」のように自然言語で指示することができる。
ただし、Claude Codeは無料では使えない。最低限のPro モードの場合、月額$20の課金が必要。調子にのって使っていると、すぐに1日の使用量(レートリミット)に引っかかって、翌日に作業が持ち越し(翌日になるとリミットはリセットされる)となる。
インターフェイスの違い
プログラミングに適用する場合、Claude Codeのようなエージェントモードのインターフェイスが非常い便利。
チャット型のインターフェイスでは問い合わせが断片的になってしまい、練習問題のような問題しか現実的には対処できない。チャットモードでも、上手に使えば、ある機能を持ったプログラム(たとえばオセロゲームなど)を生成させることができる。しかし、構造や設計に人間が介入して最適化させることが難しい。書き捨ての、単に機能する「デモプログラム」を生成させることはできても、維持・メンテンナンスしていく「仕事用のプログラム」を生成させることは、現時点では、かなり難しい。
一方、ライブラリの使い方を調べる、サンプルコードを生成する、などの、ちょっと前であればGoogleで検索していたような(そして、検索結果を何十個も目視でレビューするような)ことの代替としては、とても便利で効率的だ。
自動補完型は複雑な作業を依頼することができない。
しかし、エージェント型はプロジェクト全体を読み込んで理解することができる、包括的な指示のもとに、指示を達成するまで自律的に生成&テストを繰り返すことができる、など、コーディング作業、その省力化に向いている。
LLMのモデルの違い
インターフェイスの違いの他に、頭脳となるモデルの違いも、明らかに存在する。
OpenAIが開発しているChatGPT。Microsoft のCopilotがVS codeと統合されているが、モデルはChat GPTと同じだ。
別系列でGoogleが開発しているGeminiというモデルがある。汎用AIとしてGeminiのチャットインターフェイスもあるが、Gemini CLIという、Claude Codeのようなエージェントインターフェイスもある。 こちはらClaude Codeとは異なり無料で利用できる。
Anthropic が開発しているClaudeも、ここで述べたエージェントインターフェイスだけでなく、チャットのインターフェイスもある。こちらはClaude Codeとはことなり無料でも使える(わりと簡単にリミットに達する)。
これらのモデルを使ってみた結果、現時点ではClaude Sonnetが、とくにCやRustなどのシステムレベルのプログラミングには向いている。Copilot(OpenAI)、GeminiはフロントエンドやPythonなどのコーディングは可能だが、CやRustなどを書かせるのは厳しい。
Gemini CLIで、私のC言語で書かれたプロジェクトのコードをメンテナンスさせてみたが、コード変更→テストが通らない→さらにコード変更→テストが通らない、を繰り返して、プロジェクトがぐちゃぐちゃになってしまった。
VS Codeに統合された Microsoft Copilot(モデルはOpenAI)を使って、自動補完ベースでRustで書かれたプロジェクトに機能追加を試みたが、想定とは全く異なるコードが生成された。しかし、Pythonで書かれたスクリプトの機能追加は、Microsoft Copilotの自動補完でうまく動作した。
Claudeは、以前にチャットインターフェイスを使いながらRustのアプリケーションを作成したが、十分に使えるコードを生成した。 今回のPythonのヒートマップ・アプリケーションも悪くないコードだ。
Claude Sonnetのレベル的にはジュニアエンジニアの代替としては十分な品質。速度は撃速。
Gemini や Copilotは今のレベルでは採用不可。
勤務先でもAI コーディングの導入申請を出しているが、どれが導入されるか?
既存契約の延長でMicrosoft Copilotになるような気がするが、雰囲気や流れで(それこそVibe Decision)ではなく、ちゃんと技術的な性能を評価して導入判断がなされるだろうか?
技術ブログの方に書こうと思ったが、技術的な内容は無く、単なる「使ってみた」なので、こちらに。
githubはこちら。https://github.com/nkon/heat-map
0 件のコメント:
コメントを投稿