この記事では、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 main
とmain
関数の仕組みを理解することが、Go言語で自分のアイデアを形にするプログラムを作るための第一歩です。
自分で書いた「Hello, World!」が動いた感動を忘れずに、次は変数を使ってみたり、条件分岐を学んでみたりと、どんどんGo言語の世界を探求していきましょう!
【関連記事】 Go言語とは?特徴・できること・将来性
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。