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
ボイラープレート自動生成ツールを使わなくなった話.pdf
Search
sugar-cat
July 17, 2024
4
490
ボイラープレート自動生成ツールを使わなくなった話.pdf
sugar-cat
July 17, 2024
Tweet
Share
More Decks by sugar-cat
See All by sugar-cat
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
380
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
300
Honoで実現するバックエンド開発のイマ
sugarcat7
17
2.3k
GoとWASI~超入門~
sugarcat7
2
210
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
230
Using_Hono_in__B2B_SaaS_Application.pdf
sugarcat7
6
350
Introduction to Database Connection Management Patterns in TypeScript.pdf
sugarcat7
1
350
Azure Container AppsのSecret管理とIaC
sugarcat7
1
190
最近個人開発が熱い
sugarcat7
15
14k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
31
6.3k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Code Review Best Practice
trishagee
64
17k
What's new in Ruby 2.0
geeforr
343
31k
For a Future-Friendly Web
brad_frost
175
9.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Transcript
ボイラープレート自動生成 ツールを使わなくなった話 2024/7/17 D-Plus Tokyo #4 ~しくじり事例から学ぶ!開発生産性の取り組みLT会~ @sugar235711
2 sugar-cat 所属: Cyber Agent/AI Shift バックエンドエンジニア パフォーマンスチューニングとセキュリティの話が好きです 自己紹介 @sugar235711
3 開発者から見た 開発生産性の話です
4 Agenda 1. 開発フロー 2. ボイラープレートと課題 3. まとめ
5 1.1. 開発中のプロダクト 1. 開発フローと開発生産性
6 1.2. インフラ構成 1. 開発フローと開発生産性
7 1.2. インフラ構成 1. 開発フローと開発生産性
8 Git Flowを採用した featureベースの開発 1.3. 開発フロー 1. 開発フローと開発生産性
9 OpenAPIを中心としたスキーマ駆動開発 1.4. 開発プロセス 1. 開発フローと開発生産性
10 OpenAPIを中心としたスキーマ駆動開発 1.4. 開発プロセス 1. 開発フローと開発生産性 ここの話
11 スキーマをベースに詳細な実装を詰めていく。 クリーンアーキテクチャベースでレイヤー間で責務を分けるのでコードの記 述量が多い。 1.5. APIサーバーの開発 1. 開発フローと開発生産性 Request Response
Handler Usecase Repository
12 開発工数の削減 • Stubの開発を高速化しフロントエンドに影響を与えたくない • レイヤー分けをした時のコードの記述量を減らしたい • 他サービスへの展開 認知負荷を減らす •
誰が書いても同じような実装にする ◦ メソッドの命名 etc 2.1. 導入背景 2. ボイラープレートについて
13 開発工数の削減 • Stubの開発を高速化しフロントエンドに影響を与えたくない • レイヤー分けをした時のコードの記述量を減らしたい • 他サービスへの展開 認知負荷を減らす •
誰が書いても同じような実装にする ◦ メソッドの命名 etc 2.1. 導入背景 2. ボイラープレートと課題
14 2.2. ツールと実装 2. ボイラープレートと課題
15 2.2. ツールと実装 (ejsのテンプレートからコードを生成例 ) 2. ボイラープレートと課題
16 2.2. ツールと実装 (ejsのテンプレートからコードを生成例 ) 2. ボイラープレートと課題
17 2.2. ツールと実装 (入力や選択可能な少しリッチな CLIを作れる) 2. ボイラープレートと課題
18 [開発初期] • 0->1で多くのAPIを同時並行に一気に作ることが多かった 2.3. 導入後に見えた課題 2. ボイラープレートと課題
19 [開発初期] • 0->1で多くのAPIを同時並行に一気に作ることが多かった ➢ 大量のファイルを一気に作れて便利だった 2.3. 導入後に見えた課題 2. ボイラープレートと課題
20 [開発初期] • 0->1で多くのAPIを同時並行に一気に作ることが多かった ➢ 大量のファイルを一気に作れて便利だった [半年~現在(8ヶ月目)] • 設計の見直しや、バグ Fixなど部分的な修正が増えた
• 要件の複雑化で実装パターンが増えてテンプレートの準備が大変に なった • ejsつらい 2.3. 導入後に見えた課題 2. ボイラープレートと課題
21 [開発初期] • 0->1で多くのAPIを同時並行に一気に作ることが多かった ➢ 大量のファイルを一気に作れて便利だった [半年~現在(8ヶ月目)] • 設計の見直しや、バグ Fixなど部分的な修正が増えた
➢ 既存ファイルの上書き、部分的な生成が難しい • 要件の複雑化で実装パターンが増えてテンプレートの準備が大変に なった ➢ CQRSなどのアーキテクチャパターンへの対応 • ejsつらい ➢ 人類には早い、読みづらい 2.3. 導入後に見えた課題 2. ボイラープレートと課題
22 😇 2. ボイラープレートと課題
23 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題
24 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題 [認知] ・ツールがあることを知らない
25 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題 [認知] ・ツールがあることを知らない →オンボーディング不足
26 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題 [認知] ・ツールがあることを知らない →オンボーディング不足
[興味] ・使い方がわからない
27 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題 [認知] ・ツールがあることを知らない →オンボーディング不足
[興味] ・使い方がわからない →ツール固有の知識の学習コスト、社内ドキュメント不足
28 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題 [認知] ・ツールがあることを知らない →オンボーディング不足
[興味] ・使い方がわからない →ツール固有の知識の学習コスト、社内ドキュメント不足 [行動] ・理想の生成結果ではなかった
29 • そもそも使う人がいなくなった 2.4. どうして消した? 2. ボイラープレートと課題 [認知] ・ツールがあることを知らない →オンボーディング不足
[興味] ・使い方がわからない →ツール固有の知識の学習コスト、社内ドキュメント不足 [行動] ・理想の生成結果ではなかった →アーキテクチャ設計の変更に弱い、運用が属人化で追従できない
30 • 周知とフィードバックの収集 • 属人性の排除 2.5. どうしたら良かった? 2. ボイラープレートと課題
31 • 周知とフィードバックの収集 ◦ 開発チーム側への利用提案 ▪ 導入は開発チームに決めてもらう ▪ FBをもらう。 良い悪いかかわらず改善のサイクルを回す。
◦ とりあえず入れるで終わらない、 計測し状況を可視化する ▪ 使いやすさ : ASTベースでさらにカスタマイズ可能な Generator方が良いかもしれない ▪ 開発速度 : 開発完了までのリードタイムにどのくらい影響を与えたか • 属人性の排除 ◦ 協力者を増やす ▪ Platform Engineering的な考え方を取り入れ、汎化可能な知見とし てプロダクト横断して取り入れるようにする 2.5. どうしたら良かった? 2. ボイラープレートと課題
32 • ボイラープレートの自動生成ツールを作ったが、運用が困難になり使われなくなっ た事例を紹介した 3. まとめ