ソフトウェア開発はあらゆるセオリーが過渡期(2)
先週書いたことの続き。
人間はソースコードを見なくてよいのか。コードレビューも不要なのか
システムに期待される要件や実装対象の機能による。というのが答えになると思う。だから一概に必要・不要を語っても仕方がない。
一番言いたいことは、できあがったものに対してレビューが必要・不要という議論よりも、レビューの必要性を下げるために良い設計をすることに重きをおくべきということだ。
どういうときにレビューが必要なのかでいうと「A:リスクの大きさ」「B:検証容易性」の2つの観点があると思う。
Aのリスクのほうはよく言われる話だ。決済とか、契約とか、インフラ移行のように失敗すると損害が大きく切り戻しが難しいもの。これは変更に慎重になるべきだ。一方で、Bの検証容易性が十分高い、つまり対象の変更をしたときにシステムの振る舞いがどう変わるかが十分にわかりやすくて影響範囲が限定的であり、テストコードにより十分に検証可能といえるときは、A:リスクの大きさの比重は小さくなり、B:検証容易性が十分に高ければレビューは不要、検証が難しいのであれば慎重なレビューが必要となると思う。
そして、AとBではどちらかというとBのほうがコントール可能な指標である。Aは対象の機能により絶対的な基準だからリスク評価を動かすのは難しい。しかし検証容易性は設計や実装・リリース方法により改善可能だ。
そうすると、検証容易性の高い設計をするということが大事になってくる。具体的には、テスト容易性の高いコードを書いたり、DDDの文脈でいう集約(aggregate)の考え方に沿ってトランザクション境界と整合性境界をきれいに切った設計をすることだ。
私はDDDそのものについてはそれほど詳しく無いし、一般に言われているDDDの教義に沿った厳密な設計や実装をするのはむしろ否定派だけど、集約の概念は普遍的なものであり、AI時代にますます重要になってくると思っている。
UIは重要なのか、サービスを使うUIはユーザー側が選ぶようになるのか
これはユーザーのリテラシーやドメイン理解次第であるとなると思う。ユーザーが操作対象を十分に理解しているのであれば、ユーザーにとってもUIは個別最適化したほうが良いはずで、そうなると一律でUIを提供するようなことは不要となり、ツールやMCPが提供されているほうが好まれるだろう。一方で、ユーザーが操作対象を深くは理解していないときは、サービス側が提供するUIがユーザーが適切な操作をするための道標となり、ユーザーを適切にサポートする手助けができるという点で、UIの良し悪しはとても重要だと思う。
AIエージェントを動かすのはローカルかクラウドか
これは技術の螺旋で定期的に入れ替わる話だ。いま(2026年11月)時点でいうとクラウドに波が来ていると思う。Codex/Claude/Cursor/Devinなど各プラットフォームがクラウド環境を提供していてそれらが十分に成熟してきており、実用段階になった。そういったプラットフォームを使わないにしてもAWSのLambda MicroVMのように安価で自前でクラウド環境を起動することも可能になっている。昨今のセキュリティインシデントの多さをみても、いろいろな権限が集約されていて十分に隔離されていないローカル環境よりは、セッション単位で適切にサンドボックス化されていてセッションが終われば破棄されるクラウド環境のほうが安心感があり、私は最近はほぼ100%クラウド環境を使っている。
ただしまた揺り戻しがあると思う。クラウド環境はプラットフォーム側のリソースをつかうぶん高価であり、マシンパワーはローカルで余っているので、10並列くらいのセッションなればローカルで処理可能なので、ローカルできれいに隔離されたワーカーが動く仕組みができあがってくれば、またローカル環境を使うのが流行ってくると思う。DevinはDevin Outpostsでローカル環境にWorkerを起動できるし、Cursorも同様のことができる。AI駆動開発の費用対効果が厳しく求められるようになるにつれて、よりローカルへの回帰は強まるだろう。
MCPは不要なのか
一時期”MCP is dead”みたいな言葉が流行って、MCPみたいなプロトコルは余計である、APIやCLIで十分だ、みたいな議論が流行ったことがあった。そういった意見にはある程度の合理性があるけど、MCPは統一的なプロトコルなので、そのプロトコルに沿ったエコシステムが整備されるにつれてMCPの価値は高まっていくだろう。例をあげるとWeb MCPとかMCP Eventsのようなものだ。また、認証や監査のゲートとしてのMCPの価値もある。大きな組織であるほど、認証や監査の仕組みがシンプルで一元化できることは大事になってくる。ただしこれはMCPというレイヤーでなくてもいいかもしれない。AWSだとagentcore gatewayという仕組みがある。これはMCPもこの中に含めることはできるけど、もう1レイヤー上のレイヤーに一元的なゲートウェイを設けるというものだ。SnowflakeにもCortex AI Gatewayというものがあり、これも類似の概念である。こういう感じで、まだ何がベストプラクティスになるかは流動的であるが、何らかのプロトコルが標準化されることに価値はあると思う。