本文へ移動

ホーム / PdM / 第3部 開発の進め方

第3部 開発の進め方・第8章

リリースの仕組み

★★☆ 重要6トピック・面接 3問

作ったものを安全にユーザーへ届けるための仕組みを、リリースの判断に使える範囲で押さえる。アプリの審査は第2部「スマホアプリの制約」へ。

8.1リリースと Feature Flag

用語★★☆ 重要
ひとことで

デプロイ(コードを出す)とリリース(機能を見せる)を分け、段階的に公開・すぐに戻せるようにする。

デプロイはコードを本番に出すこと、リリースはその機能をユーザーに見せることです。この2つを分けると、コードは先に出しておき、機能を見せるタイミングや相手を後から選べます。その切り替えに使うのが Feature Flag(機能のオン・オフを設定で切り替える仕組み)です。問題が起きたら、コードを戻さずにフラグを切るだけで止められます。

コードは先に出し、見せる範囲を Feature Flag で広げるデプロイコードを本番へ(機能はオフ)公開の割合社内1%10%50%100%各段階でエラー率・指標を確認問題があればフラグを切ってすぐ 0% に
デプロイ(コードを出す)とリリース(機能を見せる)の分離と段階的な公開
やり方内容使いどころ
社内公開社員だけにオン本番のデータで最終確認
段階的リリース1% → 10% → 50% → 100% と広げ、各段階でエラー率や指標を確かめる影響の大きい変更、性能が心配な変更
対象を絞る国・プラン・特定の顧客だけにオンベータ版、大口顧客との先行導入
A/B テストランダムに分けた群で旧と新を比べる効果を数字で確かめたいとき
キルスイッチ重い機能や外部連携をすぐ止められるようにしておく障害時の影響を小さくする

フラグは増えるほど組み合わせが複雑になるので、全員に公開したら消す作業もタスクに入れます。

Web の「安全なリリース」

審査・段階的な公開・古い版

SRE の「デプロイ戦略」

面接ではこう答える

デプロイはコードを本番に出すこと、リリースはその機能をユーザーに見せることです。この2つを Feature Flag で分けると、コードは先に出しておき、社員だけ、1%、10% と見せる範囲を広げながら、エラー率や指標を確かめられます。問題があればコードを戻さずにフラグを切るだけで止められるので、私は影響の大きい変更ほどこの形で出すようにしています。

ひとことで

コードをレビュー・自動テスト・確認環境を通して本番に出す流れと、それを自動にする仕組み。

コードは、レビューと自動テストを通ってから本番に出るコードを書くレビュー別の人が読む自動テストCIステージング本番に近い環境本番デプロイどこかで失敗したら止まって戻る。この流れを自動にしたものが CI/CD
コードが本番に出るまでの流れ

書いたコードは、ほかのエンジニアのレビュー、自動テスト、本番に近い環境での確認を通ってから本番に出ます。コードを入れるたびにテストを自動で流すことを CI(継続的インテグレーション)、本番に出すまでを自動にすることを CD(継続的デリバリー・デプロイ)といいます。

PdM が知っておくこと理由
「できた」から本番まで時間があるレビュー待ち・テストの修正で、数時間〜数日かかることがある
自動テストが落ちると出せない急ぎでも、テストを飛ばすのは最後の手段
金曜の夕方や連休前は避けることが多い問題が出たときに対応できる人が少ない

面接ではこう答える

コードは書いたらすぐ本番に出るのではなく、ほかの人のレビュー、自動テスト、本番に近い環境での確認を通ってから出ます。コードを入れるたびにテストを自動で流すのが CI、本番に出すまでを自動にするのが CD です。PdM としては、「できた」から本番まで時間があることや、テストを飛ばして出すのは最後の手段であることを理解したうえで、リリースの日程を組みます。

環境使う人中身PdM の使いどころ
ローカル・開発エンジニア自分の PC や共有の開発用—
ステージング(検証)エンジニア・QA・PdM本番に近い作り。データは試験用リリース前の受け入れ確認
本番ユーザー本物のデータ社内公開のフラグで最終確認

ステージングで動いても、本番で問題が出ることがあります。データの量や種類、外部サービスの設定が違うからです。本番で社員だけに見せる(Feature Flag の社内公開)と、本物のデータで確かめられます。テストのために本番のデータを勝手に変えない、個人情報をステージングに持ち出さない、も大事な決まりです。

少しずつ流すか、丸ごと切り替えるかカナリアユーザー今の版 95%新しい版 5%問題がなければ割合を広げるブルーグリーンユーザー今の版(青)新しい版(緑)切り替えで丸ごと移す。戻すのも一瞬
2つのデプロイのやり方
やり方内容向いている場面
カナリア新しい版に少しの割合だけ流し、問題がなければ広げる性能や不具合が心配な変更
ブルーグリーン新旧の2つの環境を用意し、丸ごと切り替える。戻すのも切り替えるだけすぐ戻せることが大事な変更
Feature Flagコードは全員に出し、機能を見せる人を設定で選ぶ見せる相手やタイミングをビジネスで選びたい

カナリアとブルーグリーンは主にコードの出し方、Feature Flag は機能の見せ方です。PdM が直接決めるのは多くの場合 Feature Flag ですが、大きな変更ではどの出し方かを聞いておくと、問題が起きたときの影響と戻る時間が分かります。

ひとことで

問題が出たら、前の版に戻すかフラグを切って影響を先に止めること。DB の変更などは戻せないこともある。

問題が起きたら、まず一番早く安全に止める方法を選ぶリリース後に問題が出たフラグを切る(数秒〜数分)前の版に戻す(数分〜)直して出す(時間がかかる)フラグがあれば最優先DB の形を変えていると戻しにくい戻せないときの最後の手段
戻し方の選び方

リリースの後で問題が出たら、原因を調べるより先に影響を止めるのが基本です。前の版に戻すことをロールバック、直した版を出して進むことをロールフォワードといいます。

戻し方早さ注意
Feature Flag を切る一番早いフラグを入れておかないと使えない
前の版に戻す数分〜DB の形を変えた、外部にデータを送った、などは戻せないことがある
直して出す遅い原因が分かっていて、すぐ直せるとき

PdM は事前に「どうなったら戻すか」(エラー率・問い合わせ・指標の悪化の基準)と、誰が決めるかを合意しておきます。その場で迷う時間を減らせます。

面接ではこう答える

ロールバックは、リリースの後に問題が出たとき、前の版に戻して影響を止めることです。Feature Flag があればフラグを切るのが一番早く、次に前の版に戻す、最後に直して出す、という順で考えます。DB の形を変えた場合などは戻せないこともあるので、リリースの前に戻せるかを確認します。PdM としては、どうなったら戻すかの基準と、誰が決めるかを事前に合意しています。

ひとことで

デプロイの頻度・変更のリードタイム・変更失敗率・復旧までの時間で、開発の速さと安定性を測る指標。

Google の DORA という研究チームが、開発チームの速さと安定性を測る指標を示しています。速さと安定性は取り合いではなく、良いチームは両方とも良い、というのが研究の結論の1つです(指標は年によって少しずつ見直されています)。

指標測るもの種類
デプロイの頻度どれくらいの間隔で本番に出しているか速さ
変更のリードタイムコードを入れてから本番に出るまでの時間速さ
変更失敗率出した変更のうち、障害や戻しが必要になった割合安定性
復旧までの時間失敗したデプロイから回復するまでの時間安定性

PdM にとっては、小さく何度も出せるチームほど、仮説を早く確かめられることが大事です。デプロイの頻度が低い・リードタイムが長いなら、負債やテストの自動化への投資を考えるきっかけになります。指標を人の評価に使うと数字が歪むので、チームの改善のために使います。

面接ではこう答える

DORA の指標は、デプロイの頻度と変更のリードタイムで速さを、変更失敗率と復旧までの時間で安定性を測るものです。研究では、良いチームは速さと安定性の両方が良いとされています。PdM としては、小さく何度も出せるほど仮説を早く確かめられるので、デプロイの頻度やリードタイムが悪ければ、テストの自動化や負債の返済に投資するきっかけにしています。人の評価には使わないようにしています。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • デプロイ(コードを出す)とリリース(機能を見せる)を分け、Feature Flag で段階的に広げる
  • コードが本番に出るまでの流れと、テスト環境の違いを知る
  • 戻し方を事前に決め、デプロイの頻度と失敗率で開発の健康を見る

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1デプロイとリリースの違い、Feature Flag を使う利点を説明してください。

模範回答

デプロイはコードを本番環境に出すこと、リリースはその機能をユーザーに見せることです。Feature Flag は、機能のオン・オフを設定で切り替える仕組みで、これを使うと2つを分けられます。

利点は、コードを先に出しておき、社内 → 1% → 10% → 100% のように見せる範囲を段階的に広げられること、問題があればコードを戻さずにフラグを切るだけで止められることです。A/B テストの振り分けや、特定の顧客への先行公開にも使えます。注意点はフラグが増えると複雑になることで、全員に公開したらフラグを消す作業も計画に入れます。

深掘りされたら

  • 段階的リリースの途中で、何を見て広げるかを決めますか?

見られているポイントデプロイとリリースの分離、段階的公開と戻しやすさ

Q2新機能のリリース後に問い合わせが急に増えました。PdM としてどう動きますか?

模範回答

まず、影響を止めるかどうかを判断します。事前に決めた基準(エラー率や問い合わせの件数)を超えているなら、Feature Flag を切るかロールバックするようエンジニアと決めます。フラグがあれば数分で止められます。

同時に、サポートに既知の問題と回避策を共有し、必要ならユーザーへのお知らせを出します。止めたあとで原因を調べ、直したら社内公開や1%から広げ直します。最後に、なぜリリース前に気づけなかったかを振り返り、テストや段階の広げ方を見直します。

深掘りされたら

  • 止めるかどうか迷ったら、何で決めますか?

見られているポイント止める判断の速さと、周りへの共有

Q3「金曜日の夕方にリリースしたい」と営業から頼まれました。どう答えますか?

模範回答

理由を聞いたうえで、多くの場合は別の形を提案します。金曜の夕方は、問題が出たときに対応できる人が少なく、週末に影響が続きやすいからです。

例えば、コードは木曜までにデプロイしておき、金曜の夕方は Feature Flag で対象の顧客にだけ機能を見せる形にすれば、営業の目的は果たせて、問題が出てもフラグを切るだけで止められます。どうしても金曜に出す場合は、当番のエンジニアと戻す基準を決めておきます。

深掘りされたら

  • 顧客との約束がすでにある場合は?

見られているポイントデプロイとリリースを分けた現実的な提案