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

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

概要

  • コード作成 は簡単だが、 運用 は難しい現実
  • 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は質問に答えるだけじゃなく、バグを見つけたり新機能を追加したりするのに全く問題ない。要するに、彼らも俺たち開発者と同じくらいヤバいと思う。

でも、AIはまだそこまで行ってない。トップモデルでも、最も簡単なSREのタスクでさえ苦戦してる。私たちは、小さなサービスに分散ログ(OpenTelemetryの計測)を追加するためのベンチマークを作ったんだけど、コードは約300行。Claude Opus 4.5は29%、GPT 5.2は26%、Gemini 3 Proは16%の成功率だった。

まさにその通り。LLMがコードを書くコストをゼロに近づけるにつれて、私たちが生み出すコードの量は爆発的に増えるだろう。でも、複雑さのコストは下がらない—むしろ、私たちがそれをメンタルモデルするよりも早くコードを生成しているから、上がるかもしれない。SREは最も重要なレイヤーになる。なぜなら、「これが実際に信頼性を持って動くのか?」に焦点を当てている唯一の分野だから。「私たちは機能を出荷したのか?」ではなくてね。私たちは「ロジックを作る」世界から「ロジックフローを管理する」世界へ移行している。

でも、複雑さのコストは下がらない でも、現在のソフトウェアの複雑さのどれくらいが問題空間に内在するもので、どれくらいが単なる悪いデザインや人間のシェフが多すぎるせいなのか?おそらくほとんどが後者のカテゴリーだと思う。もっとソフトウェアが増えるかもしれないけど、全体的には複雑さが減るかもしれない。LLMが十分に良くなればね。

うーん、実際にはSREやDevOpsは、昔呼ばれていたシステム管理者とはあまり変わらないと思う(私も元システム管理者だし)。中途半端な企業の未来は、SREがLLMの火事を追いかけることになると思うけど、競争力のあるビジネスはシステムを構築するためのはるかに良い戦略を持っているはず。人間は依然として最も効率的で一般的な推論者だから、エネルギーを大量に消費する脆弱なAIモデルに実装の大部分を任せるのは、失敗する道を選んでいるようなものだと思う。

私はAIなしのローコード環境で開発者チームを管理してる。ジュニア開発者のポジションには8年の経験が必要で、これは馬鹿げてると思う。みんな自分でプログラムしなきゃいけないけど、知識の移転のためにペアプログラミングはすごく頻繁に行われてる。主なスキルは運用の優秀さ(いくつかのプロジェクト管理タスクを含む)、伝達、信頼性だね。人の観点から見ると、外部チームと協力して要求を集めるときに優秀であることが求められる。さらに、デプロイ後の本番環境でも、自分の作業の状況を常に把握している必要がある。ソフトスキルが強くて、複数の外部関係者に関わる作業ストリームを独立してプログラムできるなら、あなたは素晴らしい。これが未来の姿みたいだね。

ごめん、個人的なことじゃないんだけど…8年の経験が必要なのに「ジュニア」って肩書きだけって、かなり劣悪な環境に近いと思う。別の話だけど、あなたが言ってるオペレーションの優れたスキル(プロジェクト管理や要件収集など)が、私の$dayjobでも問題になってるのはわかる。でも、そういうスキルはどの時代でも価値があると思ってたし、AIの時代だけに必要なわけじゃないんだよね。ただ、みんなの経験や環境によって期待値は変わるよね。それに、私の$dayjobでは、ソフトウェアベンダーに適正に支払うための資金が全然足りなくて、結局は払った分の品質しか得られないから、しょっちゅう質が低いアウトプットになっちゃう。低コードってわけじゃなくて、ちゃんとしたフルコードの開発者を雇ってるし契約もしてるんだけど、質が悪いことが多いんだよね。低コードの提供や機会が増えて、よりしっかりしたAI開発支援が進む中で、SREの役割がますます重要になるんじゃないかな。低コードや低コストの分野で働いてるかどうかに関わらず。

同意する。これがトレンドになると思う。LLMのコンテキストは、大規模なコードベースを処理できないし、彼らのアルゴリズムは今後数年でSREのように推論することはないと思う。そして、現在の盛り上がりと市場を考えると、世界中で不況が続く中、投資家は撤退するだろうし、またAIの冬が来ると思う。コードは商品化されてしまった。企業のエンジニアリングの階層は、今後数年で横にも縦にもずっとフラットになるだろう。一人のスタッフが二人のシニアエンジニアを指揮し、それぞれに二人のジュニアを持って、N人のエージェントを調整するようになると思う。これが終わりだね、ブートキャンプの開発者たちの。これは大きなフィルターとして機能して、ブートキャンプの開発者の大量流入を減らすだろう。

ブートキャンプの開発者は、職場で常に厳しい状況に置かれる運命だったと思う。彼らは、真のコンピュータサイエンスの学位を持つエンジニアが不足していることの症状で、コードがそこそこできる人を探して妥協した結果だよね。でも、この問題は最終的には解決する。今は、コードが簡単で安価な時代に、コンピュータサイエンスの卒業生が多すぎる。ブートキャンプの開発者を雇うメリットはあまりないと思う。でも、もし本当にコーディングが好きで、大学でCSを学べなかったなら、ブートキャンプは楽しむための良い経験になるかもしれない。仕事探しの目的ではなく、自分の楽しみのためにね。ただ、あまりお金をかけないように。

個人的には、SREは主にプロダクトエンジニアリングの組織の外にいるからこそ機能してると思う。彼らはあなたの成功を手助けしたいと思ってるけど、もしあなたが「YOLO」でローンチして、早く動いて物事を壊したいなら、彼らはページャーを返して他の仕事を探す選択肢がある。実際にはその選択肢はあまり使われないけど、その選択肢があるだけで通常より良いインセンティブが生まれるみたい。Vibecodingでは、LLMがKubernetesや他のIaaSでジョブをスケジュールできるMCPを持つようになると思うし、一群のエージェントが基本的なトラブルシューティングや「ワックアモール」的な活動を行って、難しい問題だけが人間のSREに残るんじゃないかな。AIの前後を問わず、企業のインセンティブは常に質の低いものを出荷することになると思う。高い基準を守るためのバランスを取る力がない限り。