Go開発者への道 第2回 モジュール管理方法

GOコラム

Go初心者向けに始めた記事の第2回になります。
今回はGoのモジュールを管理するgo modについて解説します。
この記事は、初学者向けに現場でGoの開発ができるようになることをコンセプトに書いております。私はGoを仕事で2年半経験しておりまして、そこで学んだ知識を少しでも読者に提供できたらと思っております。

前回の記事はこちら

Goのモジュール

Goのライブラリにはリポジトリ、モジュール、パッケージの3つの概念を使って管理されています。
リポジトリはGitHubでお馴染みのソースコードを管理するリポジトリのことです。モジュールはGoのライブラリあるいはアプリのrootになり、リポジトリに保存されています。パッケージはフォルダのことで、全てのソースコードがパッケージに属している。モジュール1個が複数のパッケージから構成されています。

go modとは

go mod コマンドはモジュール管理をするためのコマンド。「go mod init {モジュールのパス}」を実行することで、go.modを作成する。このコマンドを実行したディレクトリがモジュールのルートになります。
またモジュールに関わるコマンドとして、「go get」「go install」「go mod tidy」があります。
「go get」はモジュールの依存関係を追加します。「go install」でモジュールをバイナリでインストールします。「go mod tidy」でソースファイルを解析して、必要なモジュールのダウンロードや、不要なファイルの削除をします。

実際にgo.modを作ってみる

それでは実際にgo.modを作成して、モジュールをインストールしてみましょう。
今回も前回同様に以下のリポジトリを使用して実行していきます。

GitHub - SND1231/go-column at go-column-1
Go コラムのサンプルコードをこちらに残す. Contribute to SND1231/go-column development by creating an account on GitHub.

go mod initを実行。モジュールパスについては「github.com/GitHubユーザ名/リポジトリ名」で作成が一般的。

root@3219d1301022:/work# go mod init github.com/SND1231/go-column
go: creating new go.mod: module github.com/SND1231/go-column
go: to add module requirements and sums:
        go mod tidy

「go get」でgoogle/uuidというuuidを生成してくれるモジュールをインストールする。

root@3219d1301022:/work# go get github.com/google/uuid
go: downloading github.com/google/uuid v1.3.0
go: added github.com/google/uuid v1.3.0

# go mod tidyを実行する。出力はなし
root@3219d1301022:/work# go mod tidy

hello.goを以下に編集する

package main

import (
	"fmt"

	"github.com/google/uuid"
)

func main() {
	uuID, _ := uuid.NewUUID()
	fmt.Println("Hello world!!", uuID)
}

hello.goを実行すると、「Hello world!! {uuid}」になることを確認できます。

root@3219d1301022:/work# go run hello.go 
Hello world!! e5f24439-f133-11ed-b043-0242c0a80002

最終的には以下のリポジトリの状態になります。

GitHub - SND1231/go-column at go-column-2
Go コラムのサンプルコードをこちらに残す. Contribute to SND1231/go-column development by creating an account on GitHub.

まとめ

今回はGoのモジュールを管理する方法を解説してきました。
次回はmakefileというプロダクトをビルドしたり、テストするなどコマンドを記述するファイルについて解説をしていますので、興味あればぜひ読んでください。
「Go開発者への道」の記事以外にもGoについて書いた記事がございますので、もし興味がありましたら、おすすめ記事も見てもらえたらと思います。

【次の記事】

【おすすめ記事のリンク】

コメント

タイトルとURLをコピーしました