新入社員の皆さんへ送る研修サブ資料(絶対パス・相対パス編)
新入社員の皆さん(中途の方も)、こんにちは。
matoruruです。
IT基礎などの題目でLinuxやWindowsのコマンドプロンプトの各種コマンドやパスなどの概念について叩き込まれて困っていませんか?
見慣れない黒い画面での操作はわかりにくく、頭にも入ってこないですよね。
特にパスの概念は(分かれば何てことないんですが)イメージしづらいのではないでしょうか(カレントディレクトリ?ワーキングディレクトリ?ホームディレクトリ?相対?絶対?🤯)。
今回はそんなパスの概念について具体例を豊富に含めながら解説してみようと思います。
「ファイル」「フォルダ」「ディレクトリ」について
パスの説明をする前に
- ファイル
- フォルダ
- ディレクトリ
の3つの用語について知ってもらう必要があります。
ファイルとは・・・
画像や音楽やテキストなど、パソコンに保存されているデータのことです。エクセルやワードなどの文書もファイルです(厳密にはスマホに入れたアプリ、パソコンで使える電卓やメモ帳などのツール類もファイルです)。
「開いてそれ自体の中身を見たり使ったりできるもの」がファイルと考えておけばいいかもしれません。
フォルダとは・・・
ファイルやフォルダの保存場所のことです。
(「フォルダの?」と思ったかもしれませんが、フォルダにはまた別のフォルダを入れることもできます。)
こういうのがフォルダです。これはLinux環境なので見た目がちょっと違うかもしれませんが、なんとなくアイコンの雰囲気でわかってもらえるんじゃないかと思います。
フォルダはダブルクリックすると開いてその中に移動することができます。試しにmy-works
をダブルクリックすると
中身はこんなふうになっています。folder1
はまた別のフォルダです。work1
、work2
、neko.jpeg
はファイルです。
フォルダを使えば、「研修資料」とか「就活資料」などジャンルごとに分けたり、好きなようにパソコンの中を整理整頓できます。
ディレクトリとは・・・
フォルダと同じです!
(厳密には違う?らしいですが実用上違いを感じたことがないので、無視していいと思います)。
以降、この記事では呼び方を「ディレクトリ」で統一します。
ここまでで「ファイル」「ディレクトリ(フォルダ)」の概念についての説明はおしまいです。これらを使いこなせば、パソコンの中で資料やデータなどを整理整頓できます(これまでも実は無意識にやっていたという方も多いと思います)。
カレントディレクトリ(別名:ワーキングディレクトリ、作業ディレクトリ)とは・・・
カレントディレクトリは呼び名がいろいろあって、「ワーキングディレクトリ」や「作業ディレクトリ」と呼ばれることもあります。
これは、自分が今開いているディレクトリのことを指します。
WindowsのコマンドプロンプトやLinuxのターミナルの話なら、「自分が今いるディレクトリ」や「現在地」という呼び方がしっくりくるかもしれません。
次はいよいよ「パス」です。
「パス」について
パス(Path)とは、フォルダやファイルの場所を示すものです。「道筋」や「住所」などと喩える人もいるかもしれませんが、みんな大体同じことを言っています。
例えば、さっきフォルダの説明の節に貼ったスクリーンショットにneko.jpeg
という画像ファイルがありましたが、その場所を人に教えるためにはどうすればいいかを考えてみましょう。
「neko.jpeg
を開いて!」とお願いされたら、「それはどこにあるの?」と聞きたくなりませんか?
「Desktopフォルダの中のmy-worksフォルダの中のneko.jpegを開いて!」
と言われれば、きっと多くの人に理解してもらえますよね。そのような指示をするための概念がパスです。
上の説明文をパスの形式に直すと、
/home/matoruru/Desktop/my-works/neko.jpeg
となります(Linux/Unixの場合)。
Windowsの場合は
C:¥home¥matoruru¥Desktop¥my-works¥neko.jpeg
です。
ログインできるユーザが複数人いたらデスクトップは複数あるので、/home/matoruru
でユーザを指定して、その中のDesktop
の中のmy-works
フォルダの中のneko.jpeg
という雰囲気です。
このように、パスはあるフォルダやファイルの場所を示すための仕組みなのですが、パスには絶対パスと相対パスの2種類が存在します。
絶対パス
絶対パスとは、そのフォルダやファイルの位置をそのコンピュータ上で確実に指し示すことができるパスのことです。
前節で書いた
/home/matoruru/Desktop/my-works/neko.jpeg
や
C:¥home¥matoruru¥Desktop¥my-works¥neko.jpeg
は絶対パスです。
/
とC:¥
はルートディレクトリと呼ばれていて、全てのディレクトリの始まり、一番根本にあるディレクトリです。他の全てのディレクトリはルートディレクトリに内包されていて、必ずそこから辿ることができます。
/home/matoruru/Desktop/my-works/neko.jpeg
この絶対パスは、**「ルートディレクトリにあるディレクトリhomeの中のディレクトリmatoruruの中のディレクトリDesktopの中のディレクトリmy-worksの中のneko.jpegというファイル」**を指しています。
相対パス
相対パスとは、そのフォルダやファイルの位置をカレントディレクトリから指し示すことができるパスのことです。
どこからでもそのパスでその位置を絶対的に特定できるわけではなくカレントディレクトリから相対的に特定できるという特徴からこのように呼ばれています。
そのため当然、カレントディレクトリが変われば、そのパスが示す場所も変わります。
例えば今自分が
/home/matoruru/Desktop/my-works
の位置にいるとします(カレントディレクトリが/home/matoruru/Desktop/my-works
であるということと同義)。
この時、
/home/matoruru/Desktop/my-works/neko.jpeg
のファイルは単に
neko.jpeg
もしくは
カレントディレクトリを意味する記号.
を付けて
./neko.jpeg
だけで示すことができます。
これは以下のように考えるとわかりやすいです。
「今自分が/home/matoruru/Desktop/my-works/
のディレクトリにいる状態」というのは
このようにそのフォルダの中身を開いていることと同じです。この状態でneko.jpeg
と言われればそのファイルを特定することができますよね。
さらに奥のフォルダを開いていくこともできます。スクリーンショットのfolder1
の中にあるinu.jpeg
にアクセスしたい時は、
folder1/inu.jpeg
もしくは
folder1/inu.jpeg
とすることもできます。
これは絶対パスで表すと
/home/matoruru/Desktop/my-works/folder1/inu.jpeg
となりますが、相対パスで表せるのであれば相対パスのほうが短くて便利ですよね。
絶対パスと相対パスの使い分けは経験を積むうちにわかってくると思います。
.
と..
について
ディレクトリを表す記号.
はカレントディレクトリを表します。
..
は一つ上のディレクトリを表します(外側のディレクトリとも言える)。
neko.jpeg
は./neko.jpeg
と表せますし、極端ですが././././neko.jpeg
と書くこともできます(.
は現在地を示すので、いくつ繋げても示す場所は変わらない)。
カレントディレクトリが/home/matoruru/Desktop/my-works/folder1
のときに/home/matoruru/Desktop/my-works/neko.jpeg
を指し示したい場合は、../neko.jpeg
と書くことができます。既にfolder1
の中にいるので、現在地の一つ外にあるneko.jpegという理解でOKです。
パスのまとめ
そのファイルを絶対にその場所から動かさないのであればそのファイルに対しては常に絶対パスでアクセスすることが可能ですが、そうでないのであれば絶対パスでのアクセスを保証することはできません。
反対に、あるファイルをディレクトリごと移動させる機会が多いのであれば、そのフォルダをカレントディレクトリとして相対パスでそのファイルを示せば、そのディレクトリからはそのファイルを常に指し示すことができます。この場合は、絶対パスではあてになりません。
最後に
記事を読んでくださってありがとうございます!
Twitterフォローしていただけると記事を書き続けるモチベーションになります😺
分からないことがあれば記事の本コメント欄、もしくはTwitterのDMでも答えるので話しかけてください😀
Discussion