Skip to main content

Kill Switch

Overview

Kill Switch(キルスイッチ)とは、モバイルアプリにおいて特定の機能や画面をサーバー側から動的に「無効化(=停止)」できる仕組みのこと。
致命的なバグや予期しない問題が発生したとき、アプリを再リリースすることなくサーバー設定だけで影響を最小限に抑えることができます。

tip

モバイルアプリにおける「保険」として非常に重要な仕組み。
特に本番リリース後に即時対応が必要なトラブルに備えるため、設計段階から取り入れることが推奨される。

典型的なユースケース

ケースKill Switchの効果
新機能でクラッシュが起きるサーバー側でその機能をOFFにし、旧UIなどに切り替える
臨時メンテナンスが必要該当機能を一時停止し、「メンテナンス中」画面を表示する
誤ったキャンペーン表示表示条件をOFFにして非表示化する

仕組み

Kill Switchは、アプリ起動時や定期的なタイミングで「設定情報」をサーバーから取得し、その値に応じてアプリ側で挙動を制御します。

// 例(JavaScript / TypeScript)
if (config.feature.newUI === true) {
showNewUI();
} else {
showOldUI();
}

基本構成例(AWSベース)

[モバイルアプリ]
↓ HTTP
[API Gateway]

[Lambda Function] ─→ [DynamoDB(設定JSON)]
  • 設定はDynamoDBにJSON形式で保存
  • アプリ側は /config API などで取得
  • 初回起動時 or 定期タイミングで取得し、ローカルにキャッシュ

実装時のポイント

  • 機能ごとに個別のフラグを設ける(例: feature.newUI
  • アプリ起動時のタイミングで一括取得
  • 設定値をローカルキャッシュし、オフライン時にも影響しない設計にする
  • APIが落ちたときのデフォルト挙動(例: OFF)を定義しておく

Firebaseとの比較

項目Firebase Remote ConfigAWS構成(例: Lambda + DynamoDB)
即時反映性高い(リアルタイム)高め(API応答次第)
モバイルSDK豊富(iOS/Android/Flutter)自前実装
出し分け条件属性・セグメント指定可自由設計
学習コスト低(導入が簡単)やや高(API設計・構築が必要)

Kill SwitchとFeature Flagの違い

Kill SwitchとFeature Flagはいずれも「機能のON/OFFを制御する仕組み」ですが、目的や使い方において明確な違いがあります。

項目Kill SwitchFeature Flag
主な目的緊急停止・安全装置開発・デプロイの柔軟性向上
想定シナリオバグ発生時の機能停止、サービス遮断新機能の段階的展開、A/Bテスト
実装粒度粗め(機能単位)細かい制御が可能(ユーザー単位など)
利用タイミング主に運用フェーズ(本番対応)開発〜運用全般
フォールバックの前提OFFにしても動作継続が前提ON/OFFで機能を制御してテスト可能

Kill Switchは「やむを得ず機能を止めるスイッチ」、Feature Flagは「戦略的に機能のON/OFFを切り替えるための仕組み」と捉えるとよいでしょう。実際の運用では両者を併用し、開発の柔軟性と運用の安全性を両立するケースが多いです。

Resource