まず最初は、そもそもコードをAIコーディングツールによって書いてもらうっていうところで、どう変わっていったかっていう話で言うと、
コードを書くコストは安くなっていくんだけれども、代わりに2つの知見が損なわれ始めてますよと。
その2つっていうのは何かっていうと、まずは理解の負債ですね。
これは何言ってるかっていうと、コードがどう動くかに関する知見っていうのは失われていってますよねと。
もうAIに任せて書いてもらっているので、どう動くのかっていうのはもうAI任せになっていますよと。
そしてもう1つがですね、意図の負債ですね。どう動くのかではなくて、コードがそもそも何でこういうふうに作ったのかとか。
このコードを使うことでどういうビジネス課題を解決するかとか、これを考える上で他にも選択肢、とりあえず選択肢はあるはずだったけれども、
どうしてこっちの選択肢を選ばずにこっちを選んだのか、どういうトレードオフを強要したかっていうところ。
それを選んだ、そして作った、ずっとっていうのが見失われるよと。
意図の負債というのをこの記事では表現している。
これをこのAIコーディングツールを使うことによってどうなっているかっていうと、今までだと時間をかけて品質を向上させてきたんですね。
それは何かっていうと、コードを書いてテストをする上で、テストでバグを発見して、
それを開発者が学習をして、それが次のサイクルで同様のバグが減りますよと。
ここはこういうふうに気をつけなくちゃいけないなと思いながらコーディングをするのでバグが減るみたいなことがある。
こういうフィードバックループも弱体化するよっていうふうに表現していました。
これそもそもなんですけれども、今までっていうのはこのビジネスドメインですね。
ビジネスとしてのドメイン知識っていうのが実は無料で蓄積してきたよと。
これどうしてかっていうと、わざわざビジネスドメインを今から理解しよう。
そのためにはコストがこれぐらいかけてみたいな工数の見積もりとかしないわけですよね。
つまり明示的にこれだけ工数をかけてビジネスドメインを理解するっていうふうに活動することはあんまりなくて、
どちらかというと人間がプロセスに関与する。
例えばコーディングをしようとする。
その中でさっき言ったような意図、どうしてこれを作ろうとしたのかっていう意図を学習するっていうような
副産物としてビジネスドメインの理解が進んでいったっていうところがあります。
これがAIにとって代わってコード生成任せてしまうと、そこの副産物がなくなってしまうので、
ビジネスドメインが無料で蓄積していた部分が失われていくよっていうふうなことを書いてあります。
なので、このビジネスドメインを理解するための苦労っていうのが、
本来の排除すべきコストでは実はなくて、それをやることで理解を形成するプロセスそのものだったんですよと。
行動を書くにあたって、いろいろとビジネスドメインを理解するっていうのがどんどん形成されていくはずだったんだけれども、
そのプロセスがなくなってしまったよっていうところを危惧しています。
それによってどう変わっていくか、コストがどう変わっていくかっていう話を次にしたいんですけれども、
AI以前には変更コスト曲線っていう考え方がありました。
これ何かっていうと、欠陥は早めに見つけたほうがいいよっていうふうに以前、
このbtesting.fmでお話したと思うんですけれども、
結果の修正コストは後工程になればなるほど、質感性的に増加しますよと。
何でかっていうと、発見が遅れるほど成果物が増えた状態で見つかるので、手元りが発生するよっていう話がありました。
これは以前、このbtesting.fmだと9回目のエピソードですかね。
そこで話した話として、使用誤りの修正コストっていう具体的な数値を持ってきました。
これ何かっていうと、要求仕様の段階で仮に1時間で直せるものがあったとしたら、
それがリリースした後の段階、要求仕様で見逃して、設計でも実装でもテストでも見逃して、
リリースした後の段階で、あれこれうまくいってないんだけどっていうのに修正が入った場合に、
同じ欠陥なんだけれども200倍、つまり所要時間として200時間かかるよっていうふうに言われていますっていう話をしました。
こういうふうに後工程になればなるほど手戻りがすごいコストになるよっていう話が以前の話でした。
このAIコーディングツールを使うことによって、そこでどうなったかっていうと、
後工程になって習慣性的に増加するっていうのは、実はあんまり変わってないです。
ただし、その中身がちょっと変わっていますよと。何かっていうと、まずAI以前の場合は、
コードを書くのは人間が手で行っていたので、ある程度コストがかかっていました。
それがAI時代によってエージェントが作成するので、コストが安くなりました。
その一方で、じゃあコードどういうふうに書いているかっていう、コードの中身の理解に関しては、
AI以前はコードを書きながら作成者が理解をしていたので、実質無料になってたんですね。
一方でAI時代はエージェントが作成しているので、結局誰もそこ深くコードの理解はできていないので、
それを理解するのはコストが結構かかってしまいますよと。
また、じゃあそれを実際にリリースした後とかで、もしくはテストの段階でバグが見つかって、
コードを書き直すっていったときを考えると、AI以前の頃、人間がやってたときは、
もちろんコードを書き直すときは、ある程度時間をかけて人間が手直しをしていたので、コストが高くなります。
なのでAI時代、今のAI時代においてはエージェントが再生成するので、そんなにコストがかからなくなりますと。
一方で、じゃあ書き直すところ自身は安くなったとはいえ、じゃあどこを書き直すべきなのかっていう、
場所を探すっていうところに関しては、AI以前、人間がやる場合は、ある程度作成者が理解している状況のコードを巡って、
じゃあここを直そうっていうふうに場所を見つけるので、少しのコストで進んでいました。
一方でAI時代の場合は、そもそもコードの理解っていうのを誰も深く理解していないので、
じゃあコードを書き直すっていった段階で、そもそもどこを直せばいいんだろうっていうのは、
もうほぼゼロの状態から理解をして書き直す場所を見定めるっていうふうになるので、非常にコストがかかりますと。
っていうふうにコストがかかる場所がちょっと変わっていったんですね。
なので、コストの要因がAI以前だと手戻りの量だったほうが、それがAI時代になると理解のシフトして、
その曲線、コスト、後工程になればなおほどコストが高くなるっていう、
その高くなる、コストが高くなる度合いがさらに急勾配、かなりコストが高くなるっていうふうに考えられて。
その上で、品質補償活動がどう影響するかっていう話なんですけれども、
実際にいろいろなチーム、複数チームで開発をしていくっていうことを考えると、
そのコストの関数をこの記事の中だと、オーダーのNプラスyNの2乗という表現をしていました。
ここでいうNっていうのはチーム数のことです。
yはチーム間の調整係数になります。
なのでこの二次項の部分ですね、yNの2乗っていうところの部分っていうのが、
チームとチームをまたいで何か調整をしなくちゃいけないっていうのは、
その単一のチームで頑張ることよりもかなりコストがかかるよっていうのをここでは表現しています。
もちろんチーム数がいっぱい増えれば増えるほど、そこのコストはすごい大きくなります。
静か数的に増えていきます。
かつここが疑問になるんですけれども、
じゃあチーム数が増えていったときにチーム間の調整係数っていうのをできるだけ小さくしようっていう考えをするといいかなと思っています。
そうするとyが小さくなればなるほどNの2乗にかかる係数が小さくなるので、
オーダー全体としてもコストとしては低くなりますよと。
先ほど言った積極的な品質特保証活動を行う企業っていうのはこのyを小さく保つ努力がされているんですね。
決してゼロになるわけではないんだけれども、いかにチーム間の調整のコストを少なくするかっていう努力をしているわけですね。
例えばマイクロサービスにしてチーム間で依存関係の少ない状態にするのもあるでしょうし、
テストのことを考えると早めにテストのことを考えて、じゃあこの部分は単体レベルできちんとしましょうと。
どうしてもチーム間をまたぐこの部分だけは統合テスト、システムテスト、受け入れテストみたいなそういう後行程のところでテストをしましょうと。
全部をチーム全て作り終わった後につなげてテストするところにいっぱい時間をかけるんじゃなくて、できるだけ単体に寄せましょうよとか。
このゲストの中ではまだ紹介してないですが、例えばテストピラミッドの考え方を使ってユニットレベルのテストを多くしましょうみたいな、
そういうのもある意味このチーム間の調整係数っていうのをできるだけ小さくする努力になるわけですよね。
これが今チームとチームの間でそこのコストを掛け合わせるよみたいな言い方をしましたが、
これが特にコーディングツールにおける話で言うと、チームとチームではなくて人間とコーディングツールっていうそこの間っていうふうに考えられるわけですね。
つまり、例えば個人で開発しているような場合でもこのNのところには2が入るわけですね。
自分自身とコーディングツールっていうNイコール2になるわけですよね。っていうふうに考えられると。
そうするとそこの調整係数っていうのをちゃんと考えないと、どんどんどんどんエプシロンNの2乗っていうのが大きくなりますよね。
単にチームの数だけじゃなくてコーディングツールもそこのNに入ってくると、さらにコストが増えていくよっていう考え方があります。
だからこのエプシロンを小さく保つためには先ほど言った積極的な品質保証活動を行うっていうのが重要になってくるよっていうのをこの記事では紹介しています。