ズボラでもジャンクションでストレスフリーに勉強する話

みなさまご無沙汰しております。イトウです。
もともとやりたいと思っていたお正月企画があったのですが、今年の始まりがイトウ史上だいぶ攻めた始まり方をしたために
気づいたら2月になっておりました…((((゜゜
と、いうことで、本日は最近実践したファイル整頓術(?)でお茶を濁したいと思います。。。
(なお、本投稿はWindows 10、XAMPP環境での内容となっております、ご了承ください…)
全部一か所に置いておきたい
さて、整頓術の具体的な話の前に、ことの発端についてお話ししておきましょう。
まず、イトウの2019年がそれはそれはチャレンジングな始まり方をするにあたり、いろいろ勉強をする必要がありました。
素のPHPも書くし、HTMLやらSQLやらも書くし、ドキュメントもいろいろあるし、フレームワークでもいろいろやるし…
そんな中、ラクしたいイトウはこう考えました。
「勉強に関わる全てのファイルを一つのフォルダにまとめたい。。。」
今回の自分の取り組みに関わるあれやこれやが分散しているのが、とても面倒になってきてしまったのです。
置き場所に制限のあるファイル
…さて、ここで一つ大きな問題が立ちはだかりました。
「htdocsで動かす必要のある、ファイルたちをどうするか?」
ブラウザで実行結果を見たい事ってあるじゃないですか?となると、htdocsに入れておきたいわけです。
特に、フレームワーク関連で自分の作成するファイルは、ControllerやらViewやらいろいろなところに点在することになります。
それでも、なんとかして、学習の成果はお勉強フォルダにまとめてしまいたい。
つまり、お勉強フォルダにあるControllerが、さもフレームワークの中にあるかのような振る舞いをすればいいんですよね…
…ん?
そういうの知ってるぞ。
そう、そいつの名は“シンボリックリンク”!!!
シンボリックリンクとは?
ざっくりいうと、別の場所にあるファイルやフォルダが、さもその場所にあるかのようにふるまう身代わりを置いておくような機能です。
個人的には、VirtualBoxなどの仮想環境を利用して開発環境を整えるようなときに利用する印象が強い”シンボリックリンク”ですが、
Windowsでのシンボリックリンクについてはあまり詳しくないのでいったん調べてみることにします…。
シンボリックリンクの使い方と落とし穴 – Qiita
Windowsのシンボリックリンクとジャンクションとハードリンクの違い
どうやら他にも類似機能があり、それぞれできることがちょっとずつ違う様子…
その中でも特に気になったのが、”ジャンクション”という機能です。
シンボリックリンクは、
ファイルでもフォルダでもリンクを作成することができ、ローカル以外の(ネットワーク上の)ものも対象とできる、管理者権限で発動される強力な機能
であるのに対し、
ジャンクションは、
対象はローカルのフォルダのみに限定されるものの、一般ユーザー権限で実行できるライトなもの。
今回はジャンクションで事足りそうなので、さっそくやってみます!
ジャンクションを作成する
やってみた結果から言うと、めちゃめちゃ簡単です。
今回は、 とある方の記事 に感化され、CakePHPのお勉強をしているものと仮定して、
C:\Users\ito\Documents\study\cakeController を C:\xampp\htdocs\studyCake\src\Controller として利用できるようにしてみましょう…!
まず、Controllerが無い状態だと…
当たり前ですが、怒られますね。
では、ジャンクション作成のコマンドをたたいてみたいと思います!
コマンドの書き方は
mklink /J [作成先のフォルダの絶対パス] [作成元のフォルダの絶対パス]
オプションの/J
で、ジャンクションとして作成することを指定しています。
ジャンクションに関しては、作成先、作成元ともに絶対パスでの指定が必要とのこと。
ですので今回はコマンドプロンプトを起動し、以下のコマンドを実行しました。
C:\Users\ito>mklink /J C:\xampp\htdocs\studyCake\src\Controller C:\Users\ito\Documents\study\studyCake_controller
すると、こんな結果が出ます。
C:\xampp\htdocs\studyCake\src\Controller <<===>> C:\Users\ito\Documents\study\studyCake_controller のジャンクションが作成されました
そして、ここからはコマンドが実行されてからブラウザをリロード、どのような結果になるかを一連の流れで見てみましょう!!
やりました!成功です!JunctionがSuccessしてます!
studyCakeフォルダの中にControllerフォルダが作成されて、ちゃんとコントローラーの機能が利用できていますね!
まとめ
コマンドひとつでサクッとジャンクションを作成し、
これで、心おきなく、お勉強フォルダに全部つっこむことができますね
めでたしめでたし。。。
おまけ
ところで、CakePHP側に配置したジャンクションのアイコンが、ショートカットに似ていますよね?
ショートカットでもCakeは動くのか気になりやってみたところ↓
怒られました。
ジャンクションやシンボリックリンクが、身代わりとして実体を置くイメージに対し、
ショートカットはあくまで道しるべを置いているため、実体としては扱えず存在しないものとされるようです。
その証拠に、”種類”の項目が、ジャンクションだと「ファイル フォルダー」、ショートカットは「ショートカット」となっていますね。
あーおもしろかった!
さ、勉強に戻ろう…!!