今更ながらファイルやディレクトリ, ファイルパスって何だろう？

# 記事について
今更ながらなのですが、
私は、今までなんとなくファイルパスなるものをなんとなくの認識で使用していました。

それも今では、調べれば答えが書いてあるのでそれをコピペして使用すれば簡単に使用できるからです。
あと、初歩的なところ過ぎて教わる機会もあまりありません。

ということで、キタミ式イラストIT塾基本情報を参考に初心者にもわかりやすく解説をしてみたいと思います。

とりあえず項目的には、

・**ファイルとは？**

・**ディレクトリとは？**

・**ディレクトリ構造とは？**

・**ファイルパスとは？**

で書いていきたいと思います。

# そもそもファイルパスの「ファイル」とは？
もはやご存知だと思われますが、
PCは様々なアプリケーションソフトを使用してデータを処理します。
作成されたデータは再度利用する際に備えてアプリケーション独自の形式でファイルとしてハードディスクやSSDなどに記録します。

```例.
Excel -> 作成ファイル名.xlsx
Word -> 作成ファイル名.doc
メモ帳 -> 作成ファイル名.txt
エディタ -> 作成ファイル名.html
などなどです。
```

要は、**ファイルはデータを一つの集まりとして記録するための入れ物的なものです**
(.xlsxなど「.」から始まる謎文字は**拡張子**と言ってこのファイルは何々のファイルだよ！って意味合いです。)

# 「ディレクトリ」とは？
簡単にいえば、皆さんが普段PCを使用していると普通に使用されているであろう「フォルダ」のことという認識で大丈夫です。

使用用途について説明する必要もないと思いますが一応
ハードディスクなどはたくさんの情報を保持することが可能になります。
ただ、そこに先程説明しました**ファイル**をたくさん入れていってしまうと、
後でそのファイルを探そうとすると似た名前などによって探すのが大変になってしまいます。

そんな時に用途別に分別ができるようになるものが、<font color="OrangeRed">ディレクトリ(フォルダ)</font>です！

要は、フォルダやファイルを入れるための入れ物という認識で大丈夫です。

# ディレクトリ構造とは？
まず、こちらをご覧ください。

## ルートディレクトリ
![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/36c6b079-9534-3e95-c30f-ff0590be4349.png)

[引用元](https://webliker.info/html/60828/)

これは、ディレクトリ構造というのですが実際こんな感じでご自身のPCもフォルダ、ファイルが保存されています。

各部位に名称があるので、説明します。
まず、写真左端の緑枠の中のディレクトリ(フォルダ)この部分が一番上の階層「<font color="OrangeRed">ルートディレクトリ</font>」です。

ルートディレクトリは、コマンド上なんかだと「 / 」,「 ¥ 」という記号で表します。

## カレントディレクトリ
そして今仮に私が作業している階層がこちらの緑枠![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/b144be61-0a99-b959-32d4-263022378f24.png)

この自分が現在開いて作業しているディレクトリ(フォルダ)のことを「<font color="OrangeRed">カレントディレクトリ</font>」と言います。
カレントという言葉には、「現在の」という意味があります。
ちなみにカレントディレクトリを含む1階層上のディレクトリのことは、親ディレクトリと言います(今回の場合、ルートディレクトリのことですね)。

ちなみに、触れるディレクトリ(フォルダ)、ファイルはこちらの緑枠になります。


![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/eafe23ca-f0eb-77d9-326e-0366b96b770a.png)

:::note warn
あくまで内部を触れるのは、ファイルのみです。
緑枠内ディレクトリ(フォルダ)にこの時点では、中身を確認できません。
確認するためには、1階層下に移動して確認といった感じになります。
:::


## サブディレクトリ
そして、この**作業しているディレクトリ**(**フォルダ**)から見て下の階層にあるこちらの緑枠
![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/2fcd7f37-5684-6668-3130-dbb9250f5a2d.png)


こちらが、「<font color="OrangeRed">サブディレクトリ</font>」と言います。
そうなると必然的に今作業しているカレントディレクトリが「<font color="OrangeRed">親ディレクトリ</font>」になりますね。

最初のうちはそういう物なんだと認識で大丈夫です。

# ファイルパスとは？
簡単に言ってしまえば、「ファイルの場所を示す場所」ですね。
そのままですね笑

実はPCは、たくさんの情報量のあるデータの中からこのファイル見せて！だけでは、それがどのファイルを指し示しているか特定は無理なのです。
どこのディレクトリに入っているファイルで、そのディレクトリはどこにあるか、ちゃんとわかるように指示しなければいけません。

この「ファイルまでの場所を指し示す経路」のことを<font color="OrangeRed">パス</font>と言います。

このパスというのも、ルートディレクトリからの経路を書き記す<font color="OrangeRed">絶対パス</font>と、カレントディレクトリからの経路を書き記す<font color="OrangeRed">相対パス</font>という2種類の書き方があります。


:::note info
【パスを表記するにあたって約束事】
1. ルートディレクトリは「 / 」「 ¥ 」で表す。

2. ディレクトリと次の階層との間は「 / 」または「 ¥ 」で表す。

3. カレントディレクトリは「 . 」で表す。

4. 親ディレクトリは「 .. 」で表す。
:::

## 絶対パスの書き方
このようにフォルダ1~3のディレクトリ(フォルダ)があるとします。
![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/455f4e43-017c-5d39-0bd7-6ddee7407528.png)


この際にフォルダ3階下の**ファイル1**を参照したい場合は、
```
/フォルダ1/フォルダ2/フォルダ3/ファイル1
```
といった書き方になります。

特徴としては、ルートディレクトリから目的のファイルまでの経路を明記してやらなければいけないことですね。

## 相対パス
今回は、下記例でやっていきます。
![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/4f11ce49-f122-983d-048a-82b802528aa4.png)

現在作業しているカレントディレクトリが**フォルダ3の緑枠**とします。

そして、参照したいファイルが一つ上の階層のファイル1になります。
![スクリーンショット 2023-03-14 23.02.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2701052/8c559ff9-4e36-7210-2462-5b7dc22eb180.png)

この際にフォルダ2階下の**ファイル1**を参照したい場合は、
```
./../ファイル1
```
と書きます。
解説として、ファイルパスとは？の中の約束事に書いてる通り
「 . 」は現在いるディレクトリ(フォルダ)を表す
「 .. 」はその親ディレクトリ(フォルダ)を表す
なので、
「フォルダ3からフォルダ2へ移動してファイル1を見に行く」と動いていたわけですね！


# 終わりに
以上がファイルパスとは何なのか？でした。

正直まだ奥は深いのかもしれませんが、最初のうちはこれくらい理解しておけば大丈夫だと思います。
この業界覚えることばかりで大変ですが、
必ず将来「あ、これ見たことあるぞ！」てな感じになるはずなので一緒にゆっくり色々と覚えて行きましょう！

以上