はじめに (対象読者・この記事でわかること)

この記事は、Go言語の入門者で、公式チュートリアルや入門書の「クイックチェック3‑6」まで進めたものの、実行時に Launch Failed エラーが出てしまい、先に進めなくなっている方を対象としています。Goの開発環境構築やデバッグ設定に不安がある方でも、この記事を読むことでエラーの根本原因を特定し、具体的な対処手順を実装できるようになります。実際に手を動かしながら確認できるサンプルコードと、よくある落とし穴の解説を交えて、すぐに動作確認が取れる状態に持っていくことが目的です。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。
- Go言語の基本的な文法と go run の使い方
- Visual Studio Code(以下 VS Code)の基本操作と拡張機能(特に Go 拡張)
- ターミナルでのコマンド操作(gitgodlv など)

クイックチェック3‑6で起きる「Launch Failed」の概要と背景

「クイックチェック3‑6」は、Go の入門書で「Hello, World」プログラムをデバッグモードで実行する練習です。この段階で Launch Failed が出るケースは、開発環境の設定ミスやプロジェクト構成の不備が原因であることが多いです。特に以下の点が問題になりやすいです。

  1. go.mod のモジュールパスが正しく設定されていない
    - 例: module example.com/quickcheck と書かれているが、実際のフォルダ構成が ~/go/src/example.com/quickcheck でない。
  2. VS Code のデバッグ構成 (launch.json) が不適切
    - program フィールドが相対パスで間違っている、もしくは modeauto で検知できない。
  3. main パッケージが正しく宣言されていない
    - package main が漏れていたり、func main() が無いと Go ランタイムがエントリーポイントを見つけられず終了する。
  4. 依存ライブラリが未取得
    - go mod tidy が実行されていない場合、外部パッケージが解決できずにビルドが失敗する。

本稿では、これらの典型的な原因を順に検証し、確実に起動できる状態 に持っていく手順を示します。

具体的な手順と実装方法

ステップ1 プロジェクトディレクトリの整理と go.mod の確認

  1. 作業ディレクトリを作成し、そこに main.gogo.mod を置く。以下は推奨ディレクトリ構成です。
~/go-workspace/
└─ quickcheck3-6/
   ├─ go.mod
   └─ main.go
  1. go.mod を正しいモジュール名で初期化する。ターミナルで次のコマンドを実行:
Bash
cd ~/go-workspace/quickcheck3-6 go mod init quickcheck3-6 go mod tidy # 必要な依存関係を自動で取得

ポイント:モジュール名は相対パスでも絶対パスでも構いませんが、launch.jsonprogram パスと一致させる必要があります。

ステップ2 VS Code のデバッグ設定 (launch.json) を正しく記述

  1. VS Code のコマンドパレット(Ctrl+Shift+P)で Debug: Open launch.json を選択し、次のように設定します。
Json
{ "version": "0.2.0", "configurations": [ { "name": "Launch Go Program", "type": "go", "request": "launch", "mode": "auto", "program": "${workspaceFolder}", "env": {}, "args": [] } ] }
  1. program フィールドは プロジェクトルートmain.go が直接置かれているフォルダ)を指すように ${workspaceFolder} とします。相対パスで ./main.go と書くと、VS Code が実行ファイルを正しく判断できないケースがあるため注意が必要です。

ステップ3 main.go の内容確認とビルドテスト

main.go のサンプルコードは次の通りです。package mainfunc main() が必ず存在することを確認してください。

Go
package main import "fmt" func main() { fmt.Println("Hello, Go Quick Check 3-6!") }

ターミナルで手動ビルド・実行して、エラーが出ないか確認します。

Bash
go run . # => Hello, Go Quick Check 3-6!

ここでエラーが出た場合は、コンソールに表示されるメッセージを元に次の項目をチェックします。

ハマった点やエラー解決

現象 原因例 解決策
cannot find module providing package … go.mod が未作成、または go mod tidy 未実行 go mod initgo mod tidy を実行
cannot load package: package .: no Go Files in … launch.jsonprogram が間違っている program${workspaceFolder} に修正
undefined: main main.gopackagemain ではない package main に変更
debugger: could not launch process VS Code の Go 拡張が古い、または Delve がインストールされていない go install github.com/go-delve/delve/cmd/dlv@latest で Delve をインストールし、拡張を最新版に更新

具体的なエラーログ例と対処

エラーログ

Failed to launch program: could not find main package in /home/user/go-workspace/quickcheck3-6

原因launch.jsonprogram./main.go になっているが、Delve はディレクトリ単位でビルドする必要がある。

解決策

Json
"program": "${workspaceFolder}"

に書き換えるだけで、エラーは解消します。

解決策まとめ

  1. プロジェクトルートで go.mod を正しく初期化し、go mod tidy で依存解決。
  2. VS Code の launch.json では program${workspaceFolder} に設定。
  3. main.gopackage mainfunc main() を必ず含む状態か確認。
  4. Delve がインストールされていない場合は go install で最新版を入手。
  5. すべての設定が正しいことを確認したら、VS Code のデバッグパネルから Launch Go Program を実行し、正常にコンソールに Hello, Go Quick Check 3-6! が出ることを確認。

まとめ

本記事では、Go 入門書のクイックチェック3‑6で頻発する Launch Failed エラーの原因を体系的に整理し、プロジェクト構成の見直し、go.mod の正しい設定、VS Code のデバッグ構成のポイント、そして実際のエラーログに基づく対処法を具体的に解説しました。

  • プロジェクトのディレクトリと go.mod を正しく作成
  • VS Code の launch.json${workspaceFolder} に統一
  • main.go の構文とエントリーポイントを確認

これらを実践すれば、入門段階でつまずきがちな実行エラーを解消し、スムーズに次の学習ステップへ進むことができます。今後は、より高度なデバッグテクニックやテスト駆動開発(TDD)への応用についても取り上げる予定です。

参考資料