速く出すために、まず「何を出さないか」を決める
Hatched by tttt
Aug 19, 2026
1 min read
1 views
94%
「毎日リリースできるチーム」と聞くと、多くの人は優れた自動化ツールや高度なクラウド基盤を思い浮かべる。だが、実際には順序が逆だ。速く届けられる組織は、最初に速さではなく、守るべき体験と捨てるべき複雑さを決めている。
これは一見すると矛盾している。DevOps はデプロイ、テスト、監視を自動化し、変更の頻度を高めようとする。一方で、よいプロダクト設計は、機能を絞り、数字よりも利用者の心地よさを重視し、あえて成長の速度を抑えることさえある。
しかし、この二つは対立していない。むしろ、自動化による速度と、思想による節度が組み合わさったときにだけ、持続可能な開発が生まれる。 問題は、どうすれば「速く作ること」を「速く考えずに作ること」と取り違えずに済むかである。
リリース速度の正体は、技術ではなく信頼である
開発、テスト、運用が別々の部署として動く古い構造では、ソフトウェアはリレーのバトンに似ている。開発者がコードを書き、テスト担当者に渡し、テスト担当者が運用担当者に渡す。それぞれの区間では仕事が進んでいるように見えるが、バトンの受け渡しのたびに情報が失われる。
開発者は「この変更は安全だ」と考え、テスト担当者は「仕様どおりか」を確認し、運用担当者は「本番環境で壊れないか」を心配する。各自が合理的に振る舞っているのに、全体としては緊張と遅延が蓄積する。障害が起きると、誰が悪いかを探す時間まで発生する。
DevOps の本質は、単にツールを導入することではない。変更を作る人と、変更の結果を引き受ける人を、同じ学習サイクルに戻すことである。開発者が運用の現実を知り、運用担当者が設計の意図を知る。テストは最後の関門ではなく、開発の途中に埋め込まれたフィードバックになる。
自動化は、この協働を可能にする記憶装置だ。人間が毎回「前回と同じ手順」を思い出して実行する代わりに、テスト、環境構築、デプロイ、監視の手順をコードとして残す。すると、品質は熟練者の注意力から、チーム全体が再現できる仕組みに移る。
自動化とは、人間を仕事から追い出すことではない。人間の記憶と善意に依存していた品質を、再現可能な仕組みに変えることである。
この視点に立つと、リリース頻度の高さも違って見える。頻繁に出せるチームとは、無謀なチームではない。小さな変更なら、失敗しても原因を特定しやすく、戻しやすく、学習しやすいと信じられるチームである。速度の土台は、勇気ではなく、変更に対する信頼なのだ。
ただし、速いパイプラインは間違いも速く運ぶ
ここで重要な落とし穴がある。パイプラインを高速化しても、入口に不明確な要求や不要な機能が流れ込めば、組織は単に混乱を高速で生産するだけである。
たとえば、個人の思い出を投稿し、家族や友人が閲覧できるサービスを考えてみよう。機能候補には、写真投稿、コメント、通知、公開範囲、検索、フォトブック、課金、推薦アルゴリズム、コミュニティ機能などが並ぶかもしれない。すべてを同時に開発しようとすると、テスト項目も権限管理も監視対象も増える。リリース自体は自動化できても、何をもって成功とするのかが曖昧になる。
この場合、最初に必要なのは高性能な基盤ではない。「誰の、どんな感情的な課題を解くのか」という問いである。たとえば、「遠くに住む家族が、過度な通知や競争に疲れず、静かに思い出を共有できること」を中心価値と定義するなら、初期機能は投稿、閲覧、限定的な反応だけで十分かもしれない。
ここで、プロダクトの思想が技術的な速度を制御する。数字を最大化することが目的なら、通知を増やし、再訪を促し、次々と機能を追加する方向に傾く。しかし、心地よさを守ることが目的なら、通知頻度の上限、公開範囲の明確さ、広告を入れない領域、使わない機能を決める必要がある。
つまり、「やらないこと」はプロダクトの哲学であると同時に、運用コストを減らすアーキテクチャでもある。 機能を一つ減らすことは、画面を一つ減らすだけではない。データモデル、権限、テスト、ログ、障害対応、問い合わせ、法的な確認の組み合わせを減らすことである。
この関係を、次のように考えると分かりやすい。
実効速度 = 変更の速さ × 判断の明確さ × 復旧の容易さ
自動デプロイは変更の速さを高める。小さな MVP と明確な KPI は判断の明確さを高める。自動テスト、同一イメージによる環境昇格、段階的リリース、監視とロールバックは復旧の容易さを高める。どれか一つがゼロに近ければ、実効速度もほとんど上がらない。
自動化すべきなのは、作業だけではなく判断の境界である
開発チームが自動化を始めるとき、まず単体テストや CI を導入することが多い。それは正しい出発点だが、十分ではない。重要なのは、「何を自動化するか」だけでなく、「どこまでを機械に任せ、どこからを人間が判断するか」を設計することだ。
たとえば、コードの整形、型検査、単体テスト、脆弱な依存パッケージの検出は、機械が一貫して行える。一方で、ある機能が利用者の不安を増やさないか、通知がサービスの思想に反しないか、個人情報の扱いが妥当かという問いは、人間の判断を必要とする。
テストピラミッドも、この境界を考えるためのモデルになる。大量の単体テストで細部を安く検証し、統合テストで部品同士の契約を確認し、少数の E2E テストで重要な利用者体験を守る。すべてを画面操作のテストで確認しようとすると、遅く、壊れやすく、修正しにくい仕組みになる。
ここで大切なのは、テストを「失敗を探す作業」と見なさないことだ。テストは、チームがどんな未来を安全と見なしているかを記録する。投稿した画像が正しく保存されること、非公開の投稿が他人に見えないこと、重要な通知が重複しないこと。こうした期待をコード化すれば、担当者が変わっても品質の基準は残る。
同じ発想は運用にも適用できる。環境変数による設定管理、宣言的なデータベース定義、同一イメージのステージングから本番への昇格、ブルーグリーンやカナリアによる段階的リリースは、環境差分と人的ミスを減らす。ログやエラー監視、SLO は、障害を完全に防ぐものではないが、異常を発見し、影響を測り、復旧するための共通言語になる。
ここでの原則は、自動化を完成品として導入しないことである。最初から半年かけて完璧なパイプラインを作るのではなく、最も頻繁に繰り返され、最も事故につながり、最も学習を妨げている手作業から置き換える。
たとえば、毎回同じ手順で本番へデプロイしているのに、誰かが手順書を見ながら手動で設定を変更しているなら、そこから始める価値が高い。次に、毎回壊れる回帰テストを自動化する。その後に、ログの収集やロールバックを整える。この順序なら、投資の効果が早く見え、チームの余白も少しずつ増える。
余白を作ることが、最も重要なプロダクト判断になる
開発チームが自動化に時間を使えない理由は、技術的な難しさだけではない。短期的な機能開発が常に優先され、改善のための時間が「余ったらやる仕事」にされているからだ。
しかし、余白は自然には生まれない。パイプラインに入れる機能を減らし、優先順位を決め、保守や技術的負債を計画に含めることで初めて確保できる。これはプロダクトマネージャーの重要な仕事である。自動化を技術チームだけの課題にせず、利用者価値を守るための投資として説明しなければならない。
判断には、単純な作業時間だけでなく、認知負荷も含めるべきだ。手動デプロイに二時間かかるなら、その二時間だけがコストではない。担当者が休めないこと、失敗への恐怖から小さな変更を避けること、確認待ちで別の仕事が止まること、障害後に責任追及が起きることもコストである。
実務では、次のような簡単な記録が役に立つ。
- どの作業が毎週繰り返されているか
- どの作業で待ち時間や確認待ちが発生しているか
- どの作業が特定の人にしか実行できないか
- 失敗した場合に、利用者とチームへどれほど影響するか
- 自動化した後、どの判断を人間がよりよく行えるようになるか
この最後の問いが重要である。自動化の目的は、作業者を暇にすることではない。利用者インタビュー、プロトタイプ検証、アクセシビリティ、脅威モデリング、運用データの解釈など、機械に置き換えにくい仕事へ注意力を戻すことだ。
「小さく作って毎週測る」という原則も、単なる開発手法ではない。それは、不確実性を小さな単位に分解する方法である。機能を小さくすれば、コードの変更もテスト範囲も利用者への影響も小さくなる。フィーチャーフラグを使えば、完成したコードを全利用者へ一度に公開せず、限定的に検証できる。
ただし、測定する数字は慎重に選ぶ必要がある。再訪率だけを追えば、通知を過剰に送る設計が勝つかもしれない。平均滞在時間だけを追えば、利用者を迷わせる画面が高く評価されるかもしれない。サービスの目的に照らして、再訪率、投稿率、体験の質、苦情、削除率、応答性能などを組み合わせるべきである。KPI は多ければよいのではなく、思想を歪めない少数であることが大切だ。
速度を「学習の速度」として再定義する
高頻度リリースを目指すとき、議論はすぐに「何回デプロイできるか」に向かう。しかし、リリース回数は結果にすぎない。重要なのは、変更を出した後に、どれだけ早く現実を理解し、必要なら安全に修正できるかである。
ここには三つの時間がある。第一は、アイデアから動く試作品までの時間。第二は、変更を本番へ届ける時間。第三は、本番で得た反応を次の判断へ変える時間だ。自動化は主に第二の時間を短縮するが、第一と第三が遅ければ、プロダクト全体の学習速度は上がらない。
だから、よいチームは開発だけを高速化しない。五人から十人程度の利用者に話を聞き、紙やクリック可能な試作品で仮説を検証し、三つ以内の成功指標に絞る。リリース後は、リアルユーザーデータ、エラーログ、問い合わせ、運営者の観察を組み合わせる。こうして、コードの流れと学習の流れを一本につなぐ。
たとえば、写真共有サービスで新しい通知機能を試すとする。実装前に利用者へ「どんなときに思い出を共有したくなるか」を聞き、試作品で通知の頻度を確認する。実装後は一部の利用者にだけ公開し、投稿率だけでなく通知停止率や不快感に関する反応も見る。問題があれば、すぐ無効化できるようにしておく。
この例では、DevOps の自動化と Slow Web 的な設計思想が同じ方向を向いている。高速なデプロイが、過剰な機能追加のためではなく、利用者の感情を傷つけずに仮説を検証するために使われているからだ。
本当に速いチームとは、たくさん作るチームではない。間違いを小さくし、現実から学び、次の判断を早く変えられるチームである。
今日から作れる、小さな学習システム
大規模な改革を待つ必要はない。個人開発でも小さなチームでも、次の順序で始められる。
Key Takeaways
-
まず「やらないこと」を三つ書く 初期リリースに含めない機能、守る体験、受け入れないトレードオフを明文化する。スコープを減らすことは、開発速度だけでなく、テスト、監視、運用の複雑さを減らす。
-
最も危険で反復的な手作業を一つ自動化する たとえばデプロイ、データベース更新、回帰テスト、バックアップ確認などから始める。自動化の成功は、導入したツールの数ではなく、失敗しやすい手順を再現可能にしたかで判断する。
-
テストを階層化し、重要な体験を少数の E2E テストで守る 細部は単体テスト、境界は統合テスト、利用者の主要行動は E2E テストで確認する。すべてを画面操作で検証する設計は、長期的に速度を失わせる。
-
変更を小さくし、段階的に公開する フィーチャーフラグ、カナリアリリース、明確なロールバック手順を用意する。安全に戻せるなら、チームは小さな実験を恐れなくなる。
-
リリース回数ではなく、学習までの時間を測る 仮説を立ててから利用者の反応を理解するまでの時間を記録する。デプロイが速くても、指標が曖昧で、ログがなく、判断が変わらなければ、速度は見かけにすぎない。
最終的に問われるのは、「どれほど多くの機能を、どれほど速く出せるか」ではない。チームは、どれほど小さな失敗から、どれほど早く、どれほど誠実に学べるかである。
自動化は速さを生む。思想は、その速さをどこへ向けるか決める。監視と対話は、向かった先が本当に利用者の望む場所かを教える。この三つがそろって初めて、開発は単なる生産活動から、現実との対話になる。
だから、次に開発速度を上げようとするとき、ツールの導入から始めなくてもよい。まず問いを変えよう。「どうすればもっと早く作れるか」ではなく、「何を作らなくても価値を届けられるか。そして、届けた後に何を学べれば、次の判断を変えられるか」と。
その問いを持つチームにとって、リリース速度は競争のための数字ではない。利用者に対して、より小さく約束し、より安全に試し、より早く誠実に応えるための能力になる。
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣