肥大化を削るのは選択ではない。性能がそうさせる

肥大化を削るのは選択ではない。性能がそうさせる

目次

ソフトウェアの世界には、見慣れた錯覚がある。たとえば、ただの数学演算を六層もの間接呼び出しで包み込み、それを「エンジニアリング」と呼んでしまうことだ。

しかしベンチマークは言葉遊びに付き合ってくれない。実際のワークロードが入った瞬間、ストップウォッチはすべてを暴く。もし速度が一桁遅いなら、それは流儀の違いではない。コストの問題だ。

だからこそ、経験のあるエンジニアほど、かつて自分たちが信じさせられていたルールを静かに壊していく。一方で、若いエンジニアは面接のために、その古くなったルールを今でも必死に暗記している。

ルールは原則ではない。抽象化は宗教ではない

常識と実測を上に置いてしまうルールは、原則ではない。ただの迷信だ。

システムが本番負荷に触れたとき、すべての抽象化は同じ問いを突きつけられる。誰の時間を節約し、誰のコストを別の場所へ押し付けたのか。

肥大化の解消は、流行のスローガンではない。現実に押し出されて生まれる修正だ。設計レビューでアーキテクチャの美しさを褒め続けることはできるが、実際に生き残るかどうかを決めるのは、起動時間、メモリ使用量、テールレイテンシ、クラウド料金、そして午前3時に鳴るページャーだ。

なぜ新しい言語が次々に出てくるのか

もし言語が十分に素直で、境界、意味、コストを全部把握できるなら、それは現代の重いスタックでは失われがちな明快さを与えてくれる。Zig はその代表例だ。静的バイナリ、小さな成果物、直接的な挙動。接着剤のような層の奥に閉じ込められていたものを、再び取り出すのに向いている。

Bun のような runtime が Zig で Node 周辺の機能を書き換えているのも、単に新しいからではない。遅い実行経路と重たい歴史的負債から逃れたいからだ。開発者は待たされることにうんざりしていたし、単純な問題を儀式のように複雑化することにも疲れていた。

Mojo が出てきた理由も同じだ。過去15年、Python のデータサイエンス基盤は C、C++、Fortran を何層もの抽象化の後ろに隠してきた。NumPy を import するだけで、大量の native code をメモリに抱え込むことさえある。本来は直接扱えるはずの数値計算のためにだ。Mojo が問い直しているのは、結局こういうことだ。性能を、もう隠さなくていいのではないか。

誇張ではない。インフラが変わっている

Rust がインフラチームに選ばれ続けるのは、単純な理由がある。安全性と性能を、どちらか一方を犠牲にする形ではなく、同じテーブルで扱えるからだ。

Cloudflare の Pingora、Discord の既読状態サービス、Microsoft による Windows カーネル関連モジュールの Rust への移行は、壇上の演出ではない。現実の圧力の中で、必要だから選ばれた判断だ。

Go は別の道を行く。派手さはないし、雄弁でもない。ただ静かに GC を改善し、バイナリを小さくし、サービスを速く立ち上げる。かつて JVM を第一候補にしていたチームが、クラウドコストとコールドスタートの遅さを気にし始めたとき、最終的に残るのはこういう地味な強さだ。

C++ も退場してはいない。Chromium の遅延に敏感なコンポーネントは、今でも C++20 で書き直され、磨かれている。あと数ナノ秒が、良い体験と障害対応の境目になる場面があるからだ。

さらに一部のドメイン固有言語は、もっと徹底している。汎用フレームワークに合わせるのではなく、最初からハードウェアに寄り添う。Ampere のような発想は、クラウドデータセンターでは開発の便利さより、メモリ割り当てや実行オーバーヘッドのほうが重要なことがある、と教えてくれる。

抽象化は無料ではない

つまり何が起きているのか。性能のボトルネックが本当に来たとき、人はかつて神聖だと思っていた抽象化の層を、ためらわずに手放すということだ。

ただし、ここは誤解しないほうがいい。言語が救ってくれるわけではないし、フレームワークが救ってくれるわけでもない。クラウド事業者も救ってくれない。彼らは道具にすぎない。根本の問題は、私たちがどうシステムを組み立てるかにある。

私たちはつい層を積み上げる。もう一枚かぶせればすべてうまくいくような気がしてしまう。だが結果として生まれるのは、誰も全体を理解できないシステムだ。どの層も「効率を上げた」と言うが、複雑さ、遅延、コストは、結局次の担当者に押し付けられる。

支払いは必ず来る

クラウド料金、すぐに減るスマホの電池、そして午前3時にあなたを起こすページャー。どれも同じことを教えている。無料の昼食などない。

肥大化の解消は、好みの問題ではない。生存条件だ。

いま修正を始めないチームは、いつか必ず午前3時の電話を受けることになる。

忘れてはいけない。午前3時にフレームワークは当直してくれない。現場に行くのは、あなた自身だ。

肥大化を削るのはスローガンではない。現実だ。

共有 :