PATH PATH PATH!!
プログラム環境を整えていると、PATH って言葉がたくさん出てきます。多くの場合、「おまじない」 とか 「最初の準備だけ」 とか割と適当に流されます。今はやりのプログラミング学習サイトでは、そもそも環境構築の手順すら教えません。そうすると、自分の開発環境を整えようとした瞬間、PATH?なにそれ食べられるの? となるわけです。
おまじないも、最初の準備も1つだけなら確かにそうです。 でも、普通に開発やっていれば導入する開発環境も1つではなく、対象となる環境も自分のPCだけとは限りません。
そんな時、概念とか基本的な考え方を知っているのと知らないのとでは雲泥の差です。また、自分で書くプログラムでも応用が利くかもしれません。この記事はPATH? 食べられる?何それ? な初めての人に、概念を伝えるものです。 また、説明のしやすさを優先するので、必ずしも厳密ではありません。
コンピュータって、普通に思うより。 頭良くありません
- 自分で「何をすればいいか」を考えることはできない。
- 自分で「何かを探すこと」はできない。
ほんと。頑固で融通の利かない、子供みたいな存在です。なにがどこにあって、 「ほらここにおいてやったよ。これを使ってね」 と教える必要があります。
コンピュータは融通が利かない
ほんと、コンピュータって融通効かないですよね。自分のやるべきことを教えてもらっても。「やらせること、ものは一つに絞ってね。2つとか嫌だからね!!」 ということが要求されます。まるで 「プレゼント。ほかの友達とかぶったら、殺すからね」 と強要する彼女の様です。いやこういう人とはお別れしたいですが。。コンピュータとお別れしてはいけません。我慢強くわがままを聞いてあげる必要があります。なにせ相手は子供です。
部屋を分けないとね
同じものを一つの部屋に入れられないときどうするか? 部屋を分けて別々に保管します。コンピュータの世界でこういう「部屋を分けて名前がかぶらないようにするよ!!」という場合、「部屋」にあたる考え方を 「名前空間」 と呼んでいます。
ある学校に「木村」さんは3名います。この時それぞれの木村さんを区別して呼ぶにはどうすればいいでしょうか?
- 荒川 : この前、木村さんがさぁ
- 伊藤 :あぁ、知ってる知ってる。書道で賞もらったんだよね?
- 宇佐美:え??違うよ、音楽コンクールで予選通ったんだよね?
- 荒川 :え?何言ってるの? 給食の時に転んじゃったんだよ
想定される「木村」さんが3人いるので、誰の事だかわからないのです。名前異空間の活躍の場所はこんな時です。 本名つければいいんですが。 そこはおいておいて おそらくこんな感じになります。
- 荒川 :この前、3組の木村さんがさぁ
- 伊藤 :知ってる知ってる。ころんじゃったんだよね
- 宇佐美:え?いつ?
- 荒川 :給食の時だよ
お、なんとなくスムーズです。この場合、同じ「木村」さんを 「3組」という「名前空間」 を用いて区別しているわけです。こういうの、コンピュータの世界ではよくあります。
名前空間の例
No. | 使いどころ、言語 | 名前空間 | 目的 |
---|---|---|---|
1. | WEB派生技術 | URI | リソースをユニークに特定するという意味で、名前空間として利用される |
3. | Java | パッケージ | 同一のクラス名、インターフェース名の存在を許容する。 |
4. | Java | クラスローダ | javaのクラス定義は、厳密にはFQDNレベルで同一のオブジェクトを同一の処理系に保持できます。これは、クラスローダが「名前空間」としてユーザの見えないところで働いているからです。 |
5. | XML | namespace(xmlns) | 少しずつ機能の違うタグを定義する。 |
6. | K8s | namespace | クラスタ内部のオブジェクトそのものの名前重複を避ける。 |
昔のものからイマドキのものまで、実に広い範囲で利用されています。そのほか、アイデアはいろいろなところで利用されているので気付いたら、考察してみてください。
(肝心要のPATHはここでは触れません。)
みんながよく知ってる「名前空間」
ここまでの話をまとめると。
- 名前空間は「同じ名前」を区別して管理するために導入する
- 同一名前空間の中では、「同じ名前のもの」は存在することができない。(ユニークに区別できないので)
あれ?これ、Windowsの「フォルダ」とかUNIX/Linux/Macの「ディレクトリ」にあてはまりませんか?
その通り。そもそもファイルの名前空間を分割するための仕掛けがフォルダだったり、ディレクトリです。 コンピュータリソース的な背景とかいろいろあるんですが。そこはまぁ目をこぼしておきましょう。
長くなったので、この記事はここまで、次回は本格的にPATHの話に移ります。
まとめ
この記事の話をまとめます。
- コンピュータは融通が利かない
- コンピュータの操作の対象、やることは常に一つ!!「真〇は常に一つ!!」
- 名前空間は超便利
- ディレクトリ、フォルダも名前空間の側面をもつ