Goは人気のあるプログラミング言語で、さまざまな機能を提供する標準ライブラリが付属しています。
しかし、時には開発者は自分の要求を満たすために外部のパッケージを使う必要があります。幸い、Goにはコード内でサードパーティパッケージをインポートして使用するための使いやすいメカニズムが用意されています。
この記事では、rsc.io/quoteパッケージを使用する方法を例として紹介します。
プロジェクト用の新しいディレクトリを作成し、ターミナルでそのディレクトリに移動します。
mkdir packer
cd packer
そして、以下のコマンドを実行して、新しいGoモジュールを初期化します。
go mod init example.com/packer
これにより、example.com/packerという名前の新しいモジュールが作成され、プロジェクトディレクトリにgo.modファイルが生成されます。
rsc.io/quoteパッケージは、格言集を提供するシンプルなGoパッケージです。Goのコード内でこのパッケージを使うには、ファイルの先頭に次の行を追加します。
import "rsc.io/quote"
この行は、rsc/quoteリポジトリからquoteパッケージをインポートするようにGoに指示します。
サードパーティのパッケージをプロジェクトにインポートするとき、Goはそのパッケージがgo.modファイルにすでにリストされているかどうかを確認します。そうでない場合、Goはそのパッケージをバージョン情報とともにgo.modファイルに追加します。
依存関係を管理するには、go modコマンドを使用します。最も便利なコマンドの一つにgo mod tidyがあります。このコマンドはコードのimportをスキャンして、使われていない依存関係をgo.modファイルから削除します。
go mod tidyコマンドを使うには、プロジェクトディレクトリに移動して、次のコマンドを実行します。
go mod tidy
これはgo.modファイルから未使用の依存関係を削除し、最新のチェックサムでgo.sumファイルを更新します。これにより、プロジェクトが各依存関係の正しいバージョンを使用していることが保証されます。
Note: go.modファイルは、モジュールの依存関係を指定するテキストファイルで、各依存関係のバージョン番号も含まれています。これは、Goがプロジェクト内のすべての依存関係を追跡するために使用する中心的なファイルです。go.modファイルは、go mod initコマンドを実行すると、Goによって自動的に作成されます。
Note: go.sumファイルはテキストファイルで、各依存関係のチェックサムのリストを含んでいます。Goはこのファイルを使用して、ダウンロードした依存関係が改ざんされていないことを確認します。チェックサムは、ダウンロードしたファイルをハッシュ化し、go.sumファイル内のチェックサムと比較することで生成されます。チェックサムが一致した場合、その依存関係は検証済みとみなされます。
go mod tidyが実行されると、rsc.io/quoteというモジュールを見つけ出し、自動でインストールが行われます。Goコマンドはhttps://rsc.io/quoteからquoteパッケージをダウンロードします。こうすることで、ローカル環境においてquoteパッケージを使用することができるようになります。
パッケージをインポートした後は、そのパッケージが提供する任意の関数を使用することができます。例えば、パッケージからランダムに引用文を表示したい場合、以下のように quote.Go()関数を呼び出すことができます。
package main
import "rsc.io/quote"
func main() {
println(quote.Go())
}
上記のコードは、実行されるたびにパッケージからランダムな引用文を出力します。
最後に、ターミナルでプロジェクトのディレクトリに移動し、以下のコマンドを実行することで、プログラムをビルドして実行することができます。
go run .
これによってプログラムがビルドされて実行され、有名なGoの引用文がコンソールに出力されるはずです。
Goで、サードパーティーパッケージをインストールする他の方法を紹介します。
最も一般的な方法は、go getコマンドを使用してパッケージをインストールする方法です。例えば、以下のコマンドを使用して、rsc.io/quoteパッケージをインストールできます。
go get rsc.io/quote
このコマンドを実行すると、go.modファイルとgo.sumファイルにパッケージが追加され、インストールが完了します。go.modファイルには、パッケージ名とバージョンが自動的に追加されます。
もう一つの方法は、パッケージを手動でダウンロードしてインストールする方法です。この方法では、go.modファイルとgo.sumファイルに変更を加えません。以下のコマンドを使って、rsc.io/quoteパッケージをインストールできます。
go install rsc.io/quote
以上の2つの方法のどちらを使用しても、Goのサードパーティーパッケージをインストールできます。go getコマンドを使用する場合は、go.modファイルとgo.sumファイルが自動的に更新されるため、より簡単に依存関係を管理できます。
一方で、go installコマンドを使用する場合は、go.modファイルとgo.sumファイルは更新されないため、開発環境に影響を与えない形でパッケージをインストールさせることができます。例えば、開発のコード内では使用しないようなCLIツールなどをパッケージとしてインストールする場合に便利です。
Goの世界ではこの他にも、たくさんのサードパーティーパッケージが有志によって提供されています。サードパーティーパッケージはこちらのサイトで公開されており、ドキュメントも充実しているので、気になるパッケージがある場合には是非調べて実際に使ってみてください。