AI時代のコードレビューは「クラス図」のレビューに回帰する

AI時代のコードレビューは「クラス図」のレビューに回帰する

はい、どうもこんにちは佐藤です!

最近、AI にコードを書かせていて、しみじみ思うことがあるんですよね。

変数名の付け方とか、ループの回し方とか、早期 return がどうとか。かつてのコードレビューで散々指摘してきた、ああいう細かい話。

もう、どうでもよくなってきたんだわ。

AI が「距離の近い」クラスの中身を完璧に書いてくれる時代、私たちが本当に見るべきものは別のところにある。それは結局、昔ながらの「クラス図」のレビューに回帰していくんですよね。

なぜそう言えるのか。そして、その先に待っている厄介な問題について書いていきますね!


AI時代のレビューは「クラス図」のレビューになる

まず、何が起きているのか整理しましょう。

AI は、ひとつのクラスやひとつの関数の「中身」を書かせると、もはや人間より上手いです。エッジケースの処理、ガード節、命名。こうした「距離の近いロジック」については、レビューで指摘することがほとんどなくなりました。

では、レビューする意味がなくなったのでしょうか。違いますよね。

主戦場が移っただけです。

AI がローカルなロジックを保証してくれるなら、人間が担保すべきは、その外側――システムの「結合」と「契約」になります。このクラスとあのクラスは、どういう責務で、どんなインターフェースを通じて会話するのか。どこからどこまでがひとつの塊なのか。

これって、まさにクラス図が表現してきた世界そのものなんですよね。コードの行を追うレビューから、構造を俯瞰するレビューへ。AI 時代のレビューは、クラス図のレビューになるのです。


「プログラムの距離」が契約の厳密さを決める

ここで鍵になるのが、私が「プログラムの距離」と呼んでいる概念です。

プログラム同士には、距離があります。距離が遠いほど、その間で交わす「契約」は厳密でなければなりません。

たとえば、フロントエンドとバックエンド。両者は別プロセスで動き、ネットワークを越えて会話しますよね。距離はかなり遠い。だから API という契約は、型もエラーも含めて、徹底的にカチッと固める必要があります。

一方で、同じクラスの中のメソッド同士。これは距離がほぼゼロです。ここの契約をいちいち厳密に定義しても、過剰なだけですよね。

クリーンアーキテクチャを思い浮かべてください。進行役であるアプリケーションサービスと、ビジネスルールを宿すドメインサービス。この 2 つの間には、明確な境界線が引かれています。あるいは DDD でいう「境界づけられたコンテキスト」を、システムのどこに引くのか。

これらはすべて、「距離に応じて、どこに契約の壁を立てるか」という設計判断なのです。

そして面白いことに、AI はこの判断が苦手です。与えられた枠の中でコードを書くのは天才的。でも、その枠=境界線そのものを引く作業は、依然として人間の領域なんですよね。どこに線を引くべきかは、業務の本質をどう捉えるかに依存します。コードの外側にある問題だからです。


クラス図は「AIへのプロンプト」として復権する

さて、「クラス図のレビューに回帰する」と言うと、嫌な顔をする人がいます。

わかります。かつて SIer の現場で描かれていた、あの Excel 方眼紙に詰め込まれた重厚長大な UML。更新されないまま腐っていく、形骸化したドキュメントの山。あの時代に戻りたいわけじゃない。

戻りません。これからのクラス図は、役割がまるで違うのです。

かつてのクラス図は、人間が人間に読ませるための「仕様書」でした。これからのクラス図は、**人間が AI に食わせるための「プロンプト」**になります。

Copilot や Cursor に、コンテキストとして制約を与える。「このドメインモデルの構造を守って実装して」と。Mermaid や PlantUML で記述された軽量なドメインモデルこそが、人間と AI が共通言語としてやり取りする、現代の「設計図」なのです。

テキストで書けるから、差分も取れる。コードと一緒にリポジトリで管理できる。腐ったら気づける。重厚長大な UML とは、似て非なるものですよね。設計の意図を AI に伝える制約として、クラス図は復権するのです。


良い設計を引く力は「阿頼耶識」から生まれる

ここまでは、わりと明るい話でした。

問題はここからです。じゃあ、その良いクラス図を、誰がどうやって引けるようになるのか。

正直に言いましょう。良い境界線を引く力は、知識として教わって身につくものではありません。あれは、過去の痛みを伴う失敗の蓄積から生まれます。

密結合なコードを書いてしまって、仕様変更のたびに地獄を見た。あちこちに影響が飛び火して、徹夜でスパゲティを解きほぐした。「二度とこんな設計をするものか」と骨の髄まで刻まれた。

そういう無数の失敗が、無意識の判断力として沈殿していく。私はこれを、仏教用語を借りて 「阿頼耶識(あらやしき)」 と呼んでいます。言葉にできないけれど、図を見た瞬間に「これは危ういぞ」と肌で感じる、あの感覚です。

ベテランがサッと引く境界線の裏側には、この阿頼耶識があるんですよね。


「高速な失敗」という幻想――AIは若手を甘やかす

では、若手にどうやって設計を教えるか。

ここで、ひとつ妙案が浮かびます。「わざと AI に悪いクラス図を渡して、仕様変更でシステムが破綻するのを、高速で疑似体験させればいいのでは?」と。失敗から学ぶのが大事なら、その失敗を AI で爆速に回せばいい。一見、賢いアイデアですよね。

でも、これは機能しません。理由は単純で、痛みがなさすぎるからです。

考えてみてください。密結合な設計のせいでコンテキストが肥大化し、トークン消費が跳ね上がったとします。でも、その請求書を払うのは会社です。若手エンジニアの懐は、一円も痛みません。

修正でスパゲティコードが生まれても、「このバグ直して」と AI に投げれば終わりです。AI は文句ひとつ言わず、なんとか動くように直してくれる。かつて私たちが、自分の手で、徹夜で、呪いの言葉を吐きながら解きほぐした、あの physical な痛みがどこにもないのです。

痛くない失敗は、阿頼耶識に沈殿しません。AI は、コードという泥臭いレイヤーの痛みを、すべて肩代わりしてしまう。良かれと思って、若手を甘やかしてしまうんですよね。


最後に残る壁は「仕様の理解」に遡る

AI がコード修正の痛みをすべて吸収する時代。それでも、設計の破綻が唯一、人間に牙を剥く瞬間があります。

それは、「そもそもドメインの捉え方が間違っていた」と気づくときです。

クライアントの真の要求と、AI が生成したシステムとの間に、どうしようもないズレが生じる。ここに至ると、コードの表面的な修正では、もうどうにもなりません。境界づけられたコンテキストを引き直し、概念モデルから作り直すしかない。「ドメインの深い理解」が、最後の最後で要求されるのです。

ところが、ここで詰むんですよね。

コードレベルの小さな失敗――距離の近い痛み――を一度も経験せずに育った若手が、いきなりこの抽象度の高い「仕様理解の壁」を越えられるでしょうか。

階段を一段ずつ上ってきた人間なら、登れます。でも AI 時代の若手は、その下の階段を AI にスキップさせられている。土台となる阿頼耶識がないまま、いきなり最上階の難問に放り込まれるのです。これは、かなり酷な話ですよね。


まとめ

というわけで、AI 時代のレビューはクラス図のレビューに回帰していくよ!って話でした。

あ。正確には、コードの中身は AI に任せて、人間は境界と契約を見る って感じですねっ。

そこまでは、まあ間違いないと思っています。問題はその先です。クラス図を引くための「阿頼耶識」を、どうやって次世代にインストールするのか。

かつて私たちは、バグと仕様変更の嵐に揉まれ、コードという泥臭いレイヤーで失敗を繰り返しながら、無意識のうちに設計の感覚を育ててきました。でも AI がコードを書き、AI がコードを直す時代。私たちは「実装」という下積みをスキップさせて、いきなり「設計」と「仕様のモデリング」を若手に要求することになります。

しかも、AI なしでコードを書かせる予算も時間も、もう現場には残されていません。経営は効率を求めます。「あえて失敗から学ばせる」なんて贅沢は、許してくれないのです。

正直、この問いの答えは、私もまだ見つけられていません。やっぱり、この問題はとても難しい。みなさんは、どう継承していきますか。

この記事をシェアする