ディスカッション (11件)
Redis Arrayの実装に至るまでの、開発の苦労と試行錯誤のプロセスを振り返る。
今のSOTA AIを使った自分の経験とかなり重なる。すごく便利な共同作業相手だけど、人間の知性や創造力の代わりになるには程遠いよね。
はっきり言っておくけど、これはRedisの生みの親、もしくはそのうちの一人がやってることだぞ。
彼は「そこらの普通の開発者」じゃないし、LLMを使って4ヶ月かかってるんだ。
だからといって、Claude CodeやCodex、その他のAIコーディングツールに開発チーム全員を完全に移行させろっていうお墨付きじゃないからな。
スタートアップの平均的なCEOの皆、君たちのこと言ってるんだぞ。
今の自分のやり方を共有しておく。
まずAIに手伝ってもらって、詳細な仕様書代わりのMarkdownを書く。次に、別のAI(文脈を共有してないモデルか、別のモデル)に、バグや欠落、見落としがないか批判的にチェックさせる。すると、後から見れば明らかな粗が絶対に見つかる。で、その結果を要約させて、最初のAIに貼り付けて意見を求める。これでお互い納得できる変更案を作って、AI同士の対話的なラウンドロビンを、これ以上修正案が出なくなるまで繰り返すんだ。
それからAIに実行計画を作らせる。これも同じようにAIたちを使って対話的に洗練させる。最終的に、計画はかなり盤石なものになるよ。
その後にエンドツーエンドのテストケース案を作る、といった流れだ。
システムの規模にもよるけど、初日か1週間、あるいは1ヶ月が終わる頃にはコーディングできる状態になってる。
コードができ始めたら、仕様と計画と一緒に他のAIに投げ込んで、バグや欠落がないか確認させる。常にメインのAIを別のAIでチェックする感じ。
もちろん、最終的には自分でコードを読まないといけない。AIは細かい仕上げが甘いからね。
記事を書いてくれてありがとう。ベテランの開発者が最近どうAIと向き合っているか知れるのはすごく興味深い。
@antirezさん、プロジェクトの終盤に全然関係なさそうな正規表現機能をぶっ込んだのは少し不思議に感じたんだけど、そのあたりの根拠を詳しく教えてくれないかな?ありがとう!
追記してくれてありがとう。Arrayや正規表現にはワクワクしてるし、自分の能力を広げるためにLLMを活用した経験談にもすごく興味がある。自分のプロジェクトで同じような試行錯誤を静かに続けている人は他にもたくさんいるはずだ。「バイブ・コーディング(雰囲気コーディング)」なんて言葉(とそれに対する反発)では、俺たちの働き方は到底語れないよ。
今回提示されたユースケースの一部って、ZSET(Sorted Set)で実現できなかったのかな?パフォーマンス面での理由はわかるけど、新しいAPIを生やさなくても、配列が疎なデータを扱うのと同じように、ZSETのストレージを密な値に対して最適化すれば事足りた気がする。
RE(正規表現)の要素は面白いけど、ここでもコメントされてるように、Arrayデータ構造とは直交してる(他の構造でも使える)よね。Luaスクリプトでやるほうが筋がいいんじゃない?もしLuaの性能がネックなら、値を範囲で返すようなコマンドであれば何にでも適用できるように、OPを抽象化して組み合わせて使えるようにしたほうがよかったかも。
Antirezへの敬意を込めて言うけど、今回の新機能の一部は、LLM主導の開発でよく見かける「既存の機能の強化ではなく、新しい機能の乱立」や「組み合わせで解決できることを過度に複雑化する」というパターンに近い気がする。
Antirezのコードだとしても、これだけ複雑な機能セットで、しかもPRの説明が最小限な2万2000行のコードをレビューするのは悪夢でしかない。Postgresみたいなメジャーなオープンソースソフトウェアが、なぜメーリングリストでの開発を基本にして、コミュニティで設計を議論し、パッチを小分けにして段階的にレビューし、余裕を持ったリリース間隔をとっているのか、その理由がよくわかる気がする。
Salvatoreは「自動プログラミング/コーディング」という言葉を流行らせたいみたいだな。
Antirezさん、ちょっと気になるんだけど、最終的なコードを作るにあたって、いわゆる「一発出し(one-shot)」みたいな実験はしてみた?GEPA(Generative Evolutionary Planning Agent)とかを使えばそこに到達できるのか、それともモデルから欲しい回答を引き出すためのプロンプトの出し方に何かコツがあるのか知りたいな。
あるいは、結局モデルプロバイダー側が訓練データを綺麗にするしかない、という結論になるのかな。
ブログで言及されてる仕様書ってどこで手に入るか知ってる人いる?リンク先のPRには見当たらないんだけど。