無理しない生成 AI との付き合い方

生成 AI に対してどう思うかは皆さん違うとは思いますけど、無視することはできないと思います。 私個人としては、もういい歳になっているので「自分が現役を名乗っている間に全部とって変わられることはないだろう」と思ってはいるのですが*1、できることなら生成 AI 使って時間を効率的に使いたいとは思います。 「ちゃんとしたコード出してくれないから生成 AI まったく使えない」とは思わずに、使えるところは使った方が自分の自由になる時間を増やすことができると実感している所を書き留めておこうと思います。

自分なりの考えがある前提での相談相手

設計する上で自分はこう思っているんだけど、他に良いやり方ないかなと感じている時の相談相手として使うことがあります。 後は自分の設計を言語化する時のサポート役としてメリット、デメリットを洗い出してもらう時に使うことが多いです。他の人への説明や「こうした方が良い」と思うことを表現する時にちょっとお手伝いしてもらう感じです。 自分だけの知識だと過去の成功体験からくるものや知識自体が古くてアップデートできてないこともあり、それをイマドキまで引き上げるのにまずまず時間がかかります。相談できる相手がいればよいのですが、その人の時間を奪ってまではなぁ...という時に、叩き台を作る時のパートナーとして使うこともあります。

ツール作成係

レビューする時にコードフォーマット的な指摘を受けると、Linter で対応したいのですが、対応していないこともまずまずあります*2。 Linter が対応してなければ作ればいいじゃない、ということで生成 AI の出番です。内部ツールなので厳密に動かなくてもよいですし、何かあれば生成 AI に指示して直してもらえば良い。このケースで吐き出したコードに関してはどんなコード内容はそんなに気にせずに、テストケースが足りてるか、くらいでレビューを通します。プロダクションコードではないので、かなり雑な運用で作り散らかしてます。もちろん、雑にツールを作り散らされても困るので、「そもそも必要なのか」の観点ではメンバーにレビューをしてもらうことは必要です。

後は似たコード書いてるな、と思った時は scaffold 的なツールを生成 AI で作ったりします。生成 AI 自体で似たコード書かせても良いんですけど、毎回同じ結果にならないことがあるのでコード生成の方に倒してます。

生成 AI の「正常パターンが動いてくれれば良い」時のコード生成能力は人間よりはるかに高いと思います。みんな使うわけだ。

レビュー係

私よく typo するのでコードができたと思った時に「コメントや変数名でおかしいところ無いか」生成 AI にレビューしてもらってからレビュー依頼します。この辺はプロンプトの作りようでもっと良い方法あるんでしょうね。CI で AI のレビュー通すようにして、それが通ってから人間がレビューする、みたいな感じでやってる所も多いのかな。

終わりに

ということで、全てにおいて生成 AI を使うのではなく、ちょっとした所で使うと今の開発スタイルを大きく崩さなくても時間効率よくなるよ、ということを書かせてもらいました。

プロダクションコードを人間が全く見ることなく、テストで担保してれば問題ないでしょう?と思われるのもわからなくはないですが、ロートル的には Vibe coding で作られたシステムの保守したくない気持ちが大きいのでそれは抗いたいと思っています。仕様さえ変わらなきゃ(テストさえあれば)機能拡張もガラガラポンで作り変えできるじゃんというのはその通りですが、ある程度の愛着を持ちながらシステム開発に携わりたいです。

*1:マジで頼む

*2:そういうのは基本的にレビューで指摘しないようにしたいのですが、そうもいかないこともあります