Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ボイラープレート自動生成ツールを使わなくなった話.pdf
Search
sugar-cat
July 17, 2024
800
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ボイラープレート自動生成ツールを使わなくなった話.pdf
sugar-cat
July 17, 2024
More Decks by sugar-cat
See All by sugar-cat
HonoとOpenTelemetryで実現するオブザーバービリティ構築
sugarcat7
0
570
ErrorTrackingとOrchestrion
sugarcat7
0
440
DiscordとCloudflare
sugarcat7
2
1.3k
Cloudflare Workflowsを使いたい倒したい
sugarcat7
8
2.7k
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
1.7k
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
520
Honoで実現するバックエンド開発のイマ
sugarcat7
23
6.4k
GoとWASI~超入門~
sugarcat7
2
330
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
450
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
Writing Fast Ruby
sferik
630
63k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building AI with AI
inesmontani
PRO
1
1.2k
Building an army of robots
kneath
306
46k
GitHub's CSS Performance
jonrohan
1033
470k
Abbi's Birthday
coloredviolet
3
9.9k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The Curse of the Amulet
leimatthew05
2
14k
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. まとめ