メインコンテンツまでスキップ

Goで小さなCLIを作る

この章でできるようになること

Goを使う直前にインストールし、go rungo build の違いを体験できるようになります。

第0部では、Goは入れませんでした。 この教材では、実際に使う直前に導入し、「なぜ今必要か」を確認します。

まず知っておくこと

Goは、コンパイルして実行ファイルを作れるプログラミング言語です。

シェルスクリプトは、シェルがファイルを読みながら実行します。 Goは、ソースコードから実行ファイルを作れます。

シェルスクリプト
→ コマンド手順をまとめるのが得意

Go
→ 小さなCLIツールや配布しやすい実行ファイルを作りやすい

Go CLIの作り方

Goをインストールする

すでに入っているか確認します。

command -v go

場所が表示され、次のコマンドでバージョンが表示されるなら、インストール済みです。

go version

まだ入っていなければ、OSに合わせてインストールします。

macOSの場合:

brew install go

WSL Ubuntuの場合:

sudo apt update
sudo apt install -y golang-go

確認します。

go version

インストールでエラーが出たら、第1部で学んだように、OS、実行したコマンド、エラー文を整理してAIに相談します。 パスワードやトークンは貼りません。

Goファイルを作る

練習用リポジトリに移動します。

cd ~/vibe-practice/local-automation
mkdir -p cmd/vibe-note
go mod init example.com/vibe-local-automation

go.mod は、Goのプロジェクト設定ファイルです。 この練習用リポジトリが1つのGoプロジェクトだとGoに伝えるために作ります。 すでに go.mod already exists のように表示された場合は、作成済みなので次へ進みます。

次の内容で cmd/vibe-note/main.go を作ります。

cat > cmd/vibe-note/main.go <<'EOF'
package main

import (
"fmt"
"os"
"time"
)

func main() {
message := "local automation practice"
if len(os.Args) > 1 {
message = os.Args[1]
}

fmt.Printf("%s %s\n", time.Now().Format("2006-01-02 15:04:05"), message)
}
EOF

go runで実行する

go run ./cmd/vibe-note

引数を渡します。

go run ./cmd/vibe-note "hello from Go"

go run は、Goのコードを一時的にビルドして実行します。 開発中の確認に便利です。

go buildで実行ファイルを作る

mkdir -p bin
go build -o bin/vibe-note ./cmd/vibe-note

実行します。

./bin/vibe-note "built command"

go build は、実行ファイルを作ります。 この bin/vibe-note は、シェルスクリプトとは違い、Goのソースコードをコンパイルした結果です。

何が起きたのか

第0部では、AIエージェントを使うためにNode.jsやnpmを先に入れました。 Goは、その時点では不要だったので入れませんでした。

この章では、小さなCLIを作る目的ができたので、Goを導入しました。 インストールそのものも学習対象です。

運用者の視点

新しい言語やツールを入れるときは、次を確認します。

  • なぜ今必要か
  • どのパッケージ管理で入れるか
  • どこにインストールされるか
  • バージョン確認できるか
  • 使わなくなったらどう扱うか

最初から全部入れるのではなく、使う直前に入れると、目的と道具が結びつきます。

AIに聞いてみよう

次のGoプログラムが何をしているか説明してください。

ここに cmd/vibe-note/main.go の内容を貼る

特に、package main、import、os.Args、fmt.Printf、time.Now の意味を、
初心者向けに説明してください。
まだファイルは変更しないでください。

commitポイント

生成された実行ファイル bin/vibe-note は、練習ではcommitしなくても構いません。 まずはソースコードをcommitします。

git status
git diff
git add go.mod cmd/vibe-note/main.go
git status
git diff --staged

bin/vibe-note がcommit候補に入っていないことを確認します。 この章では、Goの設定ファイル go.mod とソースコードだけをcommitします。

問題なければcommitします。

git commit -m "Add Go note command"

実行ファイルをcommitしない場合は、後の章で .gitignore に追加します。

次へ

次は、標準入力、標準出力、終了ステータスを知ります。