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
高い開発生産性を支えるFeatureFlagの活用テクニック
Search
Niwa Takeru
October 27, 2023
Technology
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
高い開発生産性を支えるFeatureFlagの活用テクニック
Niwa Takeru
October 27, 2023
More Decks by Niwa Takeru
See All by Niwa Takeru
AI開発時代におけるプロダクトエンジニアの役割 - その中核としての Integration
niwatakeru
0
180
「プロダクトエンジニアとは何者か?」を皆で問うワークショップ設計
niwatakeru
0
300
デザインへの越境 - 全エンジニアへのFigma提供と効果
niwatakeru
0
17
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
8.1k
【Developers CAREER Boost 2024】顧客価値を中心としたプロダクトエンジニアというキャリア選択
niwatakeru
0
1.4k
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
13k
プロダクトエンジニアの為のトライアルとオンボーディング
niwatakeru
2
1.3k
プロダクトエンジニアを支える組織アーキテクチャ
niwatakeru
5
2.4k
社内 TSKaigi 実施を経た Full Stack TypeScript 強化の道
niwatakeru
2
2.7k
Other Decks in Technology
See All in Technology
도구에서 동료까지: 10년차 AI 스타트업의 AI 적응기
inureyes
PRO
1
270
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.5k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
システム思考で問題に対処する
yussak
0
360
案件に一番詳しいAIを Amazon Bedrock AgentCore で作る ― 知見が知見を生むチームへ / Compounding Knowledge with AgentCore
yusukeshimizu
1
160
事業価値と Engineering 2026年度版
recruitengineers
PRO
52
25k
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
140
Android skills に学ぶ
kokiko
0
130
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.3k
自宅NWにISR4331を導入してみた話
okaits
0
120
Sets in Go
ramalho
1
1.1k
Featured
See All Featured
Docker and Python
trallard
47
4.1k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
Thoughts on Productivity
jonyablonski
76
5.3k
We Are The Robots
honzajavorek
0
300
Google's AI Overviews - The New Search
badams
0
1.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Transcript
【Feature Flag 活用LT〜開発生産性を高めるトランクベース開発〜】 高い開発生産性を支える Feature Flags の活用テクニック 取締役CTO 丹羽健
• 自己紹介・プロダクト開発チームについて • トランクベース開発をする意義 • Feature Flags の実装・機能性 ◦ Full
TypeScript x モノレポ を活用した実装例 ◦ Feature Flags での制御軸 • Feature Flags の活用事例 ◦ 利用シチュエーションの整理 ◦ 利用パターンの紹介 • 終わりに 2 Agenda 2
3 自己紹介 3 1990年生まれ 兵庫県出身 2016年 新卒でSIer NSSOLに入社 飲食業向けSaaS開発に従事 2020年
株式会社グラファーに転職。 行政向けの電子申請SaaSを開発 2021年 アセンド株式会社に取締役CTO就任 物流向け運送管理SaaSを開発 丹羽 健 Niwa Takeru 取締役CTO/TSKaigi運営メンバー
4 アセンド株式会社の紹介 4 物流業界の価値最大化 Our Mission アセンドが挑む物流の社会課題 中小企業中心で投資余力がなく デジタル化に取り残された運送業界 2030年に物流の供給力は35%不足
日本の経済損失は10兆円 一方で運送事業の市場規模は20兆円 SaaSを起点として事業が成り立ち 十分にユニコーンが狙える業界 TAM 20兆円 SAM 2兆円 2024年問題対策として、 政策パッケージが発表 解く意義の大きい社会課題を持ち エンジニアとして最大限の挑戦と 社会的インパクトを起こすこと ができる
5 5 高い開発生産性で 3ヶ月に1度プロダクトをリリース デプロイ頻度 変更リードタイム 5.67 deploys/day 2 hours
平均修復時間 変更失敗率 24 minutes 2.6 percent 運送業特化 All-in-One SaaS を開発
6 プロダクトエンジニアとしての開発 6 1エンジニアがソフトウェアの ライフサイクル全てにオーナーシップを 持ち開発できるよう開発環境を設計・投資 ユーザ課題を中心として機能検証の 開発サイクルを高速に進めることが可能 アウトカムを中心として開発 フルサイクルを支えるため多くの技術的投資と仕組み的な資産を積み重ねています
7 7 Trunk based Development and Feature Flags Trunk based
Development and Feature Flags
プロダクト開発の不確実性への対応 • 迅速に仮説検証を進める ◦ 未完成・MVPの早期提供 ◦ A/Bテストのような実験 • 素早く安全に失敗する ◦
失敗の影響範囲を小さくする ◦ 心理的安全性の高いトライ 8 トランクベース開発の意義 8 日進月歩で プロダクトを 進化させるため トランクベース開発の不確実性・難易度を 制御するために Feature Flags を活用する 日進月歩で プロダクトを 進化させるため
Full TypeScript である利点を活かし Frontend と Backend で 共通の Feature Flags
の定義を参照 9 Full TypeScript x Feature Flags 9 Backend Frontend Core シンプルな Feature Flag の実装例 参照 Feature Flag 🏁
単純な機能のOn/Offだけでなく 特定のユーザー群のみを指定した公開 • ID単位での指定 ◦ テナント ◦ ユーザー • ユーザー属性での指定
◦ 管理者限定での先行公開 ◦ 20%などランダムな公開 10 On/Off だけでない柔軟な制御 10 公開範囲の選択肢を作ることで 状況に合った影響範囲にコントロールできる
シーン毎に利用方法を使い分ける • 短期 x 新機能 ◦ 不確実性の高い機能の検証 • 長期 x
新機能 ◦ 画面レベルでルーティング制御 • 短期 x 既存機能 ◦ 不具合がないことの最終確認 • 長期 x 既存機能 ◦ 大規模リプレイスなど最も複雑…。 11 Feature Flags の利用シチュエーションの整理 11 短期 長期 新 機 能 • 機能検証 • 顧客案内予定 • MVP開発 • 新プロダクト • 新機能 • MVP開発 既 存 機 能 • Blue→Green での公開 • データモデル 移行 • 大規模な リプレイス • データベース 移行 FeatureFlagsの生存期間 対 象 機 能 FeatureFlagsの利用シーンは多様
新機能での Feature Flags の利用 • 最も一般な新機能開発の場合 ◦ ルーティングレベルで 見れない状態にしておく ◦
一方で公開直前には ダイレクトアクセス可にすると 突発的な紹介に活用もできる • A/Bテストに近い機能検証 ◦ 実験的な機能/UIの場合 特定顧客に対して先行公開する • 顧客周知タイミングをズラす ◦ カスタマーサクセスによる 機能説明が必要な場合に スケジュールを分散させる 12 12 短期:ユーザー観点が中心 長期:新規プロダクトの開発期間 注意ポイント 注意ポイント • 開発終了間際は 短期の観点での扱いに変わる • 機能開放後に速やかに除却 ◦ 生存期間が短いかつ発生も多い ◦ 定期的な除却プロセス
既存機能での Feature Flags の利用 • 最も複雑なリプレイス ◦ 複雑である故に細かく制御せず 機能の大元でコードを複製し FeatureFlagsで分岐を作ると楽
◦ 旧版への開発停止も セットで決められると尚よし • アプリケーションレベルでの Blue→Green 公開 ◦ 性能問題が懸念される場合、 懸念の大きい顧客だけ先行公開 • データモデルの移行 ◦ 新モデル・旧モデル版を作り FeatureFlagsを用いて使い分ける 13 13 短期:不具合の最終確認 長期:リプレイス案件 注意ポイント 注意ポイント • リプレイス以前に細かい 機能改修群にできないか検討 • できる限り1つのFlagで制御 • 切り戻しを考慮すること ◦ データベースに書き込みが あるケースで後方互換性を担保
アセンドで共に開発をするプロダクトエンジニアを募集しています! プロダクト開発ナレッジを発信するイベントを 定期的に開催しています! メッセージ 14 CTO 丹羽 の 𝕏 (@niwa_takeru)
お気軽にフォローください。 ASCEND ProductFM Product Engineer Night TS Kaigi 2024春 (仮)
None