Windows
 Computer >> コンピューター >  >> システム >> Windows

シンボリックリンク(Symlink)とは?Windows 11/10での作成方法を徹底解説

シンボリックリンク(Symlink)は、ソフトリンクとも呼ばれ、一般のPCユーザーにとって最も馴染みの薄い概念の一つかもしれません。しかし、その重要性とメリットは決して小さくありません。重複したコピーを作成せずに、別々の場所にあるフォルダやファイルへアクセスできるとしたらどうでしょうか。それこそがシンボリックリンクの威力です。

シンボリックリンク(Symlink)とは?

シンボリックリンクは、別の場所にある実際のファイルやフォルダを参照するショートカットファイルのようなものです。シンボリックリンクは仮想的なファイルやフォルダとして機能し、個々のファイルやフォルダへのリンクとして使用できます。リンク先の実体は本来の場所に存在しているにもかかわらず、あたかもシンボリックリンクと同じフォルダ内に保存されているかのように見せられるのが特徴です。

シンボリックリンクを単なる「ショートカット」と混同しない

シンボリックリンクは、Windowsユーザーが普段使い慣れている「ショートカット」とは異なる、より高度な仕組みである点を理解しておくことが重要です。ショートカットファイルは目的のファイルを指し示すだけですが、シンボリックリンクはリンク先のファイルがその場所に実際に存在しているかのように振る舞います。シンボリックリンクを開けば、自動的に実際のファイルの場所へアクセスできるのです。

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

シンボリックリンクはテキスト文字列で構成されており、OSによって自動的に解釈され、別のファイルまたはディレクトリへのパスとして辿られます。このリンク先となるファイルやディレクトリは「ターゲット(target)」と呼ばれます。

シンボリックリンクはターゲットとは独立して存在します。シンボリックリンクを削除しても、ターゲット側には一切影響ありません。一方、シンボリックリンクがターゲットを指していても、後にそのターゲットが移動・名前変更・削除された場合、シンボリックリンクは自動的に更新も削除もされず、古いターゲットを指し続けます。こうした移動先や存在しないターゲットを指すシンボリックリンクは、「壊れた(broken)」「孤立した(orphaned)」「死んだ(dead)」「ぶら下がり(dangling)」などと呼ばれることがあります。

シンボリックリンクのメリット

  1. シンボリックリンクはごく僅かな容量しか消費せず、作成も高速です。ハードディスクの空き容量を大幅に節約できます。
  2. ハードリンクとは異なり、シンボリックリンクはファイルシステムをまたいでリンクを作成できます。なお、元のファイルを削除してもハードリンクはデータを保持し続けますが、シンボリックリンクの場合はリンクが無効になる点には注意しましょう。
  3. シンボリックリンクは、それが含まれるフォルダ構造を維持します。例えば、windowsclub.txtというファイルが/D/Myfolder/Utility/windowsclub.txtにある「Utility」フォルダに保存されているとします。「Dropbox」フォルダ内に「Utility」フォルダのシンボリックリンクを作成し、Dropboxフォルダ内でwindowsclub.txtを検索すると、パスは/D/Myfolder/Utility/windowsclub.txtと表示され、元の実際のパスへ変換されて戻ることはありません。
  4. シンボリックリンクを活用すれば、音楽や動画などのメディアファイルを別のハードドライブに保存しながら、標準の「ミュージック」や「ビデオ」フォルダに表示させることができます。これにより、メディア系アプリからも問題なく認識されます。
  5. 開発者の間では、共有ファイルやフォルダの重複コピーを、実体を参照するシンボリックリンクに置き換える手法がよく使われています。冗長なコピーを排除することで物理ディスク容量を大きく節約でき、プロジェクトのコピー・バックアップ・デプロイ・クローンにかかる時間も大幅に短縮できます。

現代の開発環境におけるシンボリックリンクの意義

MicrosoftのYosef Durr氏(Lead Senior Program Manager)はWindows Blogで次のように述べています。

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

シンボリックリンク(Symlink)とは?Windows 11/10での作成方法を徹底解説

現代の開発におけるパッケージマネージャーの利用も、ここ数年で爆発的に拡大しています。例えばNode Package Manager(npm)は、2015年7月1日の週に約4億インストールを処理しましたが、わずか1年後には12億インストールを突破――わずか1年で3倍の伸びです。さらに2016年6月下旬には、npmはたった7日間で17億を超えるnodeパッケージを提供しました。

Windows 11/10におけるシンボリックリンク

シンボリックリンクには明確な利点がありますが、これまでは主にLinux、FreeBSD、macOS(OSX)といったUNIX互換OSで利用されてきました。これらのOSでは制限なくシンボリックリンクを作成できます。一方Windowsでは、Windows Vistaの時点でシンボリックリンクが利用可能になっていたものの、作成作業は難しく面倒でした。

これはWindows Vistaのセキュリティ要件が原因です。ユーザーはローカル管理者権限を持ち、さらにシンボリックリンクを作成・変更するには、管理者として昇格したコマンドラインコンソールでmklinkを実行する必要がありました。この制限により、多くのWindows開発者はシンボリックリンクを敬遠するようになり、多くの最新のクロスプラットフォーム開発ツールがWindows上で非効率・不安定に動作する一因ともなりました。

しかし現在のWindows 10やWindows 11では、管理者権限を持つユーザーが一度「開発者モード」を有効にすれば、PC上の誰でもコマンドラインコンソールを昇格させることなくmklinkコマンドを実行できるようになりました。

シンボリックリンクの作成方法

シンボリックリンクは、mklinkコマンドまたはCreateSymbolicLink APIのいずれかを使って作成できます。

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

MKLINK [[ /D] | [ /H] | [ /J]] Link Target

各オプションの意味は以下の通りです。

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

Target:新しいリンクが参照するパスを指定します。

例えば、d:\DataをD:\Maindataフォルダから利用可能にしたい場合は、次のコマンドを使用します。

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

これでD:\Maindataを確認すると、別のディレクトリにあったファイルがそのまま表示されるようになります。この機能はLinuxには以前から存在していましたが、Windows Vista以降でも利用可能になったのです。

mklinkコマンドを使う方法

mklinkコマンドを使用する際は、以下の構文を用います。

mklink /プレフィックス リンクのパス ファイル・フォルダのパス

なお、mklinkで作成できるリンクには複数の種類があります。

  • /D ディレクトリのシンボリックリンクを作成する。オプション未指定の場合はファイルのシンボリックリンクが既定となります。
  • /H シンボリックリンクの代わりにハードリンクを作成する。
  • /J ディレクトリジャンクションを作成する。

例えば、筆者は自身の「ミュージック」フォルダのディレクトリジャンクションをデスクトップに作成してみました。下のスクリーンショットをご覧ください。

シンボリックリンク(Symlink)とは?Windows 11/10での作成方法を徹底解説

この状態でシンボリックリンクを開くと、音楽ファイルがC:\Users\<ユーザー名>\Desktop\Musicに保存されているように見えますが、実際のデータはC:\Users\<ユーザー名>\Musicに存在したままです。

シンボリックリンク(Symlink)とは?Windows 11/10での作成方法を徹底解説

なお、パスにスペースが含まれている場合は、パス全体を二重引用符("")で囲む必要がある点に注意してください。

CreateSymbolicLink APIを使う方法

CreateSymbolicLink APIで新しい動作を有効にするには、追加のdwFlagsオプションの値として以下を設定します。

SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
0x2

このフラグを指定すると、プロセスが管理者権限で昇格されていない場合でも、シンボリックリンクの作成が許可されます。

CreateSymbolicLink APIを使用したシンボリックリンクの作成方法の詳細については、Microsoft公式ドキュメント(windows.com)をご参照ください。

関連記事:ハードリンク・シンボリックリンク・ジャンクション・ボリュームマウントポイントの作成方法

まとめ

シンボリックリンクは単なるショートカットよりもはるかに便利な機能ですが、その分、作成のハードルはやや高めです。平均的なPCユーザーにとっては、まだ多少とっつきにくく感じられるかもしれません。そもそも、今でも多くのユーザーがショートカットの概念を完全には理解しておらず、シンボリックリンクとの違いやその用途を把握するのに苦労するのが実情です。

とはいえ、単にプログラムの設定を変更して正しいディレクトリを参照させるだけで済むケースでは、無理にシンボリックリンクを作成する必要はありません。しかし、適切なシンボリックリンクの設定方法と活用法を身につけておけば、ディスク容量の節約や環境構築の柔軟性向上など、いざというときに非常に心強い武器となるでしょう。

  1. Windows 11/10でタスクビューのショートカットを作成する方法

    Windows 11/10のタスクビューは、開いているすべてのウィンドウを一覧表示できるウィンドウ管理機能です。これにより、特定のプログラムやドキュメントに素早く切り替えることができます。この記事では、Windows 11/10でタスクビューのショートカットを作成する方法を詳しく解説します。 タスクビューとは タスクビューは、Windows 10で初めて導入され、Windows 11にも引き継がれたタスク切り替えおよび仮想デスクトップ機能です。主な特徴は以下のとおりです。 開いているウィンドウをすばやく検索・表示できる すべてのウィンドウを一時的に隠してデスクトップを表示できる 複数のモニ

  2. Windows 11/10で使用しているハードドライブ(SSD・HDD)を確認する4つの方法

    多くの方がノートパソコンやデスクトップPCを使用していますが、自分のPCにどんなストレージデバイスが搭載されているのか把握していないケースは少なくありません。たとえばSSDはHDDと比べてパフォーマンスに大きな差をもたらします。この記事では、Windows 11/10で使用しているハードドライブの種類を確認する方法を詳しく解説します。 ハードドライブの種類を確認する方法 「自分のPCのハードディスクは何だろう?」「SSDなのか、HDDなのか、それともハイブリッドドライブなのか?」「Windows PCのハードドライブの仕様や回転数(RPM)はどうやって確認すればいいのか?」——こうした疑問に対