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
800
【Go言語】プロジェクト構成とパッケージ
プロジェクト構成とパッケージについてまとめました。
Tomoki Ota
July 04, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
94
アーキテクチャとビジネスロジック
tomo1227
0
93
【Go言語】テスト
tomo1227
0
53
【Go言語】クロージャ
tomo1227
0
260
【Go言語】イテレータ
tomo1227
0
70
【Go言語】エラーハンドリング
tomo1227
0
59
AIに淘汰されないようにするには?
tomo1227
0
59
【Go言語】range
tomo1227
0
64
【Go言語】break
tomo1227
0
62
Other Decks in Programming
See All in Programming
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
320
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
0
110
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
360
iOSでSVG画像を扱う
kishikawakatsumi
0
160
あなたとKaigi on Rails / Kaigi on Rails + You
shimoju
0
180
Leading Effective Engineering Teams in the AI Era
addyosmani
7
580
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
360
Claude Agent SDK を使ってみよう
hyshu
0
1.4k
EMこそClaude Codeでコード調査しよう
shibayu36
0
360
CSC305 Lecture 10
javiergs
PRO
0
230
20251016_Rails News ~Rails 8.1の足音を聴く~
morimorihoge
3
700
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.1k
Featured
See All Featured
KATA
mclloyd
PRO
32
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Statistics for Hackers
jakevdp
799
220k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
610
Code Review Best Practice
trishagee
72
19k
Unsuck your backbone
ammeep
671
58k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
How to train your dragon (web standard)
notwaldorf
97
6.3k
The Invisible Side of Design
smashingmag
302
51k
A Modern Web Designer's Workflow
chriscoyier
697
190k
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