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
新規機能開発に負けない。 ビッグバンリリースに立ち向かう方法
Search
Atsunori Kuriyama
October 29, 2021
Programming
0
1.5k
新規機能開発に負けない。 ビッグバンリリースに立ち向かう方法
Atsunori Kuriyama
October 29, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
250
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
3
5.1k
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
250
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
4
1.6k
モテるデスク環境
mozumasu
3
640
Software Architecture
hschwentner
6
2.3k
kiroとCodexで最高のSpec駆動開発を!!数時間で web3ネイティブなミニゲームを作ってみたよ!
mashharuki
0
830
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
940
理論と実務のギャップを超える
eycjur
0
170
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
520
Google Opalで使える37のライブラリ
mickey_kubo
3
130
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
290
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
How STYLIGHT went responsive
nonsquared
100
5.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Fireside Chat
paigeccino
40
3.7k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
How GitHub (no longer) Works
holman
315
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
© commmune Inc. All rights reserved 新規機能開発に負けない。 ビッグバンリリースに立ち向かう方法 1
© commmune Inc. All rights reserved 自己紹介 2 栗山 敦任(kuriyama
atsunori) コミューン株式会社, サーバサイドEM - 福岡→札幌→大都会東京 - 妻とネコ氏2匹 - ドラム, トロフィー集め、麻雀 #ReactLT
© commmune Inc. All rights reserved 新規機能開発してますか? 3 #ReactLT
© commmune Inc. All rights reserved ビッグバンリリースしてませんか? 4 #ReactLT
© commmune Inc. All rights reserved ビッグバンリリースとは 5 修正・変更範囲のとても広いリリース -
大きめの新規機能をまるっとリリース - 1万行を越える差分 - 数百ファイルに及ぶ変更 #ReactLT
© commmune Inc. All rights reserved ビッグバンリリースすると何が辛いのか 6 修正・変更範囲のとても広いリリース -
差分が大きいからレビュー大変 - 本番環境で動確する範囲が広い - バグってた時の切り戻し - 「え、これrevertするの…?」 #ReactLT
© commmune Inc. All rights reserved とにかくめちゃめちゃ辛い 7 #ReactLT
© commmune Inc. All rights reserved フィーチャートグルで 分割リリースしよう 8 #ReactLT
© commmune Inc. All rights reserved フィーチャートグルとは 9 フィーチャートグルは、ソフトウェア開発 において、複数のソースコードのブランチ(機能ブランチ)を維持するのとは別の方法
を提供しようとする手法である。 ~ 機能トグルを利用すれば、開発者たちはメインのトラックに頻繁にソースを統合しつつも、開発中の機能へ入っていける実行 経路のトグルを「OFF」にしておけば、その機能は「死んだ」状態になる。新しい実行経路を有効にするための労力は、単にト グルを「ON」に設定するだけなので、十分に小さい。 https://ja.wikipedia.org/wiki/フィーチャートグル #ReactLT
© commmune Inc. All rights reserved フィーチャートグルとは 10 何かしら動的なパラメータをユーザ側で設定してあげる事で ある機能の
on/off を実現する仕組み → 基本何もしなければ機能は off のままなので、 実装途中の変更分を本番リリースしても問題なし #ReactLT
© commmune Inc. All rights reserved どう実現するか 11 - フィーチャーを有効にしたいページのURLにhashを乗せる
- https://commmune.com/feature#hash(任意の文字列) - hashの有無でフィーチャーの on/off を判定する処理を作成 - 個別に↑を呼び出して on/off 判定、処理を分岐させる #ReactLT
© commmune Inc. All rights reserved 実際に使ってみる 12 - 特定のフィーチャーが有効かどうか判定する処理を用意
#ReactLT
© commmune Inc. All rights reserved 実際に使ってみる 13 - コンポーネントの出し分けをしたい
#ReactLT
© commmune Inc. All rights reserved 実際に使ってみる 14 - API
の呼び出し先を切り替えたい #ReactLT
© commmune Inc. All rights reserved まとめ 15 - タスクの粒度が小さくなった
- レビューが楽に - 動確も楽に - バグってた時の切り戻しも楽に - 少しずつ本番リリースしていくので精神衛生上とても良い #ReactLT
© commmune Inc. All rights reserved 分割リリースやっていきましょう 16 #ReactLT