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
370
最近個人開発が熱い ~モニタリング強化編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
Become a Pro
speakerdeck
PRO
25
5k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Building Adaptive Systems
keathley
38
2.3k
How to Ace a Technical Interview
jacobian
276
23k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Agile that works and the tools we love
rasmusluckow
327
21k
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. まとめ