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
【Go言語】プロジェクト構成とパッケージ
Search
Tomoki Ota
July 04, 2024
Programming
0
120
【Go言語】プロジェクト構成とパッケージ
プロジェクト構成とパッケージについてまとめました。
Tomoki Ota
July 04, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
30
アーキテクチャとビジネスロジック
tomo1227
0
29
【Go言語】テスト
tomo1227
0
16
【Go言語】クロージャ
tomo1227
0
130
【Go言語】イテレータ
tomo1227
0
22
【Go言語】エラーハンドリング
tomo1227
0
20
AIに淘汰されないようにするには?
tomo1227
0
26
【Go言語】range
tomo1227
0
15
【Go言語】break
tomo1227
0
25
Other Decks in Programming
See All in Programming
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
710
CSC305 Lecture 25
javiergs
PRO
0
130
Refactor your code - refactor yourself
xosofox
1
260
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
160
From Translations to Multi Dimension Entities
alexanderschranz
2
130
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
440
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
ブラウザ単体でmp4書き出すまで - muddy-web - 2024-12
yue4u
2
460
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
180
14 Years of iOS: Lessons and Key Points
seyfoyun
1
770
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
300
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
290
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
95
5.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Facilitating Awesome Meetings
lara
50
6.1k
Adopting Sorbet at Scale
ufuk
73
9.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Statistics for Hackers
jakevdp
796
220k
Why Our Code Smells
bkeepers
PRO
335
57k
Transcript
Tomoki Ota ʲGOݴޠʳ ϓϩδΣΫτߏͱύοέʔδ
TL;DR 2
GOʹ1ͭͷදతͳ ϨΠΞτ͕͋Δ 3
https://github.com/golang-standards/project-layout 4
͔͠͠ɺ͜Εඇެࣜ Russ-Cox(Goͷϝϯςφʔͷ̍ਓ)൷͍ͯͨ͠ 5
https://go.dev/doc/modules/layout 6
Project-layoutͷσΟϨΫτϦߏ Project-layoutͷҙ γϯϓϧͳύοέʔδ γϯϓϧͳίϚϯυ APIαʔόͷϓϩδΣΫτߏ ύοέʔδͷཻ ϢʔςΟϦςΟύοέʔδ ύοέʔδͷ໊લͷিಥ ΞδΣϯμ 7
PROJECT-LAYOUT 8
PROJECT-LAYOUTͷσΟϨΫτϦߏ 9
project-layout ɺGoެࣜͷϨΠΞτͰͳ͍ͷͰɺඞͣ ͠कΒͳ͍ͱ͍͚ͳ͍نͰͳ͍ɻ src࡞͍͚ͬͯͳ͍ɻsrcΛ͏ͷJavaͷελΠϧͳͷ ͰɺGoͰ༻͍͚ͯ͠ͳ͍ɻ·ͨɺsrcҰൠత͗͢Δɻ PROJECT-LAYOUTͷҙ 10
ެࣜͷϓϩδΣΫτߏ 11
γϯϓϧͳύοέʔδ 12
γϯϓϧͳύοέʔδ 13
γϯϓϧͳύοέʔδ ϑΝΠϧΛ͚Δ͜ͱՄೳ 14
fooίϚϯυͷ࡞ γϯϓϧͳίϚϯυ 15
fooίϚϯυͷ࡞ γϯϓϧͳίϚϯυ Client 16
fooίϚϯυͷ࡞ γϯϓϧͳίϚϯυ ⭕ ❌ 17
APIαʔό 18
ύοέʔδ 19
ϢʔςΟϦςΟύοέʔδ utils, common, base, shared ͷΑ͏ͳ ڞ༗ύοέʔδ࡞ͨ͠Βμϝ🙅 20
ϢʔςΟϦςΟύοέʔδ 21
ϢʔςΟϦςΟύοέʔδ 22
ϢʔςΟϦςΟύοέʔδ 23
ϢʔςΟϦςΟύοέʔδ ҙຯͷͳ͍ύοέʔδ໊͚͍ͭͯ ͚ͳ͍ɻ·ͨɺύοέʔδͷ໊લԿ ΛؚΉ͔Ͱͳ͘ɺԿΛఏڙ͢Δ͔Ͱ ܾΊΔɻ 24
ύοέʔδ໊ͷিಥ 25
ύοέʔδ໊ͷিಥ ΤΠϦΞεͷ༻ 26
ύοέʔδ໊ͷিಥ ύοέʔδҎ֎ʹɺ ΈࠐΈؔͱมͷ໊લͷিಥආ͚Δɻ(copy()ͳͲ) 27