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
140
goplantumlの紹介
Kyoto.go #50 オフラインLT会
noru
April 28, 2024
Tweet
Share
More Decks by noru
See All by noru
開発生産性向上のためにGo Template Repositoryを作った話
genkihirano
1
5
connect-goで実現するカスタムエラー
genkihirano
1
74
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Why Our Code Smells
bkeepers
PRO
334
57k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
The Pragmatic Product Professional
lauravandoore
31
6.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Designing the Hi-DPI Web
ddemaree
280
34k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Code Reviewing Like a Champion
maltzj
520
39k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
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のコードを可視化することで、様々なメリットが得られました ・簡単に導入できるので、良ければ試してみてください! ・ご清聴ありがとうございました