今の自分のC#を書く時のコーディングワークフロー
最近の自分の開発スタイルは、「AIと一緒にコードを書く」ことが前提になってきた。 特にGitHub Copilotで、C#開発を効率的に進めるフローが固まってきたので、現時点でのベストプラクティスをまとめておく。Visual StudioとVS Codeの役割分担、AskとAgentの使い分け、AIレビューの活用まで。 あくまで個人的なスタイル。
Visual StudioとVS Codeの役割分担が基本
- つい最近まで、C#の開発ツールはVisual Studio一択だった。
- 今は Visual Studio + Visual Studio Code の二本柱に。
- Visual StudioのGitHub Copilot Agentモードは、やはり使い物にならない
- Visual Studioでは使えるべき最新のモデルが使えないことが多いため、Copilotチャットも使わなくなった。
- 簡単な質問はたまに使うが、出番は激減。
- Visual StudioのCopilotは応答不能になることもよくあったが、VS Codeではほとんど起きない(体感では1/100ぐらい)。
Askモードで思考整理
- VS CodeにおけるClaudeのAskモードは、自分にとって「AIとの壁打ち」に近い存在。
- いきなりAgentで書かせるのはギャンブル。成功率は50%以下の体感。
- まずはAskで「やりたいこと」を書き出す。乱文でもOK。思考を言語化する感覚。
- モデルはSonnet 4。Opus 4も使えるが、Agentと行き来が面倒なので自然とSonnet中心に。
- Askでもたいていコード付きで返してくれるので、何ターンか壁打ちを続ける。
- 期待する方向にずれていたら、コメントで軌道修正。
- 話がまとまらないときはゼロから書き直す。
- 方向性が見えたら、「今までの流れをふまえてコードにしてください」とAgentに依頼。
- ここでOpusからSonnetに切り替えると精度が落ちる印象がある(あくまで主観)。
- Askが長くなったら「これをゼロベースでAgentに投げるならどうプロンプト書く?」と聞いて、それをベースにゼロからプロンプトを始める。
Agentモードでのコーディング
- Auto Approveはオン。ただし、それでも止まることはある。
- 特に「次のプロンプトを使いますか?」系の確認で止まりやすい。
- Agentがコマンド実行後、結果が出ても進まないときがちょくちょくある。
- 同じコマンドを再実行すれば動くことが多い。
- プロンプトの打ち間違いがあったら止めて、打ち直す。以前は無理やり続けていたが今はやめた。
- 出力が明らかに変な方向に行ったときは止めてコメントで指摘。
- 出力中にずっと見ているかどうかは日による。他の作業と並行することもある。
- 複数のセッションを同時には試したことがない(できるのかも分からない)。
Visual Studioでの確認
- 出力が終わったら、最終確認はVisual Studioで。慣れと操作性の問題でやはり使いやすい。
- まずは差分をざっと見て変更箇所を把握。変更が多すぎるときは詳細を追わないことも。
- 実行して想定通りに動かない部分があれば、再びAgentに戻って修正依頼。
- 実行が望む結果になったら、次はコードをじっくり見る。
- 以前は自分のコードスタイルに整えていたが、今はある程度そのまま受け入れることが多い。
- 明らかに変なところだけ、Agentにコメントで指摘して直してもらう。
最終調整は手でやる:改行にイラッとしつつ
- 大体満足のいくコードになったら、Visual Studioで手作業で整形する。
- 改行は高確率でおかしくなる。ほんと「クソが」と思う。
- 全体をコピペすると直ることもあるので、まずはそれを試す。ダメなら手で修正。
- コードが整ったらコミット。
- その後、AIにリファクタも依頼する。主に「もっとシンプルにできる?」という聞き方。
- わりと壊されることもあるので、コミットは必須。
PRレビューにもAI
- コードがシンプルになったらPRを作る。
- 自分でも変更点をざっと確認。
- CopilotとCode RabbitのAIレビューを読み、必要な指摘をピックアップ。
- 気になった指摘だけをAgentに投げて、部分的に修正。全部は投げない。
- 修正後、再度コミットして、PRが通ったらマージ。