6.1 プロジェクト構成の事前知識

どのプログラミング言語を使っても、ソフトウェアのソースはファイルとディレクトリの組み合わせで作られます。言語によって用語の使い方が多少異なりますし、基盤となる考え方も異なりします。特に、パッケージやモジュールなどの一般的にも利用される用語は、プログラミング言語によってまったく異なる意味を持つことがあります。JavaScriptではファイルの単位がモジュールで、それを複数含む配布物の単位がパッケージです。Goとは逆にパッケージ⊇モジュールです。Pythonもモジュールを含むディレクトリがパッケージで、Goとは逆です。JavaはGoと同じような扱い方です。このあたりの違いを、丁寧に理解しておくことが混乱を減らすことになるでしょう。また、これまでGoの歴史の中では比較的変動が大きな要素だったこともから、時期によって説明が異なるところも現状を理解する難易度を上げている要因です。ここで整理しておきます。

プロジェクトに最適な構成を決定できるように、Goのソースコードを階層化して扱いやすくする機構、モジュールとパッケージについて説明します。詳細な利用方法はこの後で説明しますが、全体像や開発の流れをつかむことができると思います。

6.1.1 パッケージ

Goでは、すべてのソースコードが パッケージ に属します。フォルダ=パッケージです。ソースコードの先頭は必ずpackage文です。ここでパッケージ名を宣言します。

package sample

フォルダに含まれるファイルは論理的な階層とはなりません。1つのファイルall.goにすべての関数を宣言しても、a.gob.goに分けて宣言しても変わりません。b.goからa.goで宣言されている要素へ自由にアクセスできますし、逆も可能です。宣言の順序などはありません。 ...