チームが合意した規約に沿い、説明可能なコードになっていればプロダクションコードに反映される

公開日

AIの性能が向上し、エンジニア以外でもコードを修正してアプリケーションに機能追加、機能修正がやりやすくなっている。全体像がわからずとも、命令すればAIが意図を汲み取ってコードを修正してくれる。その結果の挙動を見て、うまくいってそうであればそれをエンジニアにレビュー依頼することができる。

コードのありかや開発環境の立ち上げ方をある程度エンジニアから共有されれば、あとはAIが伴走してくれる。

新しい機能がエンジニアの手を借りずに実装でき、手元のアプリケーションで動いている。とても可能性は感じる。しかし、ユーザーに届く価値が増えていくかは合意が前提に必要であると感じる。

コードレビューしていて考えたことをつらつら書いている

誰がどう書いたかは関係がない

エンジニア以外の職種の人がAIを駆使ししてコードを書いた、AIが自動で書いた。これらは今までの開発フローを変えうる凄いことだし生産性を大きく上げる可能性を秘めている。

一方、プロダクションコードに反映されるコードは誰が書いたかによって基準は変わらない。動けば良いという基準なのであれば、動作確認だけすればプロダクションコードに反映される。テストが必要であればテストがなければ反映されない、ドメイン駆動開発をしているなら適切なモデリングがされているかの合意が取れなければ反映されない。

規約に沿っていないコードは手元のアプリケーションが動作していたとしてもユーザーに届けられることはない。

規約が文書化されていないケースはある、その場合は何に合意しているかをチームに聞いて理解する必要がある。重要なのは、書いたコードがチームで合意した規約に沿っているか。誰がどうかいたかではない。どのようなツールを利用したとしてもこれは変わらない。

優先度は変わらない

AIでできそうな難易度の低いタスクを実施するケースを考える。このタスク自体の優先度が低い場合、取り組む理由はAIを利用した開発を試し、知見をチームにFBするといった、別の目的の優先度が高い場合に行われる。そうではない例として下記がある

  • AIでできそうだからやらせてみて無理だったら自分で書く
  • チームの手が回ってなさそうだからやる
  • 自分がやりたいからやる

そういう動き方をチームで合意しているなら良いが、そうでないならこれらは開発コストを上げ、本来優先されるタスクの遅延につながる。たくさんのやりたいことの中から、優先度の高い開発を行うチームにおいては、優先度はツールによって変わらない。

決める

AIによってプログラムを書くコストは低下しているが、それでもチーム開発においては全てをカバーできない。AIを使える人間の数だけ開発がスケールしていくわけではない。

自分たちが何を優先すべきで、どういう未来に向かっていくかを話してチームで合意すれば適切に優先度を決められるのではと思う。AIを駆使してエンジニア以外もプロダクションコードを書いていく未来を目指すなら、エンジニアも優先してリソースを割いてその環境を一緒に整備する。

開発組織内で自律してAIにコード書かせていきたいなら、短期的には生産性が下がっても集中して利用してフィードバックを回し続ける(俺は面倒だから手で書くを避ける)。

AIという凄いものが現れたとて、限られた時間の中で自分たちが何を優先して、何をしないかを話し、合意して、集中する。そこはまだ変わらない

結果

冒頭に戻る。少しレビューを進めていたものの思い直しその辺にいるエンジニアと話しながら、上記のようなことを考え、まずはこのコード修正の背景から聞くことにした。今自分がいるチームにおいて説明可能なコードとは、実装だけでなくなぜそれをしているかもセットにある。

思い返してみると、開発者、エンジニア、といったコードを書く人という括りが自分の中にあり、その外からのコードに対して特別な感覚を抱いてしまった結果、判断基準を曖昧にしてしまったと思う。チームが合意した規約に沿い、説明可能なコードである、それだけの話でそれ以上は別の話のはず。