Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「10分以内に機能を消せる状態」 の実現のためにやっていること

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for おぎ おぎ
November 08, 2025

「10分以内に機能を消せる状態」 の実現のためにやっていること

Avatar for おぎ

おぎ

November 08, 2025
Tweet

More Decks by おぎ

Other Decks in Programming

Transcript

  1. フラクタル構造 packages |---packageA | |---FeatureA | |---Http | |---Models |

    |---FeatureB | |---Http | |---Models |---packageB • パッケージの中で更に機能でディレクトリを 分ける入れ子構造 • 機能間の相互依存がないような構成 (依存の向きは常に一方向) ソフトウェアは捨てやすく作ろう
  2. Feature Toggleによるリリース制御 Feature Toggleなし (デプロイとリリースが同時) サーバー サーバー サーバー ①デプロイ &リリース

    ②変更失敗⚠ ④再デプロイ ③ソースリバート⚠ サーバー Feature Toggleあり (デプロイとリリースが分離) サーバー サーバー サーバー ①デプロイ🔴 ②リリース🟢 ④トグルオフ🔴 ③変更失敗⚠ サーバー
  3. Feature Toggleを使った安全な削除手順 1. 画面側の動線に制御を追加 2. API側にロジックの制御を追加 3. Feature Toggleを埋め込んだコードをデプロイ 4.

    機能廃止日に Feature ToggleをON 5. 問題なければ順次コードを削除 ここが10分以内にできれば、提供価 値としてはビックバンリリースで消す のと変わらない
  4. 変更量とリードタイム - マージ回数:8回 - 合計ファイル数: 149 ファイル - 削除された行数: -20,488行

    - 最初の削除マージ:10/14 13:29 - 最後の削除マージ:10/15 09:02 ※バックエンドのコードのみ
  5. freeeのリリースフラグ誤操作による障害(2018) • 原因 ◦ 消されずに残っていたリリースフラグ( Feature Toggle)が負債化 ▪ ”どのフラグがいつ・どう変更されたのかがわからなかった ”

    ▪ ”数が多いことで正確に判断することが難しかった ” • 対策 ◦ フラグの削除を実施 ◦ フラグ変更を通知する仕組み作り ◦ 月次モニタリング運用 ▪ リリースフラグの目的 ▪ 残存期間の目安 ▪ 期間を超過した場合のアクション ▪ 残存させ続ける条件 システム障害のおわびとまなび
  6. 参考 • 不要なコードを見極めて削除するポイント • ソフトウェアは捨てやすく作ろう • レガシー回避のPHP開発術 • FeatureToggle戦略と運用方法 •

    アジャイル宣言の背後にある原則 • ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやす い設計”から始められてはいかが? • システム障害のおわびとまなび