はじめに (対象読者・この記事でわかること)
この記事は、Go言語の入門者で、公式チュートリアルや入門書の「クイックチェック3‑6」まで進めたものの、実行時に Launch Failed エラーが出てしまい、先に進めなくなっている方を対象としています。Goの開発環境構築やデバッグ設定に不安がある方でも、この記事を読むことでエラーの根本原因を特定し、具体的な対処手順を実装できるようになります。実際に手を動かしながら確認できるサンプルコードと、よくある落とし穴の解説を交えて、すぐに動作確認が取れる状態に持っていくことが目的です。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。
- Go言語の基本的な文法と go run の使い方
- Visual Studio Code(以下 VS Code)の基本操作と拡張機能(特に Go 拡張)
- ターミナルでのコマンド操作(git、go、dlv など)
クイックチェック3‑6で起きる「Launch Failed」の概要と背景
「クイックチェック3‑6」は、Go の入門書で「Hello, World」プログラムをデバッグモードで実行する練習です。この段階で Launch Failed が出るケースは、開発環境の設定ミスやプロジェクト構成の不備が原因であることが多いです。特に以下の点が問題になりやすいです。
go.modのモジュールパスが正しく設定されていない
- 例:module example.com/quickcheckと書かれているが、実際のフォルダ構成が~/go/src/example.com/quickcheckでない。- VS Code のデバッグ構成 (
launch.json) が不適切
-programフィールドが相対パスで間違っている、もしくはmodeがautoで検知できない。 mainパッケージが正しく宣言されていない
-package mainが漏れていたり、func main()が無いと Go ランタイムがエントリーポイントを見つけられず終了する。- 依存ライブラリが未取得
-go mod tidyが実行されていない場合、外部パッケージが解決できずにビルドが失敗する。
本稿では、これらの典型的な原因を順に検証し、確実に起動できる状態 に持っていく手順を示します。
具体的な手順と実装方法
ステップ1 プロジェクトディレクトリの整理と go.mod の確認
- 作業ディレクトリを作成し、そこに
main.goとgo.modを置く。以下は推奨ディレクトリ構成です。
~/go-workspace/
└─ quickcheck3-6/
├─ go.mod
└─ main.go
go.modを正しいモジュール名で初期化する。ターミナルで次のコマンドを実行:
Bashcd ~/go-workspace/quickcheck3-6 go mod init quickcheck3-6 go mod tidy # 必要な依存関係を自動で取得
ポイント:モジュール名は相対パスでも絶対パスでも構いませんが、
launch.jsonのprogramパスと一致させる必要があります。
ステップ2 VS Code のデバッグ設定 (launch.json) を正しく記述
- 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": [] } ] }
programフィールドは プロジェクトルート(main.goが直接置かれているフォルダ)を指すように${workspaceFolder}とします。相対パスで./main.goと書くと、VS Code が実行ファイルを正しく判断できないケースがあるため注意が必要です。
ステップ3 main.go の内容確認とビルドテスト
main.go のサンプルコードは次の通りです。package main と func main() が必ず存在することを確認してください。
Gopackage main import "fmt" func main() { fmt.Println("Hello, Go Quick Check 3-6!") }
ターミナルで手動ビルド・実行して、エラーが出ないか確認します。
Bashgo run . # => Hello, Go Quick Check 3-6!
ここでエラーが出た場合は、コンソールに表示されるメッセージを元に次の項目をチェックします。
ハマった点やエラー解決
| 現象 | 原因例 | 解決策 |
|---|---|---|
cannot find module providing package … |
go.mod が未作成、または go mod tidy 未実行 |
go mod init → go mod tidy を実行 |
cannot load package: package .: no Go Files in … |
launch.json の program が間違っている |
program を ${workspaceFolder} に修正 |
undefined: main |
main.go の package が main ではない |
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.json の program が ./main.go になっているが、Delve はディレクトリ単位でビルドする必要がある。
解決策:
Json"program": "${workspaceFolder}"
に書き換えるだけで、エラーは解消します。
解決策まとめ
- プロジェクトルートで
go.modを正しく初期化し、go mod tidyで依存解決。 - VS Code の
launch.jsonではprogramを${workspaceFolder}に設定。 main.goがpackage mainとfunc main()を必ず含む状態か確認。- Delve がインストールされていない場合は
go installで最新版を入手。 - すべての設定が正しいことを確認したら、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)への応用についても取り上げる予定です。
参考資料
- Go公式ドキュメント – Modules
- VS Code – Go extension documentation
- Delve – The Go debugger
- 「Go言語プログラミング実践入門」 第3章 クイックチェック(出版社名、出版年)
