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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryota Kunisada
November 14, 2023
Programming
0
120
開発生産性向上の取り組みログ
旭川 ゆるい勉強会
で発表した時の資料です。
Ryota Kunisada
November 14, 2023
Tweet
Share
More Decks by Ryota Kunisada
See All by Ryota Kunisada
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
440
フロントエンドエンジニアとQAエンジニアの協働による自動テストを増やす開発プロセス
92thunder
0
81
トランクベース開発の導入で見えた DevOpsの技術・プロセス・文化との繋がり
92thunder
0
1.4k
どんなページでも動かす!JS_CSS汚染を避ける戦い
92thunder
0
340
Other Decks in Programming
See All in Programming
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
250
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
560
ファインチューニングせずメインコンペを解く方法
pokutuna
0
200
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
140
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
170
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
410
Claude Codeログ基盤の構築
giginet
PRO
7
3.7k
20260320登壇資料
pharct
0
130
モダンOBSプラグイン開発
umireon
0
180
Java 21/25 Virtual Threads 소개
debop
0
280
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
190
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
180
Featured
See All Featured
Designing for Performance
lara
611
70k
Facilitating Awesome Meetings
lara
57
6.8k
My Coaching Mixtape
mlcsv
0
86
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
270
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
Side Projects
sachag
455
43k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Speed Design
sergeychernyshev
33
1.6k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
200
Transcript
開発生産性向上の 取り組みログ 旭川 ゆるい勉強会 2023/10/21 @92thunder
自己紹介 • 国定 凌太 @92thunder • 1994年生まれ • 岡山県 →
上京して就職 → 2023年6月に旭川に移住 • 津山高専 → ソニーグループ会社 → 当時創業1ヶ月経ったばかりのスタートアップ • テックタッチ株式会社のフロントエンドエンジニアとして 自社サービスの開発に取り組んでいます
「テックタッチ」の紹介 • WebサイトにサードパーティJSを組み込むことで、 ノーコードでガイドやツールチップでの案内を追加できる • スニペット / ブラウザ拡張で提供
生産性向上に向けて取り組んでいるが 何度も壁にぶつかりながら試行錯誤している 自分の頭の中を整理するためにも話します
なぜ開発生産性向上に取り組むか • 「LeanとDevOpsの科学」の影響を受けて Eliteチームと呼ばれる開発チームを目指してビジネスに貢献したい • 個人開発や開発初期のmainブランチに変更を加えて すぐに反映されるあの感じで普段から開発できたら絶対楽しい • 技術大好き、マネジメントが好きというわけではないが アジャイルや開発プロセスの領域は好き
https://amzn.asia/d/0vi6VZG
開発生産性を測る Four Keys • 変更のリードタイム - commit から本番環境稼働までの所要時間 • デプロイの頻度
- 組織による正常な本番環境へのリリースの頻度 • 変更障害率 - デプロイが原因で本番環境で障害が発生する割合(%) • サービス復元時間 - 組織が本番環境での障害から回復するのにかかる時間 学術的にもこれらの向上が生産性の高いチームに繋がることが証明されている
リードタイム短縮に注力 • 現状自動テストが難しく手動テストに頼っているということもあり デプロイ頻度は3ヶ月に1度で固定し、品質をじっくり検証している ◦ ここに手をかけるにはBiz含む関係者の調整やデプロイ完全自動化など 時間をかけて取り組む必要がある • リードタイム短縮のプラクティスはたくさんあるので手をつけやすい ◦
ペアプロ、トランクベース開発、同期コードレビュー、自動テスト 他の指標は並行しつつ、リードタイム改善に向けて手を動かす
トランクベース開発:1日に1回はmainにマージ • Git-FlowやGitHub-Flowに代表されるようなブランチ戦略の1つ • mainブランチから派生したブランチで作業し 1日に1回はmainブランチにマージする • デプロイ頻度のメトリクスにも直結するため mainブランチは常にマージ可能な状態を維持する必要がある 機能の開発途中ではマージできない🤔
フィーチャートグルで開発途中の機能でもマージできる • マージ可能な状態 = 本番環境で開発途中の機能が見えない • フィーチャートグル機構があれば コードに変更を加えず機能の使用可否を切り替えできる • 1日1回mainブランチにマージするには必要不可欠
新機能の導線を隠す!
フィーチャートグルを作る • 動的フィーチャートグル ◦ 管理画面からネットワーク経由で切り替えできる ◦ 障害に強い構成にするため、キャッシュ機構が必要 • 静的フィーチャートグル ◦
ソースコードの一箇所を変更するだけで機能の公開を切り替えできる ◦ 簡単に導入できるためこちらを選択 • Reactで開発体験に気をつけていい感じに実装しドキュメントもバッチリ 作って2ヶ月、未だ使われてない😢
ドキュメント抜粋
フィーチャートグルを適用しやすいケース • 既出機能ではなく「完全に新規」の機能 • 導線がはっきりしていて機能公開の切り替えが容易 • 新機能が他の機能でも基盤とする実装に依存していない 適用しにくいケースの方が圧倒的に多い🥺
既出機能にも改修が必要な新機能 新機能 既出 機能 コンポーネント 少し手を加えれば同じコンポーネントを 使い回すことができる🤩 新機能 既出 機能
コンポーネント コンポーネントにも分岐が強要されてしまう 🤢 フィーチャートグルによる分岐があちこちに発生すると辛い ... フィーチャー トグル コンポーネント
フィーチャートグルを使う方法を模索中 • 既出機能の一部を変更する場合、思い切ってコピーする作戦 ◦ /awesome_feature ▪ main ▪ component1, component2…
↓コピー ◦ /new_awesome_feature ▪ main ▪ component1, component2... 似たようなコードが増え、完全置き換えまでにバグになるリスク増
フィーチャートグルを使うための設計スキル • SOLID原則に立ち返る ◦ S: 単一責任 ◦ O: 既存コードの変更なしで拡張できるように •
DI(依存性注入)という考え ◦ DIするためには、既存の機能との分離が必要 ◦ 上位レイヤーでモジュールや振る舞いを注入する考え方が 導線を切り替えるだけで、機能の公開可否できる設計に繋がる フィーチャートグルを使うために良い設計に近づく副次的効果
開発タスクを細分化する技術 • 機能ブランチに変更を加えていく方が考えることが少なくて楽 タスク分割から意識しないとフィーチャーフラグを使う考えに繋がらない • INVEST ◦ 独立、交渉可能、価値がある、見積もり可能、小さい、テスト可能 • INVESTに従ってタスクを分割するには
普段からタスク分割に気をつけた上で、それなりの開発経験が必要
開発生産性の向上を目指す ⬇ タスク分割、設計、自動テストなど 高いソフトウェア開発スキルに 向き合い続けることにも繋がる