【最新版】Goの環境構築とLintの活用

【最新版】Goの環境構築とLintの活用

Goをインストール

brew経由でGoをインストールします。

% brew install go

....

go 1.21.6 is already installed but outdated (so it will be upgraded).
==> Fetching downloads for: go
✔︎ Bottle Manifest go (1.25.4)                                                                                             [Downloaded    7.5KB/  7.5KB]
✔︎ Bottle go (1.25.4)                                                                                                      [Downloaded   57.5MB/ 57.5MB]
==> Upgrading go
  1.21.6 -> 1.25.4 
==> Pouring go--1.25.4.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/go/1.25.4: 14,439 files, 203.1MB
==> Running `brew cleanup go`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
Removing: /opt/homebrew/Cellar/go/1.21.5... (12,543 files, 253.0MB)
Removing: /opt/homebrew/Cellar/go/1.21.6... (12,545 files, 253.0MB)

Goをインストールできているか確認

Goのバージョンを確認できたらインストールOKです。

% go version
go version go1.25.4 darwin/arm64

go modについて

次に、go mod initを使ってモジュールを初期化する必要があります。

このコマンドは、モジュールのディレクトリに新しいgo.modファイルを作成し、モジュールの依存関係やバージョン情報をトラッキングします。

% go mod init hello

例えば、helloパッケージをexample.com/helloモジュールとして公開した場合には、https://example.com/helloからダウンロードして、helloパッケージとしてインポートするイメージです。

つまり、モジュールはhttps://module-nameとなる場所からダウンロードされることが前提なので、モジュール名にはGitHubのリポジトリを指定する場合が多いようです。

今回は、特別公開などしないので、適当にhelloとしています。

VSCode・Cursorで使うGoの拡張機能

https://marketplace.visualstudio.com/items?itemName=golang.Go

Goの拡張機能をCursorに入れておきます。

これを入れておくことでコードジャンプや構文のサポートなどを受けることができます。

Golangci-lintを使ったリンター設定の紹介

今回は、あくまで紹介・導入方法くらいになりますが、知っておくと良さそうだったのでまとめました。

brew経由でGolangci-lintをインストール

brew経由でgolangciをインストールして、バージョン確認ができていればインストールOKです。

% brew install golangci-lint

% golangci-lint --version
golangci-lint has version 2.6.2 built with go1.25.4 from dc16cf4 on 2025-11-14T02:47:46Z

エディターの設定ファイルに反映

Cursorのsettings.jsonで以下のように拡張機能とlintの設定を記載してください。

{
  "editor.formatOnSave": true,
  "[go]": {
    "editor.defaultFormatter": "golang.go"
  },
  "go.useLanguageServer": true,
  "gopls": {
    "formatting.gofumpt": true
  },
  "go.lintTool": "golangci-lint",
  "go.lintFlags": ["--config=${workspaceFolder}/.golangci.yaml", "--fast"]
}

yamlファイルでlintルールの作成

.golangci.yamlを作成してlintルールなどを作ります。

今回はざっくり全て有効にしてみます。

version: 2

linters:
  enable-all: true

有効化されているlintの確認方法

ちなみに、どのリンターが有効になっているかは、golangci-lint help lintersで確認できました。

  • Enabled by default linters:現在有効になっているリンターが出力
  • Disabled by default linters:無効なリンターが出力
% golangci-lint help linters

こんな感じで有効と無効がわかります。

golangci-lintで有効化されているlintを確認

各lintの意味と説明に関しては、以下のドキュメントに全て記載されているのでチェックしてみてください。

他にも、golangci-lint formattersなどもあります。

lintの実行

それでは、golangci-lint runを使用してlintを実行してみましょう。(-vオプションで詳細な情報が出力可能)

出力結果にエラーがなく、issue0になっていれば問題ないです。

% golangci-lint run -v

【実務向け】Github ActionsにGolangci-lintを組み込む

golangci/golangci-lint-actionを導入することでGithub上で自動チェックしてくれます。

細かい設定は省略しますが、必要に応じて導入した方が良さそうですね。

Hello World!してみる

hello.goというファイルを作成して以下コードを記述します。

package main

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}

go runを実行してprintされていればOKです。

% go run .
Hello, World!

まとめ

この記事では、Goの開発環境構築とlintツールの活用方法について解説しました。

golangci-lintを導入することで、コード品質を保ちながら効率的な開発が可能になります。

利用可能なlinterを確認してプロジェクトに適したものを選択できるのも良いポイントですね。

また、Github Actionsと組み合わせることで、自動的なコード品質チェックを実現できます。

Goでの開発を始める際の参考になれば幸いです。

記事を書いた人

Matsuura

エンジニア

Matsuura

Anycloudでエンジニアしてます!主にFlutter・Typescript