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
690
ボイラープレート自動生成ツールを使わなくなった話.pdf
sugar-cat
July 17, 2024
Tweet
Share
More Decks by sugar-cat
See All by sugar-cat
HonoとOpenTelemetryで実現するオブザーバービリティ構築
sugarcat7
0
190
ErrorTrackingとOrchestrion
sugarcat7
0
320
DiscordとCloudflare
sugarcat7
1
370
Cloudflare Workflowsを使いたい倒したい
sugarcat7
7
1.8k
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
1.4k
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
450
Honoで実現するバックエンド開発のイマ
sugarcat7
23
5.9k
GoとWASI~超入門~
sugarcat7
2
260
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
360
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Become a Pro
speakerdeck
PRO
29
5.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
The Pragmatic Product Professional
lauravandoore
36
7k
Thoughts on Productivity
jonyablonski
73
4.9k
Scaling GitHub
holman
463
140k
Writing Fast Ruby
sferik
630
62k
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. まとめ