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.8k
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
10
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
270
TVer Web-based TVのリアーキテクチャ
techtver
PRO
0
250
Pub/Sub で実装するワーカープールパターン - BigQuery リバースETLジョブの並行数制御-
techtver
PRO
0
160
株式会社TVer 会社紹介資料
techtver
PRO
9
130k
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
3k
4100万ユーザーを支えるTVer iOSアプリ開発 〜0人から始まったチームのAI活用による挑戦〜
techtver
PRO
1
2.9k
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
1.3k
20240710_HR SUCCESS SUMMIT 2024_テーマセッション「エンジニア採用2.0」登壇資料(株式会社TVer_香坂)
techtver
PRO
0
170
Other Decks in Programming
See All in Programming
自分的「カンファレンスの楽しみ方」
syumai
0
200
AHC070解法紹介
eijirou
0
120
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
390
What We Talk About When We Talk About XP
m_seki
2
620
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
710
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
390
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
220
新卒PdEのリアル
ryu1013
1
500
Family mrubyの進捗
kishima
1
120
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.4k
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
A designer walks into a library…
pauljervisheath
211
25k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
エンジニアに許された特別な時間の終わり
watany
109
250k
Side Projects
sachag
456
43k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Evolving SEO for Evolving Search Engines
ryanjones
0
290
4 Signs Your Business is Dying
shpigford
187
23k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
KATA
mclloyd
PRO
35
15k
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