Go言語のコマンド実行、特にプログラムのビルドと実行方法について、プログラミングの世界に足を踏み入れたばかりで「どうやるの?」と首をかしげている人もいるかもしれませんね。
Go言語には、書いたコードを動かすための便利なコマンド、`go build` と `go run` が用意されています。
この記事では、Go言語の基本操作である `go build` (ビルド) と `go run` (実行) の使い方、それぞれの違い、そしてどんな時にどちらを使えばいいのかを、分かりやすく解説していきます。
この記事で学べること
- Go言語のビルドと実行の基本的な考え方
- `go build` コマンドの使い方と実行ファイルの作成方法
- `go run` コマンドの使い方とソースコードの直接実行方法
- `go build` と `go run` の明確な違い
- 状況に応じたコマンドの使い分け方
- コマンド実行時のちょっとした注意点
Go言語のビルドと実行コマンドとは?開発の第一歩を踏み出そう
まず、なぜ「ビルド」や「実行」といった作業が必要なのか、簡単に触れておきましょう。
私たちが書くGo言語のソースコードは、人間にとっては読みやすいものですが、コンピューターが直接理解して動かすことはできません。
コンピューターが理解できる言葉(機械語)に翻訳してあげる必要があるんです。料理で例えるなら、レシピ(ソースコード)を元に、実際に食べられる料理(実行可能ファイル)を作るイメージですね。
Go言語には、その翻訳作業(ビルド)や、翻訳しつつ直接実行する作業(実行)を行うためのコマンドが標準で付いてきます。それが `go build` と `go run` なんです。
プログラムを書いたら、次は動かす番。これらのコマンドを使いこなすことが、Go言語での開発を進める上での基本中の基本となります。しっかり使い方をマスターしていきましょう!
Go言語のビルドコマンド `go build` の使い方を理解する
`go build` コマンドは、Go言語のソースコード(`.go` ファイル)をコンピューターが直接実行できる形式のファイル(実行可能ファイル)に変換(ビルド)するためのコマンドです。
ビルドによって作られた実行可能ファイルは、Go言語がインストールされていない環境でも動かすことができる場合があります(環境依存の機能を使っていない場合)。
完成したプログラムを誰かに渡したり、サーバーで動かしたりする際には、`go build` を使って実行可能ファイルを作成するのが一般的です。まさに、レシピから料理を完成させるプロセスですね!
`go build` の基本的な書き方(コマンド構文)
`go build` の使い方はとてもシンプルです。
ターミナル(WindowsならコマンドプロンプトやPowerShell、macOSならターミナル.app)を開いて、ビルドしたいGoファイルがあるディレクトリ(フォルダ)に移動してから、以下のコマンドを実行します。
特定のGoファイルをビルドする場合
go build ファイル名.go
例えば、`main.go` というファイルをビルドしたい場合は `go build main.go` と入力します。
カレントディレクトリにあるmainパッケージ全体をビルドする場合
go build
特別なファイル名を指定せず `go build` だけを実行すると、今いるディレクトリにあるmainパッケージ(通常は `main.go` を含むパッケージ)を探してビルドしてくれます。
`go build` の実行例(サンプルコードと実行結果)
それでは、実際に簡単なプログラムをビルドしてみましょう。
まず、`Hello, World!` と表示するだけの簡単なGoプログラムを作成します。好きなテキストエディタで以下の内容を `main.go` という名前で保存してください。
ソースコード (main.go)
package main import "fmt" func main() { fmt.Println("Hello, World!") }
次に、ターミナルを開き、`main.go` を保存したディレクトリに移動します (`cd` コマンドを使います)。
そして、以下のコマンドを実行してみましょう。
ビルドコマンドの実行
go build main.go
コマンドを実行しても、ターミナルには何も表示されないかもしれませんが、それで正常です。
ファイルが作られたか確認してみましょう。ディレクトリ内のファイル一覧を表示するコマンド(macOS/Linuxなら `ls`、Windowsなら `dir`)を実行すると...
ファイル一覧の確認 (macOS/Linux の例):
ls main main.go # <-- 'main' というファイルが増えている!
ファイル一覧の確認 (Windows の例):
dir ... main.exe # <-- 'main.exe' というファイルが増えている! main.go ...
このように、`main` (macOS/Linux) または `main.exe` (Windows) という名前の新しいファイル(実行可能ファイル)が作られているはずです!
最後に、作られた実行可能ファイルを実行してみましょう。
実行可能ファイルの実行 (macOS/Linux):
./main
実行可能ファイルの実行 (Windows):
.\main.exe
実行結果:
Hello, World!
ちゃんと "Hello, World!" と表示されましたね!
`go build` はソースコードから実行可能な料理をしっかり作り上げてくれる、頼もしいコマンドです。
Go言語の実行コマンド `go run` の使い方を理解する
一方、`go run` コマンドは、ソースコードをビルドして、そのまま実行までを一気に行うコマンドです。
`go build` と違って、通常は実行可能ファイルを目に見える形では残しません(内部的には一時的にビルドしています)。
「ちょっとコードを書いて、すぐに動作を確認したい!」という時に非常に便利です。料理で例えるなら、味見のためにちょっとだけ火を通してみる、みたいな手軽さがあります。
`go run` の基本的な書き方(コマンド構文)
`go run` の使い方も簡単です。
実行したいGoファイル名を指定して、ターミナルでコマンドを実行します。
特定のGoファイルを指定して実行する場合:
go run ファイル名.go
例えば、`main.go` を実行したい場合は `go run main.go` と入力します。
`go build` と違い、基本的には実行したいファイル名を指定する必要があります。
`go run` の実行例(サンプルコードと実行結果)
先ほど `go build` で使った `main.go` を、今度は `go run` で実行してみましょう。
`main.go` があるディレクトリで、以下のコマンドを実行します。
実行コマンドの実行:
go run main.go
実行結果:
Hello, World!
どうでしょう? `go build` の時のように実行可能ファイルを作るステップなしに、コマンドを実行したらすぐに結果が表示されましたね。
ファイル一覧を確認しても、`main.go` 以外に新しい実行可能ファイルは作られていないはずです。
このように、`go run` はコードの動作をサッと確認したい時にとても役立ちます。
`go build` と `go run` の違いと比較!どっちを使うべき?
ここまでで、`go build` と `go run` のそれぞれの使い方を見てきました。
ここで、改めて両者の違いと、どんな時にどちらを使うべきかを整理しておきましょう。これを理解すれば、より効率的にGo言語の開発を進められます。
比較ポイント1:ビルド成果物(実行ファイル)の有無
一番大きな違いは、やはり実行可能ファイルが残るかどうかです。
- `go build`: 実行可能ファイルを作成して残します。
- `go run`: 実行可能ファイルを(通常は)残しません。
比較ポイント2:実行までのステップと手軽さ
プログラムを実行するまでの手間も異なります。
- `go build`: ビルド (`go build`) → 実行 (`./main` など) の2ステップが必要です。
- `go run`: `go run main.go` の1ステップで実行まで完了します。
Go言語コマンド実行時の注意点とTips
`go build` や `go run` を使う上で、初心者がつまづきやすい点や、知っておくと少し便利なことを紹介します。
ファイル名のタイプミス
カレントディレクトリの確認
`main` パッケージと `main` 関数
出力ファイル名の指定 (build)
複数ファイルの場合 (run)
【まとめ】Go言語のビルドと実行コマンドを使いこなそう!
今回は、Go言語の基本的なコマンド操作である `go build` と `go run` について解説しました。
要点をまとめると、以下のようになります。
- `go build`: ソースコードから実行可能ファイルを作成するコマンド。プログラムの完成版を作ったり、配布したりする時に使う。
- `go run`: ソースコードを直接コンパイルして実行するコマンド。実行ファイルは残らない。開発中の素早い動作確認に便利。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。