1. go run について聞いたとき
  2. go build について聞いたとき
  3. 実行ファイルについて聞いたとき
  4. 知らないコマンドのとき
コース一覧
Go入門
go buildと1バイナリ

Go入門

変数とゼロ値、Go唯一のループであるfor、複数戻り値とエラー処理、スライスとマップ、構造体とメソッド、ゴルーチンによる並行処理、net/httpによるAPI開発まで、Goの基礎を、毎レッスン実際にコードを書き、フリマアプリのAPIをGoで作りながら学びます。

1
Hello, Go
01. Goとは15分
02. 実行してみる15分
03. packageとmain15分
04. fmtで出力する15分
05. go buildと1バイナリ15分
06. つくる: 起動バナー20分
07. 第1章クイズ10分
2
変数と型
01. varで宣言する15分
02. := の短縮宣言15分
03. ゼロ値(Goならでは)15分
04. 基本の型15分
05. 暗黙変換なし15分
06. 定数とiota15分
07. つくる: 商品データ表示20分
08. 第2章クイズ10分
3
制御構文(forしかない世界)
01. Goのif15分
02. forしかない世界15分
03. forの七変化15分
04. Goのswitch15分
05. 定番: FizzBuzz15分
06. ループで集計15分
07. つくる: 商品集計20分
08. 第3章クイズ10分
4
関数とエラー処理
01. funcで関数を作る15分
02. 複数戻り値(Goならでは)15分
03. if err != nil(Goの心臓)15分
04. エラーを作る15分
05. deferで後始末15分
06. つくる: 検証つき関数群20分
07. 第4章クイズ10分
5
スライスとマップ
01. 配列15分
02. スライス15分
03. appendで育てる15分
04. rangeで走査する15分
05. マップ15分
06. カンマokイディオム15分
07. つくる: 検索と集計20分
08. 第5章クイズ10分
6
構造体とメソッド
01. 構造体15分
02. 初期化とフィールド15分
03. メソッド15分
04. ポインタレシーバ20分
05. New関数の慣習15分
06. 構造体のスライス15分
07. つくる: Itemで再設計20分
08. 第6章クイズ10分
7
ゴルーチンと並行処理のさわり
01. ゴルーチン15分
02. チャネル20分
03. 待ち合わせ20分
04. 並行の落とし穴20分
05. つくる: 並行集計20分
06. 第7章クイズ10分
8
Web API(net/http)
01. サーバーを立てる20分
02. ハンドラ関数20分
03. JSONを返す20分
04. ルーティング20分
05. 一覧API20分
06. 詳細APIと40420分
07. 出品API20分
08. つくる: API主要部完成25分
09. 第8章クイズ10分
9
総合制作
01. 仕様互換を仕上げる25分
02. Node版と差し替える25分
03. 1バイナリでデプロイ25分
04. 自由拡張25分
05. 完成と次のステップ20分

go buildと1バイナリ

go run と go build の違い

go run は翻訳と実行をまとめてやります。練習には便利ですが、動かすたびに翻訳し直しています。

go build は翻訳だけして、結果をファイルに残します。

プレーンテキスト

go build -o fleama-go main.go

fleama-go という実行ファイルができます。あとはこれを直接動かすだけです。

プレーンテキスト

./fleama-go fleama-go を起動します

2回目以降は翻訳が要りません。起動が速くなります。

1バイナリという言葉の意味

Go のすごいところは、この1ファイルに必要なものが全部入っていることです。

プレーンテキスト

Node.js サーバーに node を入れる → node_modules を置く → コードを置く Go fleama-go を置く。以上

サーバーに Go を入れる必要すらありません。実行ファイルの中に、標準ライブラリも自分のコードも翻訳済みで詰まっているからです。

これが「1バイナリ」と呼ばれる状態です。配る手間、環境を合わせる手間、バージョンがずれる事故が、まとめて消えます。第9章でこれを実際にやります。

代わりに失うもの

翻訳を先にやるということは、書き間違いを実行前に全部直さないと動かないということです。

プレーンテキスト

./main.go:8:2: declared and not used: total

「宣言したのに使っていない変数があります」という意味です。他の言語なら黙って動くところで、Go は止めます。

書いている最中は面倒に感じます。ですが止まるのは自分の手元であって、受講生や利用者の前ではありません。この順番を選んでいるのが Go です。

ファイルサイズ

全部入りなので、小さなプログラムでも実行ファイルは数 MB になります。

プレーンテキスト

main.go 200 バイト fleama-go 2.3 MB

驚く数字ですが、その代わりサーバー側に何も要りません。置いて動かすだけ、という手軽さと引き換えの大きさです。

要件

  1. "go run" を渡したら 翻訳と実行をまとめて行います を返す
  2. "go build" を渡したら 翻訳だけ行い実行ファイルを作ります を返す
  3. "./fleama-go" を渡したら 出来上がった実行ファイルを直接動かします を返す
  4. そのどれでもないときは 分かりません を返す

入出力例

buildStep("go run") → "翻訳と実行をまとめて行います" buildStep("go build") → "翻訳だけ行い実行ファイルを作ります" buildStep("./fleama-go") → "出来上がった実行ファイルを直接動かします" buildStep("go test") → "分かりません"

ヒント

`switch cmd {` で3つの `case` を並べます

`case "./fleama-go":` のように、ドットとスラッシュも文字列の一部です

どれにも当たらないときの `return "分かりません"` を最後に残してください

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/10

関連レッスン

  • つくる: 起動バナー

    第1章の知識だけでfleama-goの起動バナーを組み立て、複数行の整形出力を作れるようになります。

  • 第1章クイズ

    Goの特徴、go run、package main、fmtの使い分けについての理解を確認します。

  • varで宣言する

    varで型付きの宣言を書き、型が名前の後ろに来るGoの書き方に慣れます。

  • Goのif

    括弧の要らないifと、条件の前に文を置けるifを書けるようになります。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • 標準ライブラリPythonに同梱の公式モジュール群
  • 変数データに名前をつけて参照する仕組み
main.go
学習モード
エディタを読み込んでいます

メモ

go buildと1バイナリ

⌘S で保存