7base

1-1. Goのファイル構造と`package main`の意味

2026/04/06

はじめに

Goのプログラムは、必ずファイルの先頭にpackageという宣言から始まります。 main.goの一番最初の行を見てみましょう。

package main

たったこれだけですが、ここにはGoの重要な考え方が詰まっています。 この記事では「なぜこう書くのか」を丁寧に解説します。


packageとは何か

Goのコードは必ず**パッケージ(package)**というグループに属しています。

パッケージとは、関連するコードをまとめた単位のことです。 大きな会社に「営業部」「開発部」「総務部」があるように、 Goのコードも役割ごとにパッケージに分けて管理します。

package main   // ← このファイルは「main」パッケージに属していますよ、という宣言

パッケージ名はファイルの先頭に必ず一行で書きます。 これをパッケージ宣言と呼びます。


なぜmainという名前なのか

Goでは、package mainは特別な意味を持ちます。

Goのパッケージには大きく2種類あります。

package main(実行可能なプログラム)

  • go rungo buildで直接起動できるプログラムを作るためのパッケージです。
  • 今回の日記サイトがこれにあたります。

② それ以外の名前のパッケージ(ライブラリ)

  • 他のプログラムから呼び出して使うための部品集です。
  • fmtnet/httpなどがこれにあたります。

つまり、**「このファイルがプログラムの出発点ですよ」**という印がpackage mainです。

package mainと書いたファイルには、必ずmain()という関数が必要です。 プログラムを起動すると、Goは真っ先にこのmain()関数を探して実行します。

package main  // ← 「実行可能なプログラムです」という宣言

// ...中略...

func main() {   // ← プログラムはここから始まる
    // サーバーの起動処理など
}

mainという名前は「主要な」「最初の」という意味の英語です。 Goの世界では「プログラムの入口」として、この名前が予約されています。


ファイル名のmain.goについて

ファイル名のmain.goと、ファイル内のpackage main別物です。

  • main.go ← ファイルの名前(.goはGoのファイルを表す拡張子)
  • package main ← ファイルの中身がどのパッケージに属するかの宣言

実はGoでは、ファイル名は何でも構いません。 app.goserver.goという名前でも、中にpackage mainと書いてあれば同じ意味になります。 ただし慣習として、プログラムの入口となるファイルはmain.goと命名することが多いです。


.goという拡張子

ファイル名の末尾についている.goファイルの種類を示す拡張子です。

  • .go → Goのソースコード
  • .py → Pythonのソースコード
  • .js → JavaScriptのソースコード

GoのコンパイラはこのことによりGoであると識別し、Goとして処理します。


まとめ

  • package ― このファイルがどのグループ(パッケージ)に属するかを宣言するキーワード
  • main ― 「実行可能なプログラムの入口」を意味するGoの特別なパッケージ名
  • package main ― 「このファイルはプログラムの出発点です」という宣言
  • .go ― Goのソースコードファイルであることを示す拡張子
  • func main() ― プログラム起動時に最初に呼ばれる関数。package mainとセットで必要

次の記事(1-2)では、package mainの直後に続くimportブロックを読んでいきます。 importは「他のパッケージの力を借りる」ための宣言です。

🏷️ プログラミング
#Go言語

Three Good Things

2026/04/01

久しぶりにコーヒーを飲みながら書いています。最近は急に後頭部の表面が痛くなり病院へ。処方された神経を落ち着かせる薬を飲んだら「あら不思議!他の部分も治まった!!」みたいな感じで過ごしています。コーヒーは相変わらず美味しいです。

Three Good Things 3つの良かったことを寝る前に書き出していく。

そんなことを始めてみたいので、それについて少しだけ書いておきます。

きっかけはBlueskyでフォローしている方のブログにThree Good Thingsについて書かれていたのがきっかけ。最近こういうの忘れてたかもと。

書き始めながら少し考えたんだけど、日々のちょっとした幸せって能動的なものも受動的なものも、どちらも「見よう」としていないとなかなか見えないものだよね。

で、日々生きてる中で「悲しいこと」や「苦しいこと」や「暴力的なこと」だけに目を向ける生き方と、「小さな幸せ」に目を向ける生き方、どちらをメインにして生きていきたいかってことなのかなと。

別に「ハッピー!!ヒャッハー!!今日もハッピーだぜー!!キャハーーー!!」みたいになりたいわけでもない。なにか気持ちよくなりたいわけでもない。

ただ、この世界をどう生きていくかって話なんだと思う。気楽に日々の小さい幸せを集めるのも悪くない。

そんなことを思いました。

🏷️ 日記
#ライフハック

平和なラブレター

2026/04/01

おはようございます。一昨日からカフェイン断ちというのをはじめました。頭痛があります。頭痛薬も無水カフェイン抜きです。頭痛がします。早く治ってほしいです。そんな朝です。

衆院選が終わりましたね。ちょうどいいというか、その通りだなと思うことをティくナットハンの本から見つけたので残しておきます。

大統領をマジョリティとか国民に変えて読んでもいいかもしれないです。

『微笑みを生きる』ティク・ナット・ハン 池田久代訳

国会議員へのラブレター

平和運動には、怒りや挫折、誤解がつきものです。平和運動に身を挺している人は、抗議文を書くのはうまいけれど、ラブレターを書くのは下手みたいです。国会議員や大統領に手紙を書くときは、すぐにゴミ箱に投げ捨てられるよう手紙ではなく、最後まで読んでみたくなるようなものを書くように努力しなくてはなりません。私たちが使う言葉、話し方、理解の仕方は、人を嫌な気分にするものではいけません。大統領も私たちと同じ人間なのです。

平和運動家は愛すべき言葉で平和を語って、平和への道を示すことはできないでしょうか。これを可能にするのは、平和運動に関わる人自身が「平和」でなければなりません。自分が平和でなくして、平和のために行動することはできないし、自分が微笑むことができないのに、ほかの人を微笑ませる手助けなどできようはずもありません。自分が平和でなければ、平和運動に貢献することはできないと思うのです。

私の願いは現在の平和運動はいつも怒りや憎しみに満ちていて、私が期待する役割からは程遠いものです。平和なこころを持つ人が平和のために尽力するといった新しい運動が、いまほど必要とされるときはありません。(後略)

🏷️ 日記
#読書 #仏教 #ティクナットハン