ソフトウェアの「大きさ」

投稿日:

「ソフトウェアは大きくなればなるほど本当のエンジニアリング力が求められるようになる」

よく耳にする話だ。でも大きくなるにつれてエンジニアリングやビジネスが困難にある、という文脈での「大きさ」とは果たしてなんだろうか?それは単純にコードの行数のようなものか。それとも依存している外部サービスの種類や数の多さによるものか。はたまた何かしらの指標に従って計算されたシステムの「複雑度」のようなものか。

上記のいずれもソフトウェアの規模の大きさに寄与する話だと思う。が、果たしてそれらは本質的なものなのだろうか?私は違うと思う。私は本質的にソフトウェアの「大きさ」とはそのソフトウェアに纏わるステークホルダーの多さや複雑さであると思う。ステークホルダーが多くなればなるほど、多様になればなるほど、そのソフトウェアを運営する難易度は上がる。そしてそれは多くの場合に「エンジニアリング」の範疇も超えた対策が必要になる。だからビジネスも困難になっていく。

MicrosoftでWindowsの開発チームに属していた頃、Windowsの開発は「10億人に注文されたピザのようなもの」と喩えられていた。ピザ、という世界的に有名で多くの場合には共通理解のあると思われる食べ物であったとしても、そこに求めるものは実に人によって様々だ。ある人は伝統的なマルゲリータが食べたい。ある人はチーズだらけのピザにしたい。シカゴピザのような肉厚な生地からローマのパリパリの生地まで、ピザに求めるものは様々だ。

ソフトウェアのステークホルダーが多くなり多様になれば、そこに求められるものは実にバラエティー豊かになっていく。そしてその「ステークホルダー」とは何も「ユーザー」や「お客様」だけを指さない。開発者、デザイナー、PdM、セールス、カスタマーサポート、同じソフトウェアを提供する仲間であったとしても、そこに求めるものは違いがある。そしてそれはそうあって然るべきだ。そして時に、いや多くの場合に、求めるもの同士がトレードオフの関係になる。トレードオフが発生すればどちらを取るのか決断するか、もしくは双方解決するような案を発見し実装しかない。

ステークホルダーが少ない、またはステークホルダーがバラエティー豊かではない、こういう場合には話は飛躍的に単純になる。もちろん上述したような「複雑度」の高いソフトウェアであれば、改修の必要があった場合の手間暇は高くなるだろう。が、この生成AIの時代、目的がはっきりしている改修であればこういったことのコストは劇的に低くなった。いわゆるAI驚き屋のように喧伝する気はないがが、ここのコストが今後も下がり続けることは確実だろう。コードがどう書かれているか、によって生まれている制約というのはどんどん解決されていく。システムが相互に依存する部分についてはまだ生成AIが解決する時代ではないが、これも Anthropic がクラウド事業に乗り出して一気に進化する、なんて日も遠くないかもしれない。

徒然と書いた話をまとめると、ソフトウェアの「大きさ」や「複雑さ」よりも、そのソフトウェアの周りに存在している全てのステークホルダーの「多さ」や「複雑さ」の方がビジネス的に本質的な違いを生む。そしてそこにはエンジニアリングで解くべき問題もまだまだ多く存在し続けると思うが、生成AIの時代にそこのコストは想定的にどんどん安くなり、結果としてエンジニアリングの外側の問題に注目や課題が集まるであろう。そしてそういった解決する人も広義の「エンジニア」と呼ばれているかもしれないが、今は存在していない形で活躍する人材であるだろう。