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 rungo 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: はい。以下も人気があります:

  • GoLand: JetBrains製の有料IDE(機能豊富)
  • Vim/Neovim: 軽量なテキストエディタ
  • Sublime Text: 軽量で高速

ただし、初心者には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でプログラムを実行できる
  • [ ] 「Hello, World!」が表示される
  • [ ] エラーが出たとき、行番号を確認できる
  • すべてにチェックが入れば、Day 2に進む準備ができています!

    ---

    まとめ

    今日学んだこと

  • プログラミングの基本概念
- コンピュータへの詳細な指示 - プログラミング言語の役割

  • Go言語の特徴
- シンプル、高速、安全 - Googleが開発、世界中で使用

  • 開発環境
- Goのインストール - エディタの設定 - プログラムの実行方法

  • 基本構文
- package main - import "fmt" - func main() - fmt.Println()

今日のキーワード

用語 意味
パッケージ プログラムの単位
インポート 外部機能を取り込む
関数 処理のまとまり
文字列 テキストデータ
コンパイル 機械語への変換

---

お疲れさまでした!

最初の一歩を踏み出したあなたは、すでにプログラマーです。わからないことがあれば、遠慮なく質問してください。プログラミング学習で最も大切なのは「わからないことをそのままにしないこと」です。