1. バージョン情報を返す
コース一覧
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分

完成と次のステップ

作ったもの

66 レッスンで、fleama API の Go 版ができました。

プレーンテキスト

第1章 起動バナー 第2章 型を選んで商品を表す 第3章 条件付きの集計 第4章 エラーを返す関数群 第5章 検索と集計 第6章 Item 構造体への再設計 第7章 並行集計 第8章 JSON を返す API 第9章 仕様互換・差し替え・1バイナリでのデプロイ

最初に書いたのは fmt.Sprintf の1行でした。いまは、仕様書のある API を別実装で置き換えられます。

Go の8つの特徴を、もう一度

設計の時点で「Goならでは」として選んだものが、全部出てきました。

プレーンテキスト

ゼロ値 第2章 未定義が無い 暗黙変換なし 第2章 型を混ぜない for しかない 第3章 ループは1種類 複数戻り値 第4章 値と成否を一緒に返す if err != nil 第4章 失敗を必ず受け取る defer 第4章 後始末を予約する ポインタレシーバ 第6章 書き換えを効かせる ゴルーチン 第7章 go の1語で並行に

どれも「機能を足す」方向ではなく、書き方を1つに絞る方向の選択です。Go を読んでいて驚きが少ないのは、この積み重ねによります。

次に進むなら

データベースをつなぐ。 このコースの商品データは、コードの中に書いてありました。実際には DB から取ります。database/sql が標準ライブラリにあります。SQL入門とDB設計入門をやっているなら、そのまま繋がります。

Docker で配る。 1バイナリは Docker と相性が抜群です。ビルドしたバイナリだけを詰めた、数MBのイメージが作れます。他の言語では数百MBになるところです。

テストを書く。 go test が標準で入っています。このコースでは httptest を使いましたが、あれはテストの道具そのものです。書き方はもう知っています。

実務のリプレイス案件へ。 第9章でやったことが、そのまま仕事になります。「動いている API を Go で書き直す」は、求人でよく見かける形です。

最後の演習

API のバージョン情報を返すエンドポイントを作ります。ここまでで覚えたことだけで書けます。

完成したら、fleama-go は本当に完成です。

要件

  1. VersionResponse に name・version・endpoints の3つのフィールドを定義する
  2. 構造体タグでキー名を小文字にする
  3. endpoints は4つのパスを指定の順で入れる
  4. json.Marshal で変換して w.Write で書く

入出力例

callVersion() → "{"name":"fleama-go","version":"1.0.0","endpoints":["/items","/items/{id}","/stats","/version"]}"

ヒント

構造体に `Version string` と `Endpoints []string` を足し、それぞれタグを付けます

スライスは `[]string{"/items", "/items/{id}", "/stats", "/version"}` の形で書きます

キーの並び順は構造体で定義した順になります。Name・Version・Endpoints の順にしてください

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

関連レッスン

  • 自由拡張

    欲しいAPIを自分で設計して実装し、並行処理を活かした集計APIを1本作れるようになります。

  • 1バイナリでデプロイ

    go buildで作った1つのバイナリをサーバーに置き、常駐させる手順を説明できるようになります。

  • Node版と差し替える

    同じ仕様の別実装に置き換えられることを確かめ、実務のリプレイスを疑似体験します。

  • 仕様互換を仕上げる

    ステータスコードとエラー形式を仕様に揃え、互換のあるAPIとして仕上げられるようになります。

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

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

  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • 設計何をどう作るかを決める前工程
  • データベースデータを構造化して保存する仕組み
  • 標準ライブラリPythonに同梱の公式モジュール群
  • SQLデータベースを操作するための共通言語
  • Dockerアプリをコンテナで動かす仮想化ツール
  • イメージコンテナのテンプレートとなる静的データ
main.go
学習モード
エディタを読み込んでいます

メモ

完成と次のステップ

⌘S で保存