【アダアフィ 114日目】AI駆動開発の試行錯誤過程
これは、プログラマではない人間がAI駆動開発において気づいた開発時の注意点や工夫を雑にまとめたメモです。
AI駆動エディタについて
windsurfはMacのようなもの。洗練されたUIのユーザーフレンドリーなプログラミング体験がその価値だ。UIは素晴らしいが、使い放題なAIモデルのレベルがやや低いのが難点。
cursorはWindowsのようなもの。少々無骨だが、必要な機能揃っておりカスタマイズも柔軟にできる。最大の価値はプロ版でClaude 3.5 sonnetが使い放題ということ。
反応が速いリクエスト500回の回数制限は3日と持たずに使い切った。今はずっと反応が遅いリクエストになってしまっているが、苛立つほど遅くもない。5〜10秒待てば進むので、実用に耐えうる。この使い放題はやはりデカい。
他にもvscodeで使えるclineや派生のroo clineなどで他のAIモデルも使ってみた。
Google Geminiの試用版モデルは賢いが、すぐにレート制限に引っかかる。deepseek v3も使ったが、こちらもリクエストエラーが多かった。このため、現時点では信頼できて堅実に使える選択肢としては、cousorのClaude3.5sonnetしかない。
設計について
AI駆動開発の要、指示書が9割。
つまり、ここでどれだけ精緻に基本設計、詳細設計、その他諸々が描けるかで後の工程のスムーズさがだいぶ変わる。
ただ、正直慣れてないうちは「最初から想定すればよかった」と思うことが後から山ほど出てくる。
まずは「粗く必要最低限から作り始める」でも問題ない。
今回は欲しい情報を要望書としてまとめた。
参考とするページ情報をテキストにまとめて読み込ませた上で設計を依頼。全体像を出した上で仕事をさらに小さく切り分けて、ステップ方式でコードを生成した。
開発途中について
調整していく途中で、必要な機能を追加したりさまざまなエラーに対応。ファイル構造が変化していく中で自分もAIも構造やデータの流れの把握が難しくなった。
ここからは負け戦。
いまだいぶいいところまでいったものを、ファイルを以前のものに戻して再び修正を再開。こんなことを何度か繰り返した。
このやり直しに対しての対策としてgit(履歴管理)の導入は不可避だと感じた。
デザインメインでWEB制作する際にはそこまで必要性は感じていなかったが、システム制作においては必須だと思った。
初見でgitの概念理解が難しいと感じる場合も多いと思う。チームで開発するわけでもないのに必要かと思う人もいるかもしれない。使う前の自分がまさにそうだった。
しかし、例え個人開発でも必須で習得すべきものだ。
どうにもできなくなった時、以前は全部作り直しをしていたこともあった。
AIは余計な動作がまだ多い。必要なコードの削除など当たり前にやってきてぶっ壊す。コードを細かくチェックする、書けなくても何が行われているか流れが読める程度の理解度は必須。そのうえでとにかく何度も戻すことになる。泣きたくたる。
使って初めてわかるこの履歴管理の重要性、戻れることのありがたさ。こまめなgit commitは未来の自分を救う命綱だ。
テストについて
テストファイルの扱いにも苦しんだ。
途中AIが提案してくるnpmテストを実装したが、これが厄介。
そもそも、テストを通過したとてあくまでもテスト。実際のデータとは異なる部分も多い。とくに自動で作った場合、それが正しいテストになっているかどうかの評価してから使わないと間違った判断のもとで修正が行われることになる。
これにより逆にファイル構造や関数が混沌と化したりもした。結果としてテストファイルとnpmテストは行わず、地道に手動テストを行う方針に切り替えた。
テストファイルの生成やテストデータの生成はもう少ししっかりと考えて評価できる体制が必要と学んだ。
今後の課題について
当初想定していたよりけっこうなボリュームになってしまっている。あともう少しまできているのだが、その最終調整に手間取りそう。苦しいが踏ん張りどころ。
今後の課題としては、依存性の切り分け判断やリファクタリングのタイミングがまだ掴めていない。また、もうちょい工夫して、やり直しをもっとやりやすくするための方法を検討中。
これからのAI界隈について
年末のGemini2.0そしてdeepseek v3の登場。
このあたりが安定しだしたらそちらに乗りかえも十分期待できる。
これからいよいよ本格的な群雄割拠のAI戦国時代の到来だ。ものすごくワクワクしている。
目まぐるしく状況が変わっていく中で、変わらないのは、「どう使いこなすか」
作りたいものも、できるようになりたいことも、使ってみたいものも山のようにある。
幸せな世の中だ。