この記事を書きたくなかった
本当に。またAIコーディングツールの比較?勘弁してよ。でも三週間、実際のプロジェクトでBaichuanとCursorを並行して使うことを自分に強いた結果——おもちゃの例じゃなくて——強い意見ができた。
リアルタイムWebSocketデータを使うReactダッシュボードを構築しようとした時に何が起きたか話す。
Baichuanとの出会い
Baichuanは忍耐強い教授みたいだった。「毎秒更新されるリアルタイムチャートコンポーネントを作って」と入力した。一呼吸置いた。それからファイル全体を生成した——インポート、状態管理、クリーンアップロジック、エラーバウンダリー。手取り足取りはなし。自分が何をしてるか分かってる前提だ。
コードはきれい。TypeScriptの型が至る所に。コメントは中国語と英語が混ざってる。変だけど慣れた。
でも同じコンポーネントをカスタムフックにリファクタリングしてと頼んだ時、躊躇した。代わりにアプリ全体を再構成するよう提案し続けた。頑固なシニアデベロッパーみたいに。
そしてCursor
Cursorは正反対。話の先取りをする熱心なインターンだ。新しいファイルを開いて「const useWebSocket」と打ち始めたら、すぐに次の10行を提案してきた。怖いくらい速い。
同じチャートコンポーネントで、Cursorは30秒で動くバージョンをくれた。でも雑だった。エラーハンドリングなし。クリーンアップなし。後で直す前提だ。
Cursorはオートコンプリートが得意。ゾーンに入ってるときは心を読む。でもアーキテクチャについて推論しろ?肩をすくめる。ある午後、状態管理のパターンを三つも提案してきた。自分で選ばされた。
本当の違い
Baichuanは考える。Cursorは行動する。
複雑なロジック——例えばジェネリクスでカスタムイベントエミッターを実装する——では、Baichuanは二回目で正解した。Cursorはコンパイルは通るがメモリリークするものをくれた。
ボイラープレート——例えば10個のAPIエンドポイント用にZodスキーマを書く——では、Cursorが四倍速かった。Baichuanはフィールドの型が本当に正しいか何度も確認してきた。
誰がどれを使うべきか
プロトタイプを構築してるかCRUDを量産してるなら、Cursorを選べ。スピードの鬼だ。
正確性が速度より重要な本番システムに取り組んでるなら、Baichuanの方が安全。自分で再確認する。
結論
両方使い続ける。Cursorで初稿、Baichuanでレビュー。互いの弱点をカバーする。
でも一つ選ばなきゃいけないなら?自分のプロジェクト——バックエンド主体、TypeScript、リアルタイムデータ——ではBaichuanを選ぶ。バカなミスが少ない。
Cursorは生の速度で勝つ。Baichuanは信頼性で勝つ。選ぶのは君だ。