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
goplantumlの紹介
Search
Genki Hirano
April 28, 2024
1
74
goplantumlの紹介
Kyoto.go #50 オフラインLT会
Genki Hirano
April 28, 2024
Tweet
Share
More Decks by Genki Hirano
See All by Genki Hirano
失敗から学ぶGoプロジェクト~Template Repository~
genkihirano
0
20
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
43
12k
Writing Fast Ruby
sferik
622
60k
The Cult of Friendly URLs
andyhume
74
5.7k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
The Pragmatic Product Professional
lauravandoore
26
5.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Producing Creativity
orderedlist
PRO
338
39k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
Infographics Made Easy
chrislema
238
18k
Ruby is Unlike a Banana
tanoku
96
10k
Transcript
goplantumlの紹介 Kyoto.go #50 noru
自己紹介 noru ・Go言語を書くことが多いです ・設計も好きです ・京都とは関係ないけど、東京から飛んできました笑 ・将来ノルウェージャン・フォレスト・キャットと暮らしたい ・Xアカウント:@gopher86kawaii
会社紹介 株式会社ブルーイッシュ ・Go, Rust, 生成AIエンジニア等を募集中 ・興味があれば覗いていただけると嬉しいです!
目次 1. goplantumlとの出会い 2. プロジェクトの課題 3. goplantumlの紹介 4. goplantumlを使ってみる 5.
goplantumlを導入したメリット 6. まとめ
1. goplantumlとの出会い ・「設計で使える良いツールないかなぁ...」とGoogleとXで探してたところ、良さげ なツールを見つけた! ・しかもGoで使える! ・プロジェクトの課題を解決できるかも。試してみるしかない💪
2. プロジェクトの課題 ・ドキュメントとコードの乖離 ・ドメインモデル図 (他の設計書も含む) とコード間の乖離が徐々に発生 ・ドキュメントの更新が追いついてない ・コードのキャッチアップ (特にドメイン) に時間がかかる
・新規メンバーがプロジェクトに参画する時 ・カオスなコードをリファクタリングする時
3. goplantumlの紹介 GoのソースコードからUMLクラス図 を自動生成するツール ・似た様なライブラリで bykof/go-plantumlが存在するが、 Star数はgoplantumlの方が多い
3. goplantumlの紹介 Dumels(https://www.dumels.com/) でも使用されている ・GoのGitHub Repository URLを検 索するとUML図を生成してくれる Webサービス
3. goplantumlの紹介 使用方法 ・goplantuml [-recursive] path > output.puml でpumlファイルを自動生成 ・go
install github.com/jfeliu007/goplantuml@latest ・https://github.com/jfeliu007/goplantuml
3. goplantumlの紹介 オプションを一部紹介 ・-recursive: path内の全ディレクトリを再帰的に探索 ・-hide-fields: フィールドを非表示で出力 ・-hide-methods: メソッドを非表示で出力 ・-hide-connections:
依存関係を非表示で出力
4. goplantumlを使ってみる 生成対象のGoコード ・model ・User, Name, Addressの構造体 ・Name構造体はFullNameメソッドを 持っている
4. goplantumlを使ってみる pumlファイル自動生成 ・goplantuml -recursive ./model > goplantuml.puml実行
4. goplantumlを使ってみる UML図で表示 ・VSCode拡張機能「PlantUML」で pumlファイル→UML図を表示 ・構造体とメソッドがUML図で可視化 された
5. goplantumlを導入したメリット ドメインモデル図との乖離の発見速度の向上 ・ドメインモデル図に限らず、ドキュメントの更新は忘れがち ・ドキュメントと実装がズレていると、新規参画メンバーや保守フェーズでどちら が正しいのか調査する時間が必要になる ・UML図で現状の構造を可視化することで、ドメインモデル図と乖離している箇 所を早期発見し、修正することができる
5. goplantumlを導入したメリット 新規参画メンバーのキャッチアップ (コードリーディング) 速度の向上 ・UML図を見ることで、コードを素早く把握 ・コード全体・各構造体やメソッドの設計 ・詳細が見えないので、キャッチアップ速度が向上する ・ドメインモデル図と見比べて、どのドメインが未実装か素早く把握できる
5. goplantumlを導入したメリット リファクタリングと品質保証の支援 ・肥大化したモデルに気付きやすくなる ・おかしなビジネスロジックの持たせ方に気付きやすくなる
5. goplantumlを導入したメリット PMやドメインエキスパートも現状のプロジェクトの構造を容易に理解 ・コードを書かないPMやドメインエキスパートも、UML図でプロジェクトの現状 の構造を簡単に把握できる ・コードを読むよりもとっつきやすい
6. まとめ ・Goのコードを可視化することで、様々なメリットが得られました ・簡単に導入できるので、良ければ試してみてください! ・ご清聴ありがとうございました