Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Feature Flagを定義から削除まで 安全に行うために考えたこと
Search
TVer Inc.
PRO
October 14, 2025
Programming
3.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Feature Flagを定義から削除まで 安全に行うために考えたこと
TVer Inc.
PRO
October 14, 2025
More Decks by TVer Inc.
See All by TVer Inc.
AI時代における_iOS設計の守り方と人間の役割
techtver
PRO
0
55
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
460
TVer Web-based TVのリアーキテクチャ
techtver
PRO
0
320
Pub/Sub で実装するワーカープールパターン - BigQuery リバースETLジョブの並行数制御-
techtver
PRO
0
190
株式会社TVer 会社紹介資料
techtver
PRO
9
130k
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
3k
4100万ユーザーを支えるTVer iOSアプリ開発 〜0人から始まったチームのAI活用による挑戦〜
techtver
PRO
1
3k
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
1.4k
20240710_HR SUCCESS SUMMIT 2024_テーマセッション「エンジニア採用2.0」登壇資料(株式会社TVer_香坂)
techtver
PRO
0
220
Other Decks in Programming
See All in Programming
AWSに止められる覚悟してますか?
morizo_1984
2
510
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
120
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
130
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
320
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
270
Webの地図
yosuke_furukawa
PRO
6
5k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
620
Java 27新機能 / Java 27 new features
kishida
2
200
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
350
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
310
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
790
Build your cross-platform service in a week with App Engine
jlugia
234
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
30 Presentation Tips
portentint
PRO
1
420
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
250
The Cost Of JavaScript in 2023
addyosmani
55
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Transcript
©2025 TVer INC. Feature Flagを定義から削除まで 安全に行うために考えたこと 2025.10.14 伊藤
聡汰 株式会社TVer サービスプロダクト本部 バックエンド開発部
©2025 TVer INC. 2 目次 01はじめに 02TVerについて 03Feature Flagの事例紹介 04まとめ
Confidential
©2025 TVer INC. 01 はじめに Confidential
©2025 TVer INC. 4 自己紹介 伊藤 聡汰 株式会社TVer サービスプロダクト本部バックエンド開発部 2022/07
TVer入社。最近はBackend Enabling Team としてリアーキテクチャや基盤の整備を行う。 趣味はDTMと子供とのお出かけ。 Confidential
©2025 TVer INC. 5 今日話すこと Confidential • TVerについて • TVerのバックエンドチームについて
• Feature Flag関連の取り組みの紹介
©2025 TVer INC. 6 今日話さないこと Confidential • Feature Flagとはなにか
©2025 TVer INC. 02 TVerについて Confidential
©2025 TVer INC. 8 TVerとは 民放テレビ局がひとつになった テレビの新しい プラットフォーム ドラマ バラエティ
アニメ / ヒーロー 報道 / ドキュメンタリー スポーツ その他 見放題 ¥ 0
©2025 TVer INC. 9 Confidential 🎊🎊実は10周年🎊🎊
©2025 TVer INC. 10 サービスプロダクト本部 サービスプロダクト 本部 プロダクト推進 開発ディレクション バックエンド
Confidential PdMやデザイナー フロントエンド ディレクターやQA iOS/Android/Web/CTV 開発エンジニア バックエンド/SRE
©2025 TVer INC. 11 バックエンドチームについて 2022/04 2024/10 2025/10 チーム誕生 2022/04のアプリリニューアル時の完
全内製化に伴いチームが誕生。 開発メンバーは数名だった。 Enabling Team誕生 機能開発だけでなく、チーム拡大や 生産性向上のために、様々な技術的 な課題の解消も並行して行う必要が 出てきた。 そこで機能開発チームと分割する形 でEnablingTeamが誕生した。 開発が複数ラインに チーム誕生から3年半、開発メン バーは約15名と5倍以上の規模になっ た。それに伴い開発ラインも複数走 るようになりアウトプットが爆増。
©2025 TVer INC. 12 Confidential バックエンドチームは3.5周年
©2025 TVer INC. 13 技術スタック Confidential • 言語 ◦ Go
1.25 • インフラ ◦ AWS(と一部GCP) • その他 ◦ GitHub/Docker/New Relic/Claude/etc…
©2025 TVer INC. 14 チーム規模と開発速度の推移 Confidential 1年半前に比べてPR/Commitともに3倍増🔥🔥 一方でリリースブロックや品質担保が課題にも
©2025 TVer INC. 15 バックエンドチームについて Confidential FeatureFlagを導入したので 取り組みの一部を紹介します!!
©2025 TVer INC. 03 Feature Flagの 事例紹介 Confidential
©2025 TVer INC. 17 採用技術 Confidential • flagd ◦ Go製のフラグ評価システム
◦ UI・管理機能などはない分小さく軽量 ◦ フラグ設定がJSONでGit管理にのせられる • OpenFeature ◦ Feature Flagの標準化された技術仕様
©2025 TVer INC. 18 検討技術 Confidential 選択肢 負荷耐性 軽量性 金コスト
運用負担 総合 Launch Darkly - ◯ × ◎ △ Unleash - × ◎ × × 自前実装 △ × ◯ × × flagd ◯ ◎ ◎ ◯ ◎
©2025 TVer INC. 19 構成図 Confidential
©2025 TVer INC. 20 フラグ設定 Confidential { "$schema": "https://flagd.dev/schema/v0/flags.json", "flags":
{ "myBoolFlag": { "state": "ENABLED", "variants": { "on": true, "off": false }, "defaultVariant": "on" } } } • JSONファイルで設定 • これをアプリケーションと 同じrepositoryで管理
©2025 TVer INC. 21 用語 Confidential 今日の発表では2つ知っておけばOK • トグルポイント ◦
FeatureFlagの切替分岐箇所のこと • トグルルーター ◦ 切替分岐に利用する評価取得の関数のこと
©2025 TVer INC. 22 用語 Confidential func main() { if
feature_flag.IsEnableNewFeature() { newFeature() } else { oldFeature() } } この関数がトグルルーター
©2025 TVer INC. 23 用語 Confidential func main() { if
feature_flag.IsEnableNewFeature() { newFeature() } else { oldFeature() } } 分岐処理全体がトグルポイント
©2025 TVer INC. 24 よくある問題 Confidential • トグルポイントとフラグ設定が残存する ◦ 定義・利用をしたものが残り続けて負債化
対策を考えなければ!!!
©2025 TVer INC. 25 対策: トグルポイント Confidential • 運用でカバー😇😇😇 ◦
本当は自動化したかった(思いつかなかった...) ◦ 発行者・発行日・有効期限を設定させることで生存期 間の管理をして逃げる
©2025 TVer INC. 26 対策: フラグ設定 Confidential • トグルポイントより複雑 ◦
トグルポイントはコードから削除するだけだった ◦ フラグ設定はトグルポイントと同時に消すことはでき ない 削除可能なタイミングが アプリケーションリリースに依存
©2025 TVer INC. 27 対策: フラグ設定 Confidential トグルポイントの削除が... • mainにマージされたら?
◦ 消せない。本番リリースまで若干ラグがある。 • 本番リリースした時は? ◦ 消せない。リリースを緊急で戻したい時に困る。
©2025 TVer INC. 28 Confidential いつ消せるんだっけ?
©2025 TVer INC. 29 対策: フラグ設定 Confidential ❏ トグルポイントが削除されたか ❏
この削除対応は本番リリースされたか ❏ 本番リリースは切り戻しが発生しないくらい十分前か これを人がレビューするのは大変
©2025 TVer INC. 30 Confidential 自動化しよう
©2025 TVer INC. 31 自動化 Confidential ❏ トグルポイントが削除されたか ❏ 削除対応は本番リリースされたか
❏ 本番リリースは十分前か
©2025 TVer INC. 32 自動化: トグルポイントが削除されたか① Confidential • トグルポイントが削除されたか ◦
=トグルルーターの関数が呼び出されていない状態 ◦ 呼び出さていないかは静的解析でいけそう ◦ 関数名の特定はどうすれば良いか ▪ フラグ設定から自動生成
©2025 TVer INC. 33 自動化: トグルポイントが削除されたか② Confidential • フラグ設定から自動生成 ◦
JSONのフラグ名から規則的な関数を生成 ◦ go: generateを利用 • たとえば “new-feature” というフラグがあると、 ◦ func IsEnableNewFeature() bool {} を生成するイメージ
©2025 TVer INC. 34 自動化: トグルポイントが削除されたか③ Confidential • 自動生成された関数をdeadcodeを利用して検証 ◦
go tool deadcode -whylive=${FUNC_NAME} ◦ 規則的な関数名の検査は簡単 ◦ Feature Flag評価のコア実装はinternal化 ▪ 自動生成された関数の利用を強制
©2025 TVer INC. 35 自動化 Confidential ❏ トグルポイントが削除されたか ❏ 削除対応は本番リリースされたか
❏ 本番リリースは十分前か
©2025 TVer INC. 36 自動化: 削除対応は本番リリースされたか Confidential • 削除対応は本番リリースされたか ◦
TVerではGitHubリリースとタグを用いて本番リリース を行なっている ◦ リリースバージョンへチェックアウトし、前述の deadcodeの仕組みを利用すれば検証できる
©2025 TVer INC. 37 自動化 Confidential ❏ トグルポイントが削除されたか ❏ 削除対応は本番リリースされたか
❏ 本番リリースは十分前か
©2025 TVer INC. 38 自動化: 本番リリースは十分前か Confidential • 本番リリースは十分前か ◦
1週間の中で作成されたリリースは切り戻しによって本 番にリリースされる可能性のあるバージョン ◦ 1週間で作成されたリリースを順次チェックアウトし て、前述の仕組みを使えば検証できる
©2025 TVer INC. 39 自動化: まとめ Confidential • これらの仕組みをGitHub Actionsで実装し自動化
◦ フラグ設定が変更されるPRでの検証CI ▪ フラグ設定を安全に変更できる ◦ フラグ設定の定期的に自動削除するCI ▪ メンバーはコードに向き合うだけで良くなった
©2025 TVer INC. 04 まとめ Confidential
©2025 TVer INC. 41 まとめ Confidential • フラグ設定を自動で削除することで開発者は目の前の コードのみを気にすれば良くなった ◦
トグルポイントの削除は開発者が頑張らないといけな い課題は残っている • 自動生成は良い • 静的解析も良い ◦ Goはツール・ライブラリが豊富で助かる
©2025 TVer INC. 42 今後の展望 Confidential • トグルポイント削除の自動化 ◦ 生存管理のアラートではなく削除の仕組みを提供した
い • フラグ設定の簡易化 ◦ 人に優しい記法からflags.jsonやコードを自動生成した い
4
ご清聴ありがとうございました! ©2025 TVer INC. 4