納期に追われAIが書いたコードを人間レビューなしでマージしまくった末路

どうも

今回は、今携わっているプロジェクトで、直面している課題について、少しまとめておきたいと思います

タイトルの通りで、納期に追われAIが書いたコードをそのまま人間レビューなしで本番にマージしまくった末路についてです

結論、動くは動きます

ただ、積み上がった大量のコードの見通しはかなり悪く、後から直すのにめっちゃくちゃ時間がかかりますという話です

まず背景です

去年の年初から新しくプロジェクトが動き始め、それの設計やらコーディングやらをずっとしていました

新しいプロジェクトが始まった当初も、AIを使ったコーディングはしていました

ただバイブコーディング自体、去年、相当伸びてきたのもあって、途中からがっつり使われるようになりました

そんな中、プロジェクトの途中途中で、ここの期日までには、これだけできてないといけない!というポイントが何度かありました

そもそも我々のチームでは、エンジニアが少ないので、リソースが足りず、ヒイヒイ言いながら、実装してたわけなんです

が、納期に追われ、あるとき、変更ファイル数が1000以上、変更差分が12万とかいうPRのレビュー依頼が来ました

自分は今まで、そんな差分見たことなかったです

レビュいーに聞くと、AIにざっと書いてもらっているもので、確かにCIやAIレビューは通っているということでした

このままマージできることなんてあり得ない…と私も思いました

ただそのとき、自分も相当、納期に追い詰められていました

自分のやらないといけないタスクもたんまり残っています

でもレビューはしなくちゃと思いましたが、細かい点までは到底見れない…

考えた末、アーキテクチャの問題点がないかのみ見るだけで、細かな記述についてはレビューせず、期日も迫っていたため、そのままマージすることになりました

このようなことは、何度か続き、ことあるごとに、人間レビューなしのAIが書いたコードが、どかっとmainにマージされていくということが起きました

しばらくは自分のタスクをこなす日々が続き、自分の書いたコードは、しっかりとセルフチェックを行い、綺麗に読みやすいコードだという保証をしてからマージをしていってました

そんなある日、自分が担当するタスクの調査をしていたら、見覚えのないコードを見つけました…

「あれ、こんなとこにコード書いたっけ?」

自分がサービスクラスとして、まとめていた処理の中に、見覚えのないコードがありました

さらによく見てみると、サービスクラスの中に、幾つもファイルが増えていました

「何が起きてるんだ…?」

よくよく見てみると、どうやらこれらはAIによる変更だということがわかりました

そして、自分のタスクの修正に関わりそうだったところを読み始めて、さらに驚愕しました…

「なんだこの不要なガード祭りは…」

なんと、一つ一つのほんの小さなメソッドにも全てガードロジックが入っており、過剰に防御的になっていることに気づきました

また、メソッドの内部で色々こねくり回しているのですが、要するに本質的な部分は1行だけで、それ以外は不要な変換だったりするのが、大量にメソッドとして存在していたのです

そして、コードを読んでいると、時間が溶けていることに気づきました

なぜならドメインロジックに対して、無駄な処理が多すぎで、極めて読みづらくなっているためでした

「ん、なんでこの処理がこんなところにあるんだ…」

確かにコードとしては動いているのですが、なぜこのメソッドがここにあるか、なぜこのフォルダ構造なのかという部分が、全く意図が見えない状況になっていました

必要な情報を撮りにいきたいと思っても、どこにその記述があるのかが、すぐ追いかけられない状態になってしまっていました

「えーい、AIにきこう、そうすればわかるだろう…」

と思って、AIに聞いたところ、確かに必要な情報がそこに書いてあったのですが、いろいろこねくり回されていて、もうわけがわからない状態でした

デッドコードも要所要所に散らばっているという状態なのに、どうやら意図通りの出力は出てくるという状態で、まさにカオスという言葉が相応しい状況になってました

その結果、そこに関わる簡単なタスクを完了するのにも、一苦労ということが、続くようになりました

 

そして今、その状態から何をしているかというと、いろいろと修正をしていく中で、少しでもリファクタできるところを見つけたら、面倒くさがらずにリファクタしていくということをやっています

命名や、処理順、不要なガード削除、デッドコードの削除、そもそもどういう処理の内容なのかなどを理解しながら、積み上がってしまったリファクタし放題のコードの山をちょっとずつ綺麗にしていっているという状態です

面倒臭がらず、綺麗に最初から作っておいたら、もっと楽だったろうなと、今になって思いますが、なかなか難しいです

テストもモックを相当使ったテストになっていて、リファクタしづらいのもあります

これから、きっとコードを意識することはなくなっていく、今までよりも、プロダクトに割ける意識が増えていくだろうと思っていますが、まだ、シンプルで綺麗なコードを横断的に書くという部分では、人間に強みがあるかもしれません

そういう広い範囲の横断的な最適解を出せるような、エンジニアは重宝されるだろうと思います

多分、局所的な最適を積み上げすぎると、こうなってしまうのかなと感じました

 

まぁ自業自得なので、まだまだリファクタできるので、やっていこうと思います

以前の方がアウトプット出せてたなーと思いつつ、これをやらないと、後からしんどくなるのは目に見えてるので。。。

くれぐれもAIが書いたコードをノーチェックでマージすることは、現時点では、ないようにしていきたいなと改めて思いました

ではでは

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA