1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Go】標準Formatter/Linterで簡単にコード品質を上げる方法

1
Last updated at Posted at 2025-12-25

はじめに

「学生ひよこ界隈が送るGo/Javaで実現する「はじめてのバックエンド」Advent Calendar 2025」11日目の記事は、Goでの開発効率を向上させる知識を学びます。

フロントエンドでTypeScriptなどを使用された経験のある方は、ESLintやPrettierの存在は比較的身近な方も多いのではないでしょうか。

これらのツールは、コードのスタイルを統一し、潜在的なバグを未然に防ぐことができるのでとても便利な一方で、ライブラリも多い上に、設定の複雑さに悩まされることもあります。

一方Goでは、gofmtという公式のフォーマッタが存在し、簡単にコード品質を保つための工夫がされています。

この記事では、Goのコード品質を自動で高く保つための「Linter(静的解析ツール)」と「Formatter(整形ツール)」の導入方法について解説します。

  • Goを書き始めたばかりで、コードの品質をどう高めれば良いか知りたい方
  • チーム開発を見据え、コードの可読性や一貫性を保つ仕組みを導入したい方

この記事で、LinterやFormatterの存在を身近にして、Goでの個人開発及びチーム開発効率を爆上げしていけるように頑張りましょう!

フロントエンドにおけるLinter/Formatterとは?

フロントエンドの世界では、LinterとFormatterはそれぞれ異なる役割を担います。

  • Formatter (Prettierなど): インデント、スペース、改行など、コードの「見た目」を統一する。
  • Linter (ESLintなど): 未使用の変数、到達不能なコード、非推奨な書き方など、コードの「品質」や潜在的なバグを指摘する。

これらを組み合わせることで、コードの可読性と品質を保つことができます。

Goの世界でも、この2つの役割は同様に重要です。

Goの標準的なLinter(gofmtなど)と設定

Goには、言語のツールチェーンに品質を保つためのツールが標準で組み込まれています。

Formatter: gofmt

gofmtは、Go公式のコードフォーマッタです。Goのソースコードを、公式が定める唯一のスタイルに自動で整形します。

私が個人的に驚いたのですが、なんと設定項目は一切ありません

多くのエディタは、ファイル保存時に自動でgofmtを実行するように設定できます。

手動で実行する場合は、以下のコマンドでプロジェクト全体のファイルを整形できます。

go fmt ./...

特定のファイルやディレクトリのみを対象とする場合は、以下のようにパスを指定して実行するだけです。

# 特定のファイルを整形
go fmt main.go

# 特定のディレクトリ内のファイルを整形
go fmt ./pkg/api

Linter: go vet

go vetは、コンパイルは通るものの、バグの可能性がある「疑わしい」コードを検出するための、公式の静的解析ツールです。

例えば、printf系の関数の引数が間違っている場合などを指摘してくれます。

以下のコマンドで実行できます。

go vet ./...

特定のファイルやディレクトリのみを対象とする場合は、以下のようにパスを指定して実行します。

# 特定のファイルを検査
go vet main.go

# 特定のディレクトリ内のファイルを検査
go vet ./pkg/api

このように、gofmtgo vetは、Go開発における最低限の品質保証ラインになりそうです。

おわりに

この記事では、Goのコード品質を保つためのFormatterとLinterについて学びました。

JS/TSの世界のFormatterやLinterに軽く触れて挫折した経験のある私は、面倒なのかなとも思っていましたが、実際はとてもシンプルに開発にも導入しやすい仕組みであったため、もっと早く知っておけばよかったなと感じました。

今後は、今回設定したLinterをCI/CDパイプラインに組み込み、品質チェックを自動化するなど活用の幅も広がりそうです。

最後までお読みいただき、ありがとうございました!

この「学生ひよこ界隈が送るGo/Javaで実現する「はじめてのバックエンド」Advent Calendar 2025」では、GoJavaを使い、APIの作り方、データベースとの接続、テストやDockerといった気になったバックエンド技術の基本を振り返った学びを共有しています。

ぜひ他の記事もチェックして、筆者がこのひとりアドカレを完遂することができるか、確認してみてください(^^)

学生ひよこ界隈が送るGo/Javaで実現する「はじめてのバックエンド」Advent Calendar 2025

それでは、明日の「学生ひよこ界隈が送るGo/Javaで実現する「はじめてのバックエンド」Advent Calendar 2025」の記事もお楽しみに!

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?