go

【神ツール】Go Modules・Go Lint・Delveのインストール方法と使い方について

たけのこ

こんにちは!たけのこです。

今回は、Go言語の開発をより効率的に行うためのツールである

Go Modules」「Go Lint」「Delve」という3つの神ツールについて紹介します。

これら3つのツールは

Go言語開発をしていく中で、必ずと言っていいほど使うことになるツールたちです。

これからGo言語開発に入っていく人や、この3つのうち

どれか1つでも知らなかった人は、今のうちに使えるようになっておくと

いいかもしれません!

では早速、それぞれのツールについて見ていきましょう!

この記事で分かること
  • Go Modulesの内容と使い方
  • Go Lintの内容と使い方
  • Delveの内容と使い方
スポンサーリンク

Go Modules

では、まずは「Go Modules」について紹介していきます。

1. Go Modulesとは?

Go Modulesとは、Go言語での依存関係管理を行なうためのツールです。

「いや、、依存関係って突然言われても。。。」

という人でも、分かりやすく説明します!

例えば、

  • API勉強用のGo言語プロジェクト
  • Goのロジックを勉強するためのプロジェクト

といったように、

複数のプロジェクトの使い分けをしていた場合

プロジェクトの実行をするたびに、わざわざGOPATHの設定を切り替える必要がありました。

PCの設定開いて…

環境変数設定のGOPATHを切り替えて…

プロジェクトを開いて実行。

なんて、ちょっと手間ですよね。。。

しかし、Go Modulesを導入することで

わざわざGOPATHを切り替えずとも

プロジェクトごとに依存関係を管理できるようになりました。

これにより、複数のプロジェクトで

それぞれ別々のライブラリを参照して利用することができるようになります!

あとは、GOPATHに縛られず

自由なフォルダにプロジェクトを作れるようになることもメリットの1つですね!

2. Go Modulesの基本操作

では次に、Go Modulesの基本的な使い方について紹介します。

初期化

新しいGoプロジェクトを作成する際、まずはモジュールを初期化します。

プロジェクトディレクトリに移動し、以下のコマンドを実行します。

1go mod init example.com/myproject

このコマンドにより、go.modファイルが生成され、モジュールが初期化されます。

2.2 依存関係の追加

先ほどの画像のように、外部パッケージをプロジェクトに追加するには

以下のようにgo getコマンドを使用します。

今回は、試しにGinパッケージをプロジェクトに追加してみましょう!

1go get github.com/gin-gonic/gin

これにより、指定したパッケージが依存関係として追加され、

go.modおよびgo.sumファイルに依存関係が記録されます。

2.3 パッケージの更新

最後に、パッケージの更新方法です!

こちらは、あまり使わないかもしれませんが

パッケージを更新する場合以下のように「-u」というオプションを付けてgetします。

こちらも、試しにGinパッケージの更新をしてみます。

1go get -u github.com/gin-gonic/gin

これにより、指定したパッケージが最新バージョンに更新されますので、

パッケージを最新版にアップデートしたくなった際に、ご活用ください!

Go Lint

次に、「Go Lint」のについて紹介していきます。

早速、見ていきましょう!

1. Go Lintとは?

Go Lintは、Go言語のコードスタイルや構文をチェックするための静的解析ツールです。図る

Goのコーディング規約に従っていない部分を検出し、改善のためのアドバイスを提供します。

コチラを活用することにより、コードの品質を向上させることができます。

いわゆる、コードレビューをしてくれるツールですね!

2. Go Lintのインストールと使用方法

では次に、Go Lintのインストール方法と基本的な使い方について紹介します。

2.1 インストール

Go Lintをインストールするには、以下のコマンドを実行しましょう!

1go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

2.2 使用方法

Go Lintを使用して、コード解析するにはリンターを有効にしてあげる必要があります。

リンターとは?

リンターとは、どの解析を有効にするか。といった設定のことです。

Go lintでの解析では引っ掛かっているのに、リンターを有効にしていないと引っ掛かっていることを教えてくれないので設定してあげる必要があります。

また、基本的にデフォルトでは全体的に無効となっています。

リンターを全体的に有効にするには、

プロジェクトフォルダ直下に「.golangci.yml」ファイルを作成して

以下のコードを追記します。

1linters:
2  enable:
3    - errcheck
4    - gosimple
5    - govet 
6    - ineffassign
7    - staticcheck
8    - typecheck
9    - unused
10    - gocyclo
11    - revive
12    - misspell
13    - nakedret
14    - dupl
15run:
16  timeout: 5m

これで全体的にリンターが有効になりましたね!

あとは、プロジェクトディレクトリに移動し、

以下のコマンドを実行してコードのチェックを行ないます。

1golangci-lint run

これにより、プロジェクト内の全てのファイルがチェックされ、

改善が必要な箇所がリストアップされます。

例えば、以下のようなコードを解析してみると…

1package main
2
3import "fmt"
4
5func unusedFunction() {
6	fmt.Println("This function is not used")
7}
8
9func main() {
10	fmt.Println("Hello, World!")
11}

ターミナルに以下のような内容が出力されます。

1main.go:5:6: func `unusedFunction` is unused (unused)
2func unusedFunction() {

こちらでは、「unusedFunction()っていうメソッドが使われていないよ!!」

と教えてくれています。

このように、コードのどの部分に問題があるのか、

どのように改善すべきかを具体的に教えてくれるといった神ツールでした!

Delve

最後に、「Delve」について紹介していきます。

1. Delveとは?

Delveは、Go言語専用のデバッグツールです。

デバッグとは、プログラムの動作を確認し、バグの特定と修正を行なっていく作業のことです。

Delveを使うことで、ブレークポイントの設定やステップ実行、変数の値の確認などが簡単に行えるようになります!

2. Delveのインストールと使用

では次に、Delveのインストール方法と基本的な使い方について紹介します。

2.1 インストール

Delveは、単体でもインストールできますが、

VSCodeと統合して使用した方が使い勝手が良いので

VSCodeの中でインストールする方法を紹介します

…とは言っても、やることと言えば

VSCodeにGo言語の拡張機能をインストールするだけで

使えるようになります!

2.2 使用方法

次に、デバッグ方法についてです。

まずはデバッグの準備として、プロジェクトフォルダ直下に「launch.json」ファイルを作成します。

そして、launch.jsonに以下のコードを追記します。

1{
2    "version": "0.2.0",
3    "configurations": [
4        {
5            "name": "Launch",
6            "type": "go",
7            "request": "launch",
8            "mode": "debug",
9            "program": "${fileDirname}",
10            "env": {},
11            "args": []
12        }
13    ]
14}
15

準備はこれでOKですね~

後は、VSCode側でデバックしたいところにブレークポイントを張って

デバッグ実行するだけで利用できてしまいます!

これだけで、デバッグが簡単にできてしまうといった最後の神ツールでした!

まとめ

ということで、今回は3つの神ツールについて紹介しました。

どのツールも使い勝手がよく、実際の開発現場でも必ずと言っていいほど使われています。

今後のGo言語開発の参考にしていただけたら幸いです!

というわけで、今回はこの辺りで!ありがとうございました!

スポンサーリンク
ABOUT ME
たけのこ
たけのこ
自由奔放エンジニア
現役でエンジニアをやっています! 開発現場で経験したコーディング実装例、実装アーキテクチャの解説などを記事に書き起こしています!
記事URLをコピーしました