Day 1: 開発環境構築とHello World - 解説
学習の目的
このDayで達成すること
Day 1を完了すると、以下ができるようになります:
- Go言語の開発環境を自力で構築できる
- 最も基本的なGoプログラムを書ける
- エラーメッセージを恐れなくなる
なぜこれが重要なのか
開発環境の構築 → 最初のプログラム → 基本構文の理解 → より複雑な処理へ
↑
あなたは今ここ
環境構築は一度だけの作業ですが、ここでつまずくと先に進めません。逆に言えば、ここを乗り越えればプログラミングの世界への扉が開きます。
---
学習の手引き
推奨学習順序
1. 背景知識を読む(20分)
↓
2. 課題ページを確認(5分)
↓
3. 環境構築に取り組む(30-60分)
↓
4. 課題を解く(60分)
↓
5. 解答と比較(15分)
↓
6. 評価基準で自己チェック(10分)
つまずいたときの対処法
| 状況 | 対処法 |
|---|---|
| インストールできない | OS名 + エラーメッセージでGoogle検索 |
| コードが動かない | エラーメッセージの行番号を確認 |
| 何をすればいいかわからない | 課題ページの「期待される出力」を確認 |
| 解答を見てもわからない | 背景知識ページを再読 |
効果的な学習のコツ
- 写経(しゃきょう)から始める
- 小さく変更して試す
- エラーを怖がらない
---
概念の深掘り
パッケージ(package)とは
Goのプログラムは「パッケージ」という単位で管理されます。
package main // このファイルはmainパッケージに属する
mainパッケージの特別な意味:
┌─────────────────────────────────────┐
│ package main │
│ = 「これは実行可能なプログラムです」 │
└─────────────────────────────────────┘
↓ 実行すると
┌─────────────────────────────────────┐
│ func main() が自動的に呼ばれる │
└─────────────────────────────────────┘
mainパッケージ以外(例:package utils)は「ライブラリ」として他のプログラムから使われます。これは後の学習で詳しく扱います。
インポート(import)の仕組み
import "fmt"
これは「fmtという道具箱を使います」という宣言です。
なぜインポートが必要なのか:
- プログラムを軽量に保つため
- 使う機能だけを読み込む
- 名前の衝突を防ぐ
fmtパッケージとは:
fmt = Format(フォーマット)
↓
文字列の整形と入出力を担当
↓
Println, Printf, Scanなどの関数を提供
main関数の役割
func main() {
// ここがプログラムの開始点
}
プログラム実行の流れ:
$ go run main.go
↓
Goがファイルを読み込む
↓
package mainを確認
↓
func main()を探す
↓
main()の中身を上から順に実行
↓
main()の最後まで到達したら終了
---
重要なポイントの整理
1. Goの構文ルール
| ルール | 説明 | 例 |
|---|---|---|
| 波かっこの位置 | 開き波かっこは同じ行 | `func main() {` |
| セミコロン | 基本的に不要 | `fmt.Println("Hello")` |
| 大文字小文字 | 厳密に区別 | `Println` ≠ `println` |
| インデント | タブまたは4スペース | 統一することが重要 |
2. 公開と非公開
Goでは、名前の最初の文字が大文字か小文字かで、外部からアクセスできるかどうかが決まります。
fmt.Println // P が大文字 → 外部からアクセス可能(公開)
fmt.println // p が小文字 → 存在しない(非公開なら使えない)
これは「エクスポート」と呼ばれる重要な概念です。
3. 文字列の種類
| 種類 | 記号 | 用途 |
|---|---|---|
| 通常の文字列 | `"..."` | 1行の文字列 |
| Raw文字列 | `` `...` `` | 複数行、エスケープ不要 |
// 通常の文字列
"Hello\nWorld" // \n は改行として解釈される
// Raw文字列
`Hello
World` // 改行がそのまま保持される
---
よくある質問(FAQ)
Q1: なぜ go run と go build があるのですか?
A: 目的が違います。
go run main.go # コンパイル&即実行(開発中に便利)
go build main.go # コンパイルして実行ファイルを生成(配布用)
開発中はgo runを使い、完成したらgo buildで実行ファイルを作ります。
Q2: エラーが英語で読めません
A: 主要なエラーメッセージを覚えましょう。
| 英語 | 意味 |
|---|---|
| `undefined` | 定義されていない |
| `syntax error` | 文法エラー |
| `unexpected` | 予期しない(何かがおかしい) |
| `expected` | 期待される(何かが足りない) |
Q3: VS Code以外のエディタでも大丈夫ですか?
A: はい。以下も人気があります:
ただし、初心者にはVS Codeが最もおすすめです。
Q4: Goのバージョンは最新でなくても大丈夫ですか?
A: Go 1.18以降であれば問題ありません。後方互換性が保証されています。
---
明日への準備
Day 2のテーマ
「変数と型」を学びます。
変数とは:
- 値を保存する「箱」のようなもの
- 名前をつけて後から参照できる
予習コード:
package main
import "fmt"
func main() {
name := "太郎" // ← これが変数
fmt.Println(name)
name = "花子" // ← 値を変更
fmt.Println(name)
}
このコードを実行して、何が起きるか観察しておいてください。
確認チェックリスト
Day 1を終える前に、以下を確認してください:
go versionでバージョンが表示されるmain.goファイルを作成できるgo run main.goでプログラムを実行できるすべてにチェックが入れば、Day 2に進む準備ができています!
---
まとめ
今日学んだこと
- Go言語の特徴
- 開発環境
- 基本構文
package main
- import "fmt"
- func main()
- fmt.Println()今日のキーワード
| 用語 | 意味 |
|---|---|
| パッケージ | プログラムの単位 |
| インポート | 外部機能を取り込む |
| 関数 | 処理のまとまり |
| 文字列 | テキストデータ |
| コンパイル | 機械語への変換 |
---
お疲れさまでした!
最初の一歩を踏み出したあなたは、すでにプログラマーです。わからないことがあれば、遠慮なく質問してください。プログラミング学習で最も大切なのは「わからないことをそのままにしないこと」です。