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
330
【Go言語】プロジェクト構成とパッケージ
プロジェクト構成とパッケージについてまとめました。
Tomoki Ota
July 04, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
50
アーキテクチャとビジネスロジック
tomo1227
0
54
【Go言語】テスト
tomo1227
0
30
【Go言語】クロージャ
tomo1227
0
220
【Go言語】イテレータ
tomo1227
0
37
【Go言語】エラーハンドリング
tomo1227
0
39
AIに淘汰されないようにするには?
tomo1227
0
36
【Go言語】range
tomo1227
0
29
【Go言語】break
tomo1227
0
38
Other Decks in Programming
See All in Programming
State of Namespace
tagomoris
4
920
5年間継続して開発した自作OSSの記録
bebeji_nappa
0
180
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
230
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
330
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
110
アプリを起動せずにアプリを開発して品質と生産性を上げる
ishkawa
0
2.6k
Qiita Bash
mercury_dev0517
1
190
海外のアプリで見かけたかっこいいTransitionを真似てみる
shogotakasaki
1
160
これだけは知っておきたいクラス設計の基礎知識 version 2
masuda220
PRO
24
6.2k
Harnessing the power of AI in IntelliJ IDEA
antonarhipov
1
100
小田原でみんなで一句詠みたいな #phpcon_odawara
stefafafan
0
320
AIコードエディタの基盤となるLLMのFlutter性能評価
alquist4121
0
200
Featured
See All Featured
For a Future-Friendly Web
brad_frost
176
9.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Thoughts on Productivity
jonyablonski
69
4.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.2k
Making Projects Easy
brettharned
116
6.1k
The Invisible Side of Design
smashingmag
299
50k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
GitHub's CSS Performance
jonrohan
1030
460k
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