1. シンプルさについて聞いたとき
  2. 並行処理について聞いたとき
  3. 1バイナリについて聞いたとき
  4. 知らない言葉のとき
  5. 空文字のとき
コース一覧
Go入門
Goとは

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とは

少ない部品で、速くて落ちないものを作る

Go は 2009 年に Google が公開した言語です。作った人たちが解こうとした問題ははっきりしていました。大きなプログラムを、大人数で、長く保守するという問題です。

そのために選ばれた答えが、機能を増やすことではなく 減らすことでした。他の言語にある継承もありません。例外もありません。ループは for の1種類だけです。

覚えることが少ないので、書いた人が違ってもコードが似た形になります。半年後に読んでも、他人が読んでも、驚きが少ない。これが「大人数で長く保守する」への答えです。

このコースで作るもの

フリマアプリ fleama の API を、Go で作り直します。

プレーンテキスト

第1章 起動バナーを出す 第3章 商品を集計する 第6章 Item という型に再設計する 第8章 JSON を返す API になる 第9章 1つのバイナリにしてサーバーに置く

実務でよくあるのが、この「動いている API を Go で書き直す」仕事です。速度とサーバー費用が理由になることが多く、求人でもよく見かけます。このコースは、それをそのまま小さく体験する形になっています。

Go が選ばれる3つの理由

1つ目はシンプルさです。 文法が小さいので、読むのが速くなります。

2つ目は並行処理です。 go と1語書くだけで、処理を同時に走らせられます。たくさんのリクエストを同時に捌くサーバーと相性がよく、第7章で実際に書きます。

3つ目は1バイナリです。 Go は書いたコードを1つの実行ファイルにまとめます。サーバーに Go を入れる必要すらなく、そのファイルを置くだけで動きます。

プレーンテキスト

Node.js node本体 + node_modules(何万ファイル) + 自分のコード Go fleama-go というファイル 1 つ

配る手間が段違いです。第9章で実際に体験します。

最初のコード

このコースは全レッスンでコードを書きます。まずは Go の関数がどう見えるかだけ眺めてください。

Go

func describeGo(topic string) string { if topic == "binary" { return "1つの実行ファイルにまとまります" } return "分かりません" }

目に付くのは、型が名前の後ろに来ることです。string topic ではなく topic string。戻り値の型も、引数の後ろに書きます。最初は落ち着かない並びですが、すぐ慣れます。

要件

  1. "simple" を渡したら 覚えることが少なく、読むのが速くなります を返す
  2. "concurrent" を渡したら goと書くだけで処理を同時に走らせられます を返す
  3. "binary" を渡したら 1つの実行ファイルにまとまります を返す
  4. そのどれでもないときは 分かりません を返す

入出力例

describeGo("simple") → "覚えることが少なく、読むのが速くなります" describeGo("concurrent") → "goと書くだけで処理を同時に走らせられます" describeGo("binary") → "1つの実行ファイルにまとまります" describeGo("generics") → "分かりません" describeGo("") → "分かりません"

ヒント

`if` に丸括弧は要りません。`if topic == "simple" {` と書きます

条件を3つ並べます。当てはまったらその場で `return` すれば、下の行は実行されません

最後の `return "分かりません"` は消さずに残してください。どれにも当てはまらないときの答えです

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

関連レッスン

  • 実行してみる

    go runでプログラムを動かし、fleama-goの最初の1行を出力できるようになります。

  • packageとmain

    package mainとfunc mainがプログラムの起点である理由を説明できるようになります。

  • fmtで出力する

    PrintlnとPrintfを使い分けて、商品名と価格を整形して表示できるようになります。

  • go buildと1バイナリ

    コンパイルして1つの実行ファイルになる意味を知り、Goの配布の楽さを説明できるようになります。

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

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

  • 継承親クラスの機能を子クラスへ引き継ぐ仕組み
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • 処理計算や代入を表す長方形
  • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
  • 関数処理に名前を付けて再利用できる単位
main.go
学習モード
エディタを読み込んでいます

メモ

Goとは

⌘S で保存