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
h.isoe
February 26, 2023
Programming
0
250
Go言語のモジュール管理_完全に理解した
エンジニア達の「完全に理解した」Talk #38
https://easy2.connpass.com/event/273874/
h.isoe
February 26, 2023
Tweet
Share
More Decks by h.isoe
See All by h.isoe
AIを「完全に理解」するG検定合格体験記
ih6109
1
110
2022_07_14_おすすめの技術書 LT会 - vol.4_ 問題解決を仕事にする 全ての人へ
ih6109
0
110
Kotlinでサーバーレス! 「Kotless」の紹介
ih6109
1
560
2021_08_19 おすすめの技術書 LT会 - vol.2 Vue.js3超入門がとにかくやさしい
ih6109
0
22k
Other Decks in Programming
See All in Programming
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
280
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
340
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
690
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
240
SQL Server 2025 LT
odashinsuke
0
140
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2k
Patterns of Patterns
denyspoltorak
0
430
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.1k
Vibe codingでおすすめの言語と開発手法
uyuki234
0
170
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.2k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
GraphQLとの向き合い方2022年版
quramy
50
14k
Accessibility Awareness
sabderemane
0
34
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
We Have a Design System, Now What?
morganepeng
54
8k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
38
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
190
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
140
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
430
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
230
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
32
Transcript
Go言語のモジュール管理 完全に理解した 2023/02/23 エンジニア達の「完全に理解した」Talk #38 磯江 宏由紀
自己紹介 名前:磯江 宏由紀 所属:虎の穴ラボ株式会社 クリエイター支援プラットフォーム開発 読んでいる書籍:「教養としての決済」 決済周りの開発をしたことがあったので興味を惹かれた 決済にまつわる歴史や雑学的が楽しい
サンプルにするプロジェクト エンジニア達の「〇〇完全に理解した」Talk #33で話した GolangでOGP用に画像を作る自作プログラム https://github.com/HiroyukiIsoe/golang-image-util • 画像の読み込み、保存 ◦ 標準モジュール+α •
画像をぼかす、文字を書き込む ◦ 外部モジュール • 画像をS3に保存する ◦ 自作モジュール(外部モジュールのラッパー)
Go言語のモジュール管理 • Go Module ◦ Go1.11からサポートされたモジュール管理方法 ◦ モジュールの初期化は以下コマンド ▪ go
mod init “モジュール名” • GOPATH ◦ Go1.10以前利用していたモジュール管理方法 ◦ 昔の情報を漁っていることがあるので注意
Go言語のモジュールを管理で利用するファイル モジュール管理に利用しているファイルは以下2つ • go.mod ◦ モジュールも依存関係やバージョン情報を記録しているファイル • go.sum ◦ チェックサムを記録しているファイル
ライブラリ改ざんなどを検知できるが、個人開発の規模だと気にすることはない
go.mod 自分自身のモジュール名→ Go言語のバージョン→ → 依存モジュールのパスと バージョン module image-util go 1.19
require ( github.com/aws/aws-sdk-go-v2 v1.17.3 github.com/aws/aws-sdk-go-v2/config v1.18.10 github.com/aws/aws-sdk-go-v2/service/s3 v1.30.1 github.com/esimov/stackblur-go v1.1.0 github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 golang.org/x/image v0.0.0-20220722155232-062f8c9fd539 )
モジュールの利用:標準モジュール モジュールを扱うときは「import」を利用し てモジュールを読み込む。 今回は標準モジュール「fmt」をつかって標 準出力に「Hello World」と表示している。 package main import "fmt"
func main() { fmt.Println("Hello World") }
package s3 import ( =(中略)= "github.com/aws/aws-sdk-go-v2/service/s3" ) var client *s3.Client
func init() { cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { log.Fatal(err) } client = s3.NewFromConfig(cfg) } モジュールの利用:外部モジュール 利用したいモジュールを「go get」コマンド などで取得した後、 標準モジュールの利用と同様に 「import」を利用して読み込む。 サンプルは自作モジュール。 golang-image-util ┗internal ┗s3 ┗s3.go
モジュール利用:自作モジュール package main import ( =(中略)= "image-util/internal/s3" =(中略)= ) =(略)=
go.modで定義した自分自身のモジュール 名から始める必要がある以下に依存して いるわけではない • ディレクトリ名 • 相対的なパス 自分が「go mod init image-util」としていた ことを忘れていた(1敗)
まとめ • Go言語のパッケージ管理は「GoModule」で行っている • go.modファイルで依存関係を管理 • 自作モジュールを読み込むときには、自身のモジュール名を要確認
おわり