私はバイブコーディングに多少慣れてきましたが、通常のコーディングのやり方がわからない場合、どのように行うのか全くわかりません。
一番好きなのはClaudeのコードです。Codexは過剰なエンジニアリングに陥りがちで、具体的な指示にも従わない傾向があると感じています。
一番難しいのは、モデルが膨大な量のコードを書くことです。その多くは冗長でずさんなものです(昔の意味で)。しかし、素晴らしいのは、ユニットテストを100万個も簡単に書けることです。(実は、gpt-3.5の頃からずっとLLMを使っています)
これはちょっと面白いパラダイムですね。例えば、私が作っているこの小さなおもちゃのアプリには、アプリが何らかの要素までスクロールするトリガーとなる箇所が15箇所ほどあります。それぞれの箇所で、この処理を実行するために全く同じ7行のコードが書かれていました。私ならこうします。
scrollToElement関数を書いて、要素までスクロールしたい時にその関数を呼び出します。しかし、スクロールするたびに同じ7行のコードが書かれるだけです。リファクタリングする気配がないようです。明らかにまずいですね。しかし、
15個の同一コード群を必要に応じて修正することに何の問題もないようだ。また、その動作は十分にテストでカバーされているため、1つでもミスがあった場合、テストに失敗し、そのミスを見つけて修正する。これは見た目にはひどいが、十分に機能するので、
コードをじっくり読み始めるまで、気づきもしませんでした。通常、このような繰り返しは脆弱性やバグを招くため避けるべきですが(DRY)、今回はそうではないようです。それでもまだ良くないのですが、興味深い疑問が浮かび上がってきました…。
例えば、コードを書くのに無限のスタミナを持つ人がいるなら、もう少し冗長な方が良いのでしょうか?私自身の実践の多くは、できるだけ少ないコードでできるだけ多くのことを行うという美的嗜好によるものですが、LLMコードには最適ではないかもしれません。
もちろん、このモデルは無限のスタミナを持っているわけではありません。お金がかかります。おそらく私が実際に払っている金額よりも高いでしょう。