
93
8
パッケージの名前空間(
NAMESPACE
ファイルに定義されているもの)は、パッケージを作成す
る上で最も混乱しやすい部分の
1
つです。名前空間は高度かつ幅広いテーマですが、自分だけが
使うパッケージを開発する場合にはそれほど重要な内容ではありません。しかし、パッケージを
CRAN
に投稿する場合には、名前空間についてしっかりと理解しておくことが重要になります。
なぜなら
CRAN
では、他のパッケージとうまく共存することが要求されるからです。
名前空間を使い始めてすぐは、苦労の割にあまり得られるものがないように感じるかもしれませ
ん。しかし、よく設計された名前空間は、パッケージをうまくカプセル化するとともに、パッケー
ジの自己完結性を向上させることができます。自己完結性の高いパッケージは、他のパッケージが
自分のパッケージのコードに干渉しないことと、逆に自分のパッケージが他のパッケージのコード
に干渉しないこと、そして開発したパッケージが実行環境に依存せずに機能することを保証するこ
とができます。
8.1
その名の通り、名前空間は「名前」のための「空間」を定義します。名前空間は、名前に紐付け
られたオブジェクトの値を調べるためのコンテキストを提供します。
おそらく、知らないうちに名前空間を使ったことがあると思います。例えば、
::
演算子を使っ
たことはないでしょうか。この演算子は、同じ名前を持つ複数の関数があるときに、どれを呼び出
せばよいかを明示的に指定することができます。例えば、
plyr ...