動くプログラムの基本!Go言語「package main」の使い方

2025年4月17日木曜日

Go言語

この記事では、Go言語の「package main」について、プログラミング初心者の方にも分かりやすく解説を進めていきます!

Go言語を学び始めて、「なんだかよく分からないけど、とりあえずpackage mainって書いている…」なんて方もいるかもしれませんね。

大丈夫!この記事を読めば、package mainが何者で、なぜプログラムを動かすために必要なのかが、きっと腑に落ちるはずです。

プログラムが動く仕組みの基本を、一緒に楽しく学んでいきましょう!
読み終わる頃には、「なるほど!」って膝を打っちゃうかも?

この記事で学べること

  • package mainの基本的な役割
  • なぜpackage mainが必要なのかという理由
  • main関数との深い関係
  • package mainを使った簡単なプログラムの作り方と動かし方
  • 他のパッケージとの違い

Go言語における`package main`とは?プログラム実行の出発点

まず、Go言語のプログラムファイルの一番最初に書かれていることが多いpackage mainですが、一体これは何なのでしょうか。

Go言語では、プログラムの部品を「パッケージ」という単位で管理します。package mainは、その中でも特別な意味を持つパッケージ名なのです。

簡単に言うと、「これは単体で実行できるプログラムですよ!」という宣言のようなもの。
Go言語のコンパイラ(プログラムをコンピューターが分かる言葉に翻訳するやつ)は、このpackage mainという記述を見つけると、「お、これは実行ファイルを作るためのプログラムだな」と認識します。

たくさんのパッケージの中から、プログラムの「出発点」となるものを示す目印、それがpackage mainの役割と考えてみてください。

なぜ`package main`が必要なの?その重要な役割

では、なぜわざわざpackage mainと書かないといけないのでしょうか?

それは、Go言語がプログラムを実行する際に、「どこから処理を始めればいいのか」を知る必要があるからです。

コンピューターくんの気持ちになってみましょう。「たくさんのGoファイルがあるけど、どれが主役(実行すべきプログラム)なんだろう?」と迷ってしまいますよね。

そこで、package mainが登場します。この宣言があることで、コンパイラは「よし、このファイルがプログラムの中心だ!ここから実行を開始しよう!」と判断できるのです。

もしpackage mainの記述がないファイルを実行しようとしても、「あれ?実行開始地点が分からないよ?」とコンパイラが困ってしまい、エラーになってしまいます。

つまり、package mainは、コンピューターに対して「このプログラムを実行してください」と伝えるための、いわば指示書の「表紙」のような役割を担っているのですね。

プログラムの入口を示す`main`関数との関係

package mainと切っても切れない関係にあるのが、main関数です。

package mainが「実行可能なプログラムですよ」という宣言であるのに対し、main関数は「具体的にここから処理を開始してください」という実行開始地点そのものを示します。

家で例えるなら、package mainが「ここは人が住む家(実行可能なプログラム)ですよ」という表札で、main関数が「ここから家に入ってくださいね」という玄関のようなイメージです。
この2つが揃って初めて、Goプログラムは実行される準備が整います。

実際のコードを見てみましょう。

package main // ← 実行可能なプログラムであることを示す宣言

import "fmt" // ← "fmt"という名前のパッケージを使う宣言

// ↓ プログラムの処理はここから始まる!
func main() {
	fmt.Println("Hello, Go World!") // ← 画面に文字を表示する命令
}

このように、package mainの中にfunc main() { ... }という形でmain関数を書くのが基本の形です。
main関数は、引数(関数に渡す値)も戻り値(関数が返す結果)もない、シンプルな形が特徴です。

`package main`を使った最初のGoプログラム作成

理屈が分かったところで、実際にpackage mainを使った簡単なプログラムを作ってみましょう!

プログラミング学習の定番、「Hello, World!」という文字を画面に表示するプログラムを作成します。

ステップ1:Goファイルの作成

まず、プログラムのコードを書くためのファイルを作成します。

お使いのテキストエディタ(メモ帳でも何でもOK!)を開いて、新しいファイルを作りましょう。

ファイル名は、main.goとするのが一般的です。Go言語のファイルは、必ず末尾が.goで終わるように名前をつけてくださいね。

ステップ2:`package main`と`main`関数の記述

作成したmain.goファイルに、以下のコードをそのままコピー&ペーストするか、手で打ち込んでみてください。

package main

import "fmt"

func main() {
	fmt.Println("Hello, Go World!")
}

コードの各行の意味は先ほど説明した通りです。

package mainで実行可能プログラムであることを宣言し、import "fmt"で画面出力機能を持つfmtパッケージを読み込み、main関数の中にfmt.Println("Hello, Go World!")という処理(画面に文字を表示)を書きます。

まずはこの基本の形を覚えるのが、Go言語学習の近道ですよ。

ステップ3:プログラムの実行方法 (`go run`)

コードが書けたら、いよいよ実行です!

※そもそもGo言語の実行環境をインストールしていない場合は、Go言語とは?記事の「Go言語のインストール方法」を参照してください。

ターミナル(WindowsならコマンドプロンプトやPowerShell、Macならターミナル.app)を開いてください。

そして、先ほど作成したmain.goファイルがあるディレクトリ(フォルダ)に移動します。(cdコマンドを使います)

移動できたら、以下のコマンドを入力してEnterキーを押しましょう。

go run main.go

どうでしょう?ターミナルに以下のように表示されたら成功です!

Hello, Go World!

go runコマンドは、Goのソースコードをコンパイルして、そのまま実行までしてくれる便利なコマンドです。

自分で書いたコードが動く瞬間は、プログラミングの醍醐味ですよね!

もし、「command not found: go」のようなエラーが出たら、Go言語の開発環境がうまく設定できていないかもしれません。インストール方法を確認してみてくださいね。

ファイルが見つからないエラーの場合は、main.goがあるディレクトリでコマンドを実行しているか確認しましょう。

`package main`と他のパッケージの違い

package mainが実行可能なプログラムを作るための特別なパッケージであることは分かりましたね。
では、import "fmt"のようにして使う、main以外のパッケージは何なのでしょうか?

これらは一般的に「ライブラリ」と呼ばれるもので、特定の機能(例えば画面表示、ファイル操作、ネットワーク通信など)を部品としてまとめたものです。
package mainが「完成品のプログラム本体」だとすると、他のパッケージは「プログラムを組み立てるための便利な部品」や「道具箱」のようなイメージです。

たくさんの便利な部品(パッケージ)が用意されているおかげで、私たちは複雑な機能をゼロから自分で作らなくても、それらを組み合わせて効率的にプログラムを開発できるのです。fmtパッケージも、画面出力という便利な機能を提供してくれる部品の一つというわけですね。

ライブラリとしてのパッケージ

これらの部品(ライブラリパッケージ)を使うときには、プログラムの最初の方でimport宣言をする必要があります。

import "パッケージ名"のように書くことで、「これからこのパッケージの機能を使いますよ」と宣言します。

そして、実際にそのパッケージの機能(例えば関数)を使うときは、パッケージ名.関数名()のように、どのパッケージのどの機能を使いたいのかを明示します。

先ほどの例で言うと、

import "fmt" // fmtパッケージを使いますよ宣言

func main() {
	fmt.Println("Hello, Go World!") // fmtパッケージのPrintln関数を使いますよ
}

このように、importしたfmtパッケージの中にあるPrintlnという関数を使っている、という関係性が分かりますね。

`package main`を書く上での注意点

package mainを使う上で、いくつか気をつけておきたい点があります。初心者のうちにつまずきやすいポイントでもあるので、頭の片隅に入れておきましょう。

  • 1つの実行可能プログラムにはpackage mainは1つだけ
    複数のファイルに分けてプログラムを書く場合でも、最終的に1つの実行ファイルを作るのであれば、package mainと宣言するファイルは1つだけです。(複数のファイルにpackage mainを書いて、それらをまとめてビルドすることは可能です)
  • package mainには必ずmain関数が必要
    「実行可能なプログラムですよ」と宣言したからには、その開始地点であるmain関数が必ず必要になります。main関数がないと、コンパイラはどこから実行を始めていいか分からずエラーを出します。
  • ファイル名はmain.goでなくても良い
    慣習的にmain.goとすることが多いですが、ファイル名はhello.goなど、別の名前でも構いません。ただ、パッケージ宣言はpackage mainである必要があります。

これらの点を意識しておくと、エラーが出たときにも原因を特定しやすくなるはずです。

【まとめ】`package main`はGo言語実行の要!

今回は、Go言語のプログラム実行における基礎となるpackage mainについて解説しました。

package mainは、単なるおまじないではなく、「これは実行できるプログラムですよ!」と宣言し、main関数という「処理の開始地点」を示すための、なくてはならない存在だということがお分かりいただけたでしょうか。

このpackage mainmain関数の仕組みを理解することが、Go言語で自分のアイデアを形にするプログラムを作るための第一歩です。

自分で書いた「Hello, World!」が動いた感動を忘れずに、次は変数を使ってみたり、条件分岐を学んでみたりと、どんどんGo言語の世界を探求していきましょう!

【関連記事】 Go言語とは?特徴・できること・将来性

このブログを検索

  • ()

自己紹介

自分の写真
リモートワークでエンジニア兼Webディレクターとして活動しています。プログラミングやAIなど、日々の業務や学びの中で得た知識や気づきをわかりやすく発信し、これからITスキルを身につけたい人にも役立つ情報をお届けします。 note → https://note.com/yurufuri X → https://x.com/mnao111

QooQ