【ぱすのせいきか】
パスの正規化 とは?
最終更新:
💡 ファイルへの道順を、決まった書き方に整える
ファイルパスの区切りや「.」「..」などを、OSやAPIの規則に従って整理する処理。表記を整えるだけでは、ファイルの存在やアクセスの許可までは確認できません。
📌 このページのポイント
ペンギン先生、ファイルの道順を整理するってどういうこと?
具体的にはどんなふうに変わるの?
Node.jsのpath.posix.normalizeを例にすると、docs//draft/.././a.txt は docs/a.txt になるよ。連続する区切りをまとめ、今の場所を表す . を取り除き、draft と親へ戻る .. を整理する。階層を1つ進んで1つ戻るので、差し引き0段だね。
それなら、整理したら絶対パスになるの?
表記を整理すれば、読んでもよいファイルになるの?
同じ場所を指すなら、どのパスも短くしてよさそうなのに…。
文字だけの整理ではシンボリックリンクの行き先をたどらないよ。途中にリンクがあれば、.. を機械的に消すことで実際の解釈が変わる場合もあるんだ。道順を整える比喩は便利だけど、実ファイルの確認まで終わったと思わないようにしようね。
もっと詳しく知りたい人へ
実際に存在するファイルのリンク先まで調べたいときは?
パス文字列だけの整理とは別に、実ファイルを参照するAPIを使います。Node.jsのfs.realpathは、ドット要素に加えてシンボリックリンクを解決し、存在しないパスにはENOENTエラーを返します。ただしハードリンクなどで同じ実体に複数の名前が付くため、結果が実体ごとに唯一の文字列になるとは限りません。これもアクセス許可の判定を代わりに行う機能ではありません。
まとめ:ざっくりこれだけ覚えればOK!
「パスの正規化」って出てきたら「ファイルへの道順の表記を、決めた規則で整える処理」と思えばだいたいOK!
📖 おまけ:英語の意味
「Path Normalization」 = 経路表記の正規化
💬 pathは経路、normalizationは一定の形に整えること。ここで扱うのはファイルパスだよ