Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Feature Flagを定義から削除まで 安全に行うために考えたこと
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
TVer Inc.
PRO
October 14, 2025
Programming
3.7k
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.
TVer Web-based TVのリアーキテクチャ
techtver
PRO
0
170
Pub/Sub で実装するワーカープールパターン - BigQuery リバースETLジョブの並行数制御-
techtver
PRO
0
140
株式会社TVer 会社紹介資料
techtver
PRO
9
120k
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
2.9k
4100万ユーザーを支えるTVer iOSアプリ開発 〜0人から始まったチームのAI活用による挑戦〜
techtver
PRO
1
2.7k
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
1.3k
20240710_HR SUCCESS SUMMIT 2024_テーマセッション「エンジニア採用2.0」登壇資料(株式会社TVer_香坂)
techtver
PRO
0
160
採用応募者の個人情報保護の取扱いについて_株式会社TVer
techtver
PRO
0
830
月間4.5億回再生を超える大規模サービス TVer iOSアプリのリアーキテクチャ戦略 - iOSDC2024
techtver
PRO
2
16k
Other Decks in Programming
See All in Programming
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
200
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
350
継続モナドとリアクティブプログラミング
yukikurage
3
450
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
110
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
170
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
840
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
240
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Building an army of robots
kneath
306
46k
Everyday Curiosity
cassininazir
0
250
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Site-Speed That Sticks
csswizardry
13
1.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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