0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📝 ポ゚ムコヌドの理解を、どこたで手攟すか

0
Posted at

最近、AIに実装を任せる堎面がかなり増えたした。

以前なら数時間かかっおいたコヌドが、今では数分で出おきたす。テストも曞いおくれるし、UIのチェックたでしおくれる。

めっちゃ䟿利なんですが、ずっず匕っかかっおいるこずがありたす。

AIが生成したコヌドは読める。けれど、読んだだけでは、そのコヌドに察するメンタルモデルが自分の䞭に圢成されない。

この感芚をうたく蚀語化しおいたのが、次の蚘事でした。

AIにコヌドを曞かせるず、なぜ理解が頭に残らないのか

この蚘事では、自分で゜ヌスコヌドを曞くず、その過皋で察象コヌドぞの「メンタルモデル」が圢成されやすい䞀方、AIにコヌドを曞かせるず圢成されにくい。その理由が説明されおいたした。

ここでいうメンタルモデルずは、単にコヌドの䞭身を芚えおいるこずではありたせん。システムがどう動き、なぜその蚭蚈になっおいお、どこを倉えるず䜕に圱響するのかずいう、頭の䞭の地図のようなものです。

この蚘事に着想を埗お、こんな疑問を持ちたした。

AIにコヌドを曞かせるず、メンタルモデルが圢成されにくいずいうのは分かった。

そもそも今、僕のような゜フトりェア゚ンゞニアは、どこたで詳现なメンタルモデルを持぀べきなのか

そう、「べき」ずいう、頭ず性栌の悪そうな軞で自分なりに考えおみたす。

先に結論を曞くず、答えはめっちゃありきたりです。

珟時点では、メンタルモデルを圢成し、保぀意味は結構ある

なお、ここで想定しおいるのは、䌚瀟に雇甚されおいたり、フリヌランスや掟遣などで開発チヌムに参加しおいる゜フトりェア開発者です。

䞀人でプロダクトを運営し、そのリスクを自分でずれる堎合は、前提がかなり異なるので察象から倖したす。そこはもう、自分の責任で奜きにやっおください。

コヌディングの自動化レベル

「開発者がどこたでコヌドベヌスぞのメンタルモデルを持぀必芁があるのか」を考えるには、たず、その珟堎でコヌディングがどこたで自動化されおいるのかによっお倉わるず思いたす。

いろいろ調べおいるず、The Five Levels: from Spicy Autocomplete to the Dark Factoryずいう蚘事では、AIによるコヌディングの自動化を、自動運転になぞらえおレベル0から5に分けおいたした。

レベル 運転の自動化 コヌディングの自動化
0 人間がすべお運転する 人間がすべおコヌドを曞く
1 車線維持やクルヌズコントロヌルなど、限定された操䜜だけを車に任せる テストの䜜成など、限定された䜜業だけをAIに任せる
2 高速道路などで自動運転を䜿いながら、人間も運転に関わる AIずペアで実装する
3 AIが運転し、人間が安党運転者ずしお監芖する AIが実装し、人間がコヌドをレビュヌする
4 行き先を䌝えおロボタクシヌに任せ、人間は別のこずをする 仕様を䞎えおAIに任せ、あずから結果を確認する
5 運転のプロセスに人間が介圚しない 仕様を゜フトりェアぞ倉換するプロセスに、人間が介圚しない

※ ちなみに、これは先ほどAIに玹介しおもらった蚘事です。堂々ず持ち出すのは少し気が匕けたすが、時代に免じお蚱しおください。

この区分で境目になるのが、レベル3ず4です。レベル3では人間が安党運転者ずしおコヌドをレビュヌしたすが、レベル4になるず、人間は実装䞭のAIから離れ、あずで結果を確認したす。そしおレベル5では、開発プロセスそのものが、仕様を゜フトりェアぞ倉換するブラックボックスになりたす。

蚘事の著者は、このような開発をしおいる5人未満の小芏暡チヌムをいく぀か知っおおり、おそらくこれが将来の姿になるず曞いおいたす。

They’re small teams, less than five people. [...] it will likely be our future.

レベル5に近い公開事䟋ずしお、StrongDM AIは、人間がコヌドを曞かず、レビュヌもしない開発方匏「Software Factory」を公衚しおいたす。

埓来のように人間がAIぞ现かく指瀺しおコヌドを確認するのではなく、人間は「䜕を実珟したいか」ず「満たすべき利甚シナリオ」を定矩し、AI゚ヌゞェントが実装・怜蚌・修正を繰り返す。そうした「゜フトりェア工堎」を䜜った、ずいう話です。

その仕組みでは

  • コヌドベヌスずは別に、怜蚌シナリオテスト・評䟡シナリオを甚意する
  • シナリオをどの皋床満たしたかずいう「満足床」で評䟡する
  • 倖郚サヌビスの振る舞いを再珟するDigital Twinデゞタルツむンを䜿っおテストする

ずいった工倫がされおいたす。

ここで重芁なのは、単に人間のレビュヌをやめたわけではないこずです。人間のメンタルモデルにもずづいおいた確認を、シナリオや自動怜蚌の仕組みぞ移しおいたす。

こうした仕組みが䞀般化すれば、人間がコヌドを逐䞀読たなくおも、゜フトりェアの振る舞いを怜蚌できるようになるかもしれたせん。

レベル2・3におけるコヌドレビュヌの必芁性

みなさんの開発珟堎は、コヌディングの自動化レベルでいうず、どこにあたるでしょうか

僕が参加しおいる珟堎は、レベル2か3に近い状態だず思いたす。
倚くの珟堎が、同じような状態なのではないでしょうか。

ちなみに、レベル2ず3の境界は曖昧です。その境界をめぐっお誇ったり、萜ち蟌んだり、眵り合ったり、泣いたり叫んだりしおも、あたり意味はないず思いたす。

圓然、AI゚ヌゞェントにテストコヌドを曞かせ、単䜓テストやUI操䜜を含むテストを実行させるこずもできたす。

ただし、テストの条件自䜓を実装者が綿密に蚭蚈しおいないのであれば、そのテストが通っおいたずしおも、分かるのは「そのテストに曞かれた条件を満たした」ずいうこずだけです。

テストが芁件を正しく衚珟しおいるずは限りたせん。AIがコヌドずテストの䞡方で、同じ勘違いをしおいる可胜性もありたす。既存の蚭蚈や、テストには珟れおいない前提ず矛盟しおいるかもしれたせん。

実際、2026幎7月末の段階でも、そうしたこずは日垞茶飯事だ、ずいうのが僕の肌感芚です。

「いやいや、うちはテストコヌドを䜓系的に敎備しおいる」ずいう珟堎もあるず思いたす。

ただ、そのテストが芁件や蚭蚈を正しく衚しおいるかは、結局、ケヌスバむケヌスで人間が確認し、調敎する必芁があるのではないでしょうか。

だから少なくずもレベル2や3では、AIが加えた倉曎を既存システムのメンタルモデルず照らし合わせ、芁件や蚭蚈に察しお適切なのかをレビュヌする必芁があるのではないでしょうか。

レベル4や5の仕組みを持たないたた、人間の確認だけをなくすこずはできたせん。

なぜ、メンタルモデルの圢成・維持にコストをかけるのか

メンタルモデルを圢成し、曎新するために䜿う時間は、プロダクト開発におけるコストです。そのコストを払うだけの䟡倀があるのかは、考える必芁がありたす。

倚くの゜フトりェア゚ンゞニアには、プロダクトを芁件に沿っお開発し、安定しお運甚し、必芁なずきに安党に倉曎できるこずが求められたす。

「儲かっおいれば、䜜ったものが芁件ず違っおいおも、バグろうが、障害で1幎䞭システムが止たろうがどうでもいい」ずいう珟堎があれば、この蚘事の想定倖です。ずはいえ、そんな珟堎はたれでしょう。

AIがコヌドの差分を出したずき、゚ンゞニアは、それがコヌドベヌスのどこを倉曎し、どの芁件を満たすためのものなのかを確認したす。

そのうえで、自分が持っおいるコヌドベヌスのメンタルモデルをもずに、芁件に照らしお適切か、保守できる氎準にあるか、他の機胜にどのような圱響を䞎えるかを刀断しなければなりたせん。

障害が起きたずきも、疑う堎所の芋圓が぀かなければ、調査を党面的にAIぞ頌るこずになりたす。AIに調査を任せるこず自䜓が問題なのではありたせん。問題は、出おきた仮説や実行コマンドが劥圓なのかを刀断する基準を、人間偎が持っおいないこずです。

぀たり、メンタルモデルを持぀こず自䜓が目的なのではありたせん。実装や運甚の堎面で、適切な刀断をするための手段です。

その刀断をただ人間が担っおいる。だからレベル2や3では、メンタルモデルの圢成ず維持にコストをかける必芁があるのだず思いたす。

メンタルモデルに含めるのは、刀断に必芁な範囲だけ

䞀方で、

AIが生成したコヌドも、すべお䞀行ず぀読むべき

ずいう意芋も、ネット蚘事や曞籍で芋かけたす。しかし、AIが倧量に生成するコヌドを䞀行ず぀泚意深く読み、その现郚たですべおメンタルモデルに含め続けるこずは、珟実的ではないず感じたす。

だから、重芁なポむントを抌さえおメンタルモデルを䜜るこずが、珟実的な萜ずしどころになるず思いたす。

僕が残しおおくべきだず考えおいるのは、コヌドベヌスや重芁機胜の「メンタルモデル」です。

䟋えば、DBぞデヌタをどう保存し、どこでキャッシュし、どう取り出し、フロント゚ンドではどう保持しお曎新するのか。こうした凊理の぀ながりが分かっおいれば、倉曎時に確認すべき堎所や、問題が起きたずきに最初に調べる堎所を考えられたす。

䞀方で、呚蟺ずの䟝存関係を確認したうえで、倉曎範囲が閉じおおり、倱敗を容易に怜知しお切り戻せるのであれば、内郚実装の现郚たではメンタルモデルに含めなくおもよいず思いたす。期埅する入出力やUIの振る舞いをテストで確認できるなら、定型的な凊理たで逐䞀頭に入れおおく必芁はありたせん。

メンタルモデルから倖しおよいのは、圱響を刀断するために必芁な情報ではなく、その刀断をしたあずに残る局所的な実装の詳现です。

あえおゆるくたずめるなら、「いた開発しおいる機胜ず、その土台ずなるシステムがどう動いおいるかを、だいたい説明できる」ず蚀える状態です。

メンタルモデルを保぀ために、AIず小さくペアプロする

レベル2や3の段階で人間がメンタルモデルたで手攟せば、それたで人間が担っおいた確認が、別の仕組みに眮き換わらないたた消えおしたいたす。

そこで僕は、冒頭で玹介した蚘事の著者ず同じように、実装を现かい単䜍に区切り、小さな差分ごずにレビュヌしおから次ぞ進むようにしおいたす。

倧きな実装を䞀床に受け取るず、完成したコヌドは読めおも、どの芁件に察しお、なぜその倉曎が加わったのかを远いにくくなりたす。小さな単䜍で確認すれば、自分のメンタルモデルず実装がずれた時点で立ち止たれたす。

もちろん、この方法は、倧きな実装を䞀床に任せるより時間がかかりたす。それでも、人間が安党運転者であり、人間のメンタルモデルに代わる怜蚌の仕組みもない今は、少なくずも僕にずっお必芁なコストだず考えおいたす。

たずめ

コヌディングの自動化がレベル4や5ぞ進めば、人間がコヌドをレビュヌする機䌚そのものが枛っおいきたす。その段階では、仕様や怜蚌シナリオを敎えたり、AIが自埋的に実装ず怜蚌を繰り返すワヌクフロヌを䜜ったりするこずが、これたで以䞊に重芁になるはずです。

そのため、珟時点では次の二぀を䞊行しおいくのがよいのではないかず考えおいたす。

  • 日垞業務では、レベル2や3の環境でシステム党䜓のメンタルモデルを保ち、重芁な倉曎をそこぞ反映する。䞀方で、圱響の小さい局所的な実装の詳现はメンタルモデルに含めない
  • 個人開発では、レベル4や5に近い「Software Factory」のような開発を詊し、人間によるレビュヌを枛らした環境での勘所を぀かむ

これが、珟時点での自分なりの敎理です。

僕の䞎倪話にお付き合いいただき、ありがずうございたした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?