シンボリックリンクとは?Windowsでシンボリックリンクを作成する方法

シンボリックリンク(別名:ソフトリンク)は、コンピュータユーザーにとって最も隠れた概念の1つです。しかし、その重要性と提供される利点を損なうものではありません。重複したコピーを維持せずに、異なるフォルダからフォルダやファイルにアクセスするのはどうでしょうか?はい、それがシンボリックリンクの力です。

シンボリックリンクとは

シンボリックリンクは、別の場所に存在する物理的なファイルまたはフォルダを参照するショートカットファイルです。シンボリックリンクは仮想ファイルまたはフォルダとして機能し、個々のファイルまたはフォルダにリンクして、シンボリックリンクのみが実際の場所を指していても、シンボリックリンクのあるフォルダに保存されているように見せることができます。

シンボリックリンクを単なるショートカットと混同しないでください

シンボリックリンクは、Windowsユーザーがすでに知っているショートカット以上のものだということを理解することが重要です。ショートカットファイルは単に目的のファイルを指すだけで、シンボリックリンクはリンクされたファイルが実際に存在するように見せます。シンボリックリンクをクリックすると、実際のファイルの場所に移動します。

シンボリックリンクの構造

シンボリックリンクは、オペレーティングシステムによって別のファイルまたはディレクトリへのパスとして自動的に解釈され、追跡されるテキスト文字列で構成されています。この他のファイルまたはディレクトリは「ターゲット」と呼ばれます。

シンボリックリンクはターゲットとは独立して存在します。シンボリックリンクを削除しても、そのターゲットは影響を受けません。シンボリックリンクがターゲットを指し、後でそのターゲットが移動、名前変更、または削除された場合、シンボリックリンクは自動的に更新または削除されませんが、引き続き存在し、古いターゲットを指し続けます。ただし、移動または存在しないターゲットを指すこのようなシンボリックリンクは、壊れている、孤立している、死んでいる、またはぶら下がっていると呼ばれることがあります。

シンボリックリンクの利点

  1. シンボリックリンクは非常に少ないスペースを使用し、作成が非常に高速です。シンボリックリンクを使用すると、ハードディスク容量を大幅に節約できます
  2. ハードリンクとは異なり、シンボリックリンクはファイルシステム間でファイルにリンクできます。元のファイルを削除すると、ハードリンクはそのファイルを維持しますが、シンボリックリンクは維持しません
  3. シンボリックリンクは、シンボリックリンクが含まれるフォルダ構造を維持します。たとえば、txtファイルは「ユーティリティ」フォルダに含まれていて、/D/Myfolder/Utility/windowsclub.txtにあります。ユーティリティフォルダのシンボリックリンクがDropboxフォルダに作成され、Dropboxフォルダ内でwindowsclub.txtを検索した場合、ファイルパスは/D/Myfolder/Utility/windowsclub.txtと読み取られ、元の/実際のファイルパスに戻されることはありません。
  4. シンボリックリンクを使用すると、メディアファイル(音楽/ビデオ)を別のハードドライブに保存できますが、標準の音楽/ビデオフォルダに表示されるため、メディアプログラムで検出されます
  5. 開発者は、共有ファイル/フォルダの重複したコピーを、物理ファイル/フォルダを参照するシンボリックリンクに置き換えることがよくあります。ファイルの冗長なコピーを置き換えると、物理的なディスク容量を大幅に節約し、プロジェクトのコピー/バックアップ/デプロイ/クローンのにかかる時間を大幅に短縮できます。

今日の開発の世界におけるシンボリックリンクの重要性

Microsoftのリードシニアプログラムマネージャーであるヨセフ・ダー氏はWindowsブログで次のように述べています。

gitやnpmなどの多くの人気のある開発ツールは、リポジトリまたはパッケージを作成する際にシンボリックリンクを認識して保持します。これらのリポジトリまたはパッケージが別の場所に復元されると、シンボリックリンクも復元され、ディスク容量(およびユーザーの時間)が無駄にならないようにします。たとえば、GitHubなどのサイトとともに、gitは現在、ほとんどの開発者によって使用されている主要なソースコード管理ツールになっています。

最近の年で、現代の開発におけるパッケージマネージャーの使用も爆発的に増加しました。たとえば、ノードパッケージマネージャー(npm)は2015年7月1日の週に約4億のインストールを提供しましたが、わずか1年後には12億以上のインストールを提供しました。これはわずか1年で3倍の増加です! 2016年6月下旬、npmはわずか7日間で17億個以上のノードパッケージを提供しました!

Windows 11/10のシンボリックリンク

シンボリックリンクには明確な利点がありますが、主にUNIX互換のオペレーティングシステム(Linux、FreeBSD、OSXなど)で使用されており、そこでシンボリックリンクは制限なく作成できます。Windowsユーザーの場合、シンボリックリンクはWindows Vista以降で使用可能になりましたが、作成は困難で面倒でした。

Windows Vistaのセキュリティ要件のため、ユーザーはローカル管理者権限が必要で、重要なのは、シンボリックリンクを作成/変更するために管理者として昇格されたコマンドラインコンソールでmlinkを実行する必要がありました。この後者の制限により、ほとんどのWindows開発者によってシンボリックリンクが頻繁に使用されなくなり、多くの最新のクロスプラットフォーム開発ツールがWindowsで効率的かつ確実に機能しなくなりました。

ただし、Windows 10またはWindows 11では、管理者権限を持つユーザーが開発者モードを有効にすると、PC上の誰もがコマンドラインコンソールを昇格させることなくmklinkコマンドを実行できます。

シンボリックリンクを作成する方法

シンボリックリンクは、mklinkコマンドまたはCreateSymbolicLink APIを使用して作成できます。

コマンドラインユーティリティ:mklinkを使用して、Windowsでシンボリックリンクまたはシンボリックリンクを作成できます。構文は次のとおりです。

MKLINK [[ /D] | [ /H] | [ /J]] リンク ターゲット

ここで、

  • /D: シンボリックディレクトリリンクまたはソフトリンクを作成します
  • /H: シンボリックリンクではなくファイルへのハードリンクを作成します
  • /J: ディレクトリジャンクションリンクを作成します

ターゲット: 新しいリンクが参照するパスを指定します。

たとえば、d:\DataをフォルダD:\Maindataから使用できるようにするには、次を使用します。

C:\mklink /D D:\Maindata D:\Data

これで、D:\Maindataを見ると、別のディレクトリにあったファイルが表示されます。これは常にLinuxに存在しましたが、この機能はVistaでも使用できるようになりました。

mklinkコマンドの使用

mklinkコマンドを使用する場合は、以下の構文を使用します。

“mklink /prefix link_path file/folder_path”

注意: mklinkはいくつかのタイプのリンクを作成できます。以下はタイプです-

  • /D      ディレクトリシンボリックリンクを作成します。デフォルトはファイルシンボリックリンクです。
  • /H      シンボリックリンクではなくハードリンクを作成します。
  • /J      ディレクトリジャンクションを作成します。

たとえば、私の音楽フォルダのディレクトリジャンクションをデスクトップに作成しました。以下のスクリーンショットを参照してください-

シンボリックリンクをクリックすると、音楽ファイルはC:\Users\\Desktop\Musicに保存されているように見えますが、実際にはC:\Users\\Musicにあります。

パスにスペースがある場合は、引用符で囲む必要があることに注意してください。

CreateSymbolicLinkの使用

CreateSymbolicLink APIを使用する際の新しい動作を有効にするには、dwFlagsオプションを追加して値を次のように設定する必要があります。

SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE

0x2

上記の値を選択することで、プロセスが昇格されていない場合にシンボリックリンクの作成を許可するフラグを指定しました。

CreateSymbolicLinkAPIを使用してシンボリックリンクを作成する方法の詳細については、windows.comを参照してください。

結論

シンボリックリンクは単なるショートカットよりも便利ですが、作成が少し難しいと言えます。平均的なPCユーザーは、作成するのがまだ少し怖いと感じるかもしれません。さらに、今日でも、多くのユーザーはショートカットの概念を十分に理解することに苦労しており、シンボリックリンクを区別してその使用を理解することに苦労する可能性があります。

そうは言っても、プログラムが正しいディレクトリを指すように設定を変更することはほぼ確実に簡単であり、実際にはシンボリックリンクを作成しませんが、優れたシンボリックリンクを設定して使用する方法を知っていることは本当に役立ちます。