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
noru
April 28, 2024
1
250
goplantumlの紹介
Kyoto.go #50 オフラインLT会
noru
April 28, 2024
Tweet
Share
More Decks by noru
See All by noru
歴史から学ぶCQRS/ES
genkihirano
0
390
connect-goで実現するカスタムエラー
genkihirano
1
190
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Context Engineering - Making Every Token Count
addyosmani
8
300
Bash Introduction
62gerente
615
210k
For a Future-Friendly Web
brad_frost
180
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
A better future with KSS
kneath
239
18k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Code Reviewing Like a Champion
maltzj
526
40k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
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のコードを可視化することで、様々なメリットが得られました ・簡単に導入できるので、良ければ試してみてください! ・ご清聴ありがとうございました