世界を動かす技術を、日本語で。

ソフトウェアエンジニアリングの未来はSREである

2026年1月26日原文(swizec.com)

概要

  • コード作成 は簡単だが、 運用 は難しい現実
  • SRE(Site Reliability Engineer) の需要が急増する予測
  • ノーコードやスプレッドシート の限界と「コンピュータ病」
  • 運用の卓越性 が今後のソフトウェア価値を決定
  • 信頼性・可用性 の確保が本当のエンジニアリングの課題

コードが安くなる時代、運用の卓越性が勝つ理由

  • コードを書くこと自体は 誰でもできる 時代の到来
  • デモ環境 の構築は簡単だが、本番サービスの運用は 高度な技術 が必要
  • エージェンティックコーディング の普及でも、 ソフトウェアエンジニア の需要はむしろ増加
  • SRE(Site Reliability Engineer) の役割が今後最も重要な職種となる予測
  • 多くの人が 新規開発 を好むが、 サービス運用 を担いたがらない現実

コードを書くより難しい「運用」の本質

  • コードを書く作業 は昔から簡単だった事実
  • 本当に難しいのは コードを長期間安定して動かし続ける こと
  • ソフトウェアエンジニアリング の本質は「時間をかけてプログラミングすること」
  • システムが変化し続ける中での 運用課題

ノーコード・スプレッドシート時代の教訓

  • ノーコードやスプレッドシート は「一時的な解決策」に過ぎない場合が多い
  • 非エンジニア が独自にツールを作成し、業務効率化に成功する事例
    • 業務時間が大幅短縮されるメリット
    • しかし、 継続的なメンテナンス や予期せぬ問題発生
  • ビジネスやルールの変化に ツールが追従できず苦労
  • 担当者が休めない・引き継げない などの運用上の課題が顕在化

「コンピュータ病」とは何か

  • Feynman が「コンピュータ病」と呼んだ現象
  • 自動化やツール作成は楽しいが、 運用の負担 が増大
  • 長期運用・規模拡大・信頼性確保 が本当の難所
  • 本当に価値あるのは「 サービスとしての運用

運用の卓越性が未来を決める

  • ユーザーは ソフトウェアそのもの でなく「 サービス体験」を求める
  • 例えばiCloudやNotion、gDocsなどの 裏側の仕組み には興味がない
  • 支払いネットワークやPOS端末 の仕組みより「 使えること」が重要
  • 良いソフトウェア は「 見えない存在」であることが理想

本当に問われる運用の指標

  • アップタイム障害復旧速度 などの運用指標
  • ユーザーより先に障害を検知・対応 できる体制
  • 上流依存 の管理やベンダー不具合への即応力
  • エンジニア同士の衝突防止大規模開発の一貫性維持
  • 時差夜間対応 など、グローバル運用の課題
  • セキュリティアップデートデータ漏洩防止 への信頼性
  • 法的保証サービス品質保証 の有無

まとめ:エンジニアリングの本質

  • コードを書くこと は容易、 運用こそが真の挑戦
  • 現代のエンジニア に求められるのは「運用の卓越性」
  • ユーザー信頼サービス継続性 の確保が最大の価値

Swizec Tellerのメッセージとリソース案内

  • Swizec Teller は「コーダーを真のエンジニアへ」導く執筆活動を展開
  • キャリアアップ・自律性・チームへの貢献 を重視したマインドセット提唱
  • Senior Engineer Mindset 電子書籍や Serverless Handbook など学習リソース提供
  • JavaScript、React、Serverless、Fullstack Web などの最新情報を発信
  • 週刊ニュースレターインタラクティブチートシート も展開
  • エンジニアとしての成長 を目指す人への応援メッセージ

Hackerたちの意見

stackskiptonが権限についていいこと言ってるね。SREはGoogleで働いてるから、SREがリリースを止めたり、修正を要求できるんだよね。その組織的な力がなければ、ただのオンコールエンジニアで、ツールも作るって感じ。記事の前提(AIがコードを安くするから、運用が差別化要因になる)は一理あるけど、ちょっと違う視点で考えたいな。ボトルネックは「コードを書くこと」じゃなくて、何を作るか理解して、それを運用し続けることだった。AIはそのうちの一つを助けるかもしれないけどね。

SREはリリースを止めたり、修正を要求したりできるから、私の在職中はあまりそうは感じなかったけど、Googleは大きいから、実際にそういう風に振る舞えるチームもあるんだろうね。

この記事には全く同意できないな。ソフトウェアエンジニアリングの未来はもっとT字型になると思う。前向きなスタートアップやスケールアップで広がっている「プロダクトエンジニア」の役割を見てみて。これがSWEの未来だと思う。SWEは既存の役割の中で、PMやデザインの責任も増えていくんだよね。

同意するよ。多くの場合、開発者がプロダクトの人になる方が、プロダクトの人が開発者になるよりも簡単だと思う。LLMがあっても、技術的なタスクを効果的にこなすには、ある程度の技術スキルとコードを読む能力が必要だからね。もちろん、プロダクトが本当に深いドメイン知識を必要とするものであれば、状況は違ってくるかもしれないけど。

それに、アーキテクトも必要だよね。誰かがロボットのためにきれいな図や仕様書を描かなきゃいけない。ただ、自動化された工場みたいに、必要なのはほんの一部だけなんだ。

エージェントの群れがSREよりも賢くて優れているなら、他の労働者と同じように置き換えられるよ。特別な保護がある分野なんてないからね。

C-suiteの役員や株主はどうなるの?自動化から安全なの?

まさにその通り。これはただの人が、俺たちの新しい支配者にいつか頭を下げなきゃいけないってことを理解する前に、藁をつかんでるだけだよ。追記:もしかしたら、彼は完全に気づいていて、遅くなる前に本を売りたいだけかもしれないね。

ソフトウェアを作る組織には2種類あると思う。小さなショップでは、一般的にインターネットにオープンなモノリスを運営していて、データベースが接続されているかもしれない。こういうショップは専用のDevOps/SREは必要ないよ。コンテナプラットフォーム(例えばAWS ECS/Fargate、GCP Cloud Run、fly.ioなど)にぶち込んで、可観測性やアラートを設定して、コンサルタントにレビューしてもらって、バカなことをしないように確認してもらえばいい。あとは毎月請求書を払って、あまり考えすぎないこと。大きなショップになると、コンテナプラットフォームのコストがエンジニアの給料より高くなる規模で運営していて、M&A前の異なる会社のシステムをどうやって連携させるか考えなきゃいけないところ、営業や法務チームから遠く離れたN個の開発チームがいて、SLAに縛られながらもそれを守らなきゃいけないところ、Xスケールを扱うように設計されたシステムが100倍のビジネスになって、失敗しているシステムにどんな応急処置を施すか考えながら、開発者には再設計が必要だと言わなきゃいけないところ、YAMLがゴミだからAlertmanagerのルーティングツリー設定を動的に構築する必要があるところ、SREがページャーを返すかどうかでルーティングルールが変わるところ、開発者が新しいサービスを自己サービスで作れるようにする必要があるところ、組織全体で新しいアラートを段階的に展開する必要があるところ、などなど。だから、Alertmanagerの設定もエンジニアが持つべきなんだ。大きなショップでLLMがSREを置き換えるなんて想像できないよ。SREが本番の障害をデバッグして「根本的」な技術的原因を見つけるのは、SREの機能のほんの一部に過ぎないからね。

SREが本番環境の障害をデバッグして「根本的な」技術的原因を探るのは、SREの機能のほんの一部に過ぎない。SREの目標に従えば、これは実際にはほんの一部ではなく、そもそも起こるべきではないことなんだ。はっきり言うと、これは常に必要だってことは分かってるけど、そうなった時は、サイト信頼性エンジニア(SRE)が何かを見落としたからだよね。だから、もしそれが仕事の大部分と見なされるなら…それはGoogleが定義したSREじゃないってことになる。私たちがコメントしているブログ記事とはほとんど関係ないけど、少なくとも私にはデバッグに焦点を当てた部分は見当たらなかった。将来的に信頼性のあるソフトウェアを生み出す能力が重要になるって言ってて、これは正しいと思うし、SREの公式な定義とも合ってる。

Cloud RunやCloud Functionsに関わった経験から言うと、クラウドプロバイダーでないほとんどの会社は、K8sと実際に競争できる中程度の機能を持った実装で、カテゴリー1に入ると思う。Kubernetesは大きな問題で、個人的にはクソみたいなプロトタイプだと思う。業界はそれに飛びついた(GoogleがDockerやAWSに対抗しようとして、コンテナやクラウドがホットな新しいものだった時に、KubernetesはBorgとほぼ同じだと見せかけたから)。それからコミュニティはプロトタイプの状態に固執して、すべてのSAASを買って、プロダクション環境をそれに基づいて構築した。今では、Kubernetesユーザーからお金を搾り取ることで生計を立てているSAASプロバイダーやプラットフォームエンジニア、DevOpsの人たちが自分たちの金のなる木を守ってる。K8sのマーケティングの一環として、インフラストラクチャエンジニアリングをKubernetesの上に構築することとして再ブランド化したけど、K8sは抽象化が漏れたり、膨大な設定面積を露出させたりするから、結局は「K8sだけどもっと設定が必要」って感じになる。あと、「プラットフォームが必要」ってことで、プラットフォームエンジニアリングもやらなきゃいけないし、gitをCIやslackbot/email/2FA、リリーススクリプトに接続するための全くユニークなユースケースのために。私の新しい会社ではこれを修正するために取り組んでるけど、オープンソース化できるのは多分1〜2年後になると思う(まだ一般化されてないし、Kubernetesと同じ過ちを犯したくないから。でも、オープンソースにはするつもり)。問題は主にマルチテナンシー、より良いプリミティブ、プラットフォーム自体でのユーザーストーリー全体のモデリング、スケーリングと状態に関する誤った二項対立や悪い抽象化を取り除くこと。あと、公式のツールがもっと必要で、YAMLがどのゾーンのネットワークホップの2以内に入ったら、バカ帽子をかぶらなきゃいけない。あなたの例では、1. このレベルの粒度でスケーリングやプロビジョニングを考える必要はないはずで、常にマルチテナントのゾーンレベルで行うべき。これはKubernetesが犯した大きな過ちの一つで、Borgはそれをずっと上手く処理してた。2. YAMLは確かにクソだけど、可用性の報告やアラートにはもっと公式なサポートが必要。すべてのeコマースショップや銀行がこれを構築するのは意味がない。3. 大量のアラートや設定は、クラウドプラットフォームがCloud Runのスケーリング速度で同期的/リアルタイムの請求を公開すれば、実際にはビジネスロジックで表現できる。考えてみれば、DevOpsチームが扱う問題の多くは、実際には1. スケーリングイベントを処理できる必要がある。2. コストをコントロールする必要がある。3. 時々これらが対立して、両者の間を翻訳するのに苦労する。4. 誰もプラットフォームレベルでハードな請求制限/強制を設定させてくれない。(私はRun/Appengine/Functionsのためにこれに近いものを実装したけど、本当に難しい問題だと思う。でも、可能だと思う。リアルタイムの使用量→請求→残高のデビットは、私たちのプラットフォームで最初に実装したことの一つだった)。5. なぜかスケーリングとプロビジョニングは別物(部分的にはクラウドプロバイダーが遅いから、部分的にはKubernetesがシングルテナントだから)。6. 私たちのオペレーションチームの仕事はビジネスロジックとリソースロジックの間を翻訳することで、私たちのアラートの半分は基本的に人間にコストやスケーリングの分析やトレードオフを手動で行わせることを求めてる。なぜなら自動化できないから、根本的なリソースモデルやプラットフォームがそれを不可能にしてる。これを修正するには、内部を見なきゃいけない。

俺は昔ながらのSREで、コンテナ化の時代の前だった。今は、YAMLの達人がいるけど、全ての動く部分(kube、flux、helmなど)のアーキテクチャを理解するなんて無理だよ。でも、Claudeは質問に答えるだけじゃなく、バグを見つけたり新機能を追加したりするのに全く問題ない。要するに、彼らも俺たち開発者と同じくらいヤバいと思う。

Hacker Newsで議論の続きを見る