ショートカット (コンピューティング)

コンピューティングにおいて、**ファイルショートカット**とは、ユーザインタフェースにおけるハンドルである。このショートカットを用いることで、ユーザーはショートカットがあるディレクトリやフォルダとは異なる場所にあるファイルやリソースを見つけることが可能となる。
同様に**インターネットショートカット**とは、ユーザーがリモートのインターネットやウェブサイトにあるページ、ファイル、またはリソースを開くことを可能にする技術である。

ショートカットは通常、対象のURIやGUID、あるいはショートカットが表す対象のプログラムファイルの名前を含む小さなファイルとして実装される。ショートカットは、それが実行される際に対象のプログラムに渡されるパラメータを追加で指定することもある。各ショートカットは独自のアイコンを持つことができる。ショートカットは一般的にデスクトップ上、アプリケーションランチャーパネル (例えばMicrosoft Windowsのスタートメニューなど) や、デスクトップ環境のメインメニューに置かれる。Macのオペレーティングシステム (OS) においてこれに相当するものはと呼ばれる。Unix系のOSはターゲットファイルを指すシンボリックリンクを持ち、追加の設定詳細を提供する`.desktop`ファイルをサポートすることが多い。

## 実装
### Microsoft Windows

ファイルショートカット (別名: シェルリンク) はWindows 95で導入された。Microsoft Windowsでは、ローカルファイルへのショートカットには.lnkというファイル名の拡張子を使用し、ウェブページなどのリモートファイルへのショートカットには.URLを使用する。これらは一般的に「ショートカット」または「リンクファイル」と呼ばれ、どちらもデフォルトでカーブした矢印のオーバーレイアイコンとともに表示され、ファイル名の拡張子は表示されない。 (これらの拡張子は、ファイルタイプのオプションで「登録されている拡張子は表示しない」のチェックが外れていても、エクスプローラでは隠れたままである。これはレジストリの`HKEY_CLASSES_ROOT\lnkfile`内の`NeverShowExt`値によって制御されている。`IsShortcut`値が矢印の表示を管理する。) ショートカットファイルは、プログラムがそれをサポートしている場合、最小化または最大化のウィンドウ状態でプログラムを起動するよう設定することができる。

Microsoft Windowsの`.lnk`ファイルは、ファイルシステムとしての拡張子ではなく、エクスプローラの拡張子として動作する。シェル拡張子としての`.lnk`ファイルは、エクスプローラでの使用を除き、ファイルの代わりとしては使用できない。またエクスプローラでは、ローカルファイル (またはGUID) へのショートカットとしてだけでなく、これ以外の用途もある。これらのファイルは「L」で始まる。

ショートカットは作成時に特定のファイルやフォルダを指すものの、ターゲットが別の場所に移動した場合、リンクが切れることがある。存在しないターゲットを指すショートカットファイルを開くと、エクスプローラはショートカットの修復を試みる。Windows 9xベースのWindowsでは、壊れたショートカットを修正するための単純な検索アルゴリズムを使用する。一方、Windows NTベースのOSとNTFSファイルシステムでは、ショートカットファイルにターゲットオブジェクトの一意の識別子が保存されており、Windowsは分散リンク追跡サービスを使用してショートカットのターゲットを追跡する。これにより、ターゲットが別のハードドライブに移動した場合でも、ショートカットは更新されることがある。Windows 2000で導入されたWindows Installerは、"Advertised Shortcuts"と呼ばれる別の特殊な種類のショートカットも追加した。

Windowsのファイルショートカットは、ターゲットパスの他にカレントディレクトリのパスも保存することができる。環境変数を使用することも可能。スタートメニューフォルダ、タスクバー、またはデスクトップに固定されたショートカットのプロパティでホットキーを定義することができる。Windows 2000以降では、ファイルショートカットにコメントを保存でき、マウスがショートカットの上にホバーするとツールチップとして表示される。

一般的に、ショートカットをダブルクリックして起こる効果は、それが参照するアプリケーションやドキュメントをダブルクリックするのと同じであることが意図されているが、Windowsのショートカットは、ターゲットファイルと「Start In」ディレクトリのための別々のプロパティを含んでいる。後者のパラメータが入力されていない場合、一部のプログラムのショートカットを使用しようとすると、「DLLが見つかりません」のエラーが発生することがある。このエラーは、アプリケーションに直接アクセスしたときには発生しない。

シンボリックリンクは、Windowsシステム (Windows Vista以降) でも作成することができる。これらは同様の機能を果たすが、ファイルシステムの機能である。Windowsのショートカットはファイルであり、エクスプローラを通じてファイルシステムとは独立して動作する。

Windows 7からは、一部のショートカットにはアプリケーションユーザーモデルID (AppUserModelIDs) も保存される。ターゲットのコマンドラインの代わりに、AppUserModelIDsはアプリケーションを直接起動するために使用される。AppUserModelIDsを持つショートカットは、一部のデスクトッププログラムとすべてのWinRT Modern/ユニバーサルWindowsプラットフォームアプリケーションの起動に使用される。

Windowsはそれを作成する便利なツールを提供していないが、エクスプローラは「フォルダリンク」または「シェルリンクフォルダ」をサポートしている。これは、システム属性が設定されたフォルダで、隠された「desktop.ini」(フォルダのカスタマイズ) ファイルを含んでいる。このファイルは、エクスプローラに対してその同じフォルダ内で別のフォルダを指す「target.lnk」ショートカットファイルを探すよう指示する。エクスプローラで表示したとき、シェルリンクフォルダはターゲットフォルダの内容を持っているように見える。つまり、カスタマイズされたフォルダが実質的なショートカットになる。この技術は、WebDAVフォルダなどのMicrosoft Windowsの項目で使用されている。しかし、Windows Vista以降でのファイルシステムリンクの登場により、シェルリンクフォルダの有用性は低下した。

`.lnk`ファイルに似ているが、拡張子が`.cda`のファイルがある。これは、CD (標準CDDA / RedBookフォーマット) のトラック (曲)を参照するために使用される。

### Unix系

Unix系のシステム (LinuxやBSDなど) では、ターゲットファイルやディレクトリへの単純なポインタが、OSにおいてシンボリックリンクとして実装されている。

ターゲットがプログラムの場合、多くのグラフィカルユーザインタフェース (GUI) は`.desktop`ファイルと`.directory`ファイルをサポートしている。これらのプレーンテキストファイルの形式は、freedesktop.orgの「desktop entry」仕様に従っており、プログラムの位置だけでなく、アイコン、ツールチップ、その他の詳細を渡すことができる。

### Mac

Macでは、ショートカットの拡張機能はない。Macintosh System 7で「エイリアス」というファイルタイプが導入された。これは、移動を処理するためにinode番号などの情報を追跡する。System 7からMac OS 9までのエイリアスは、斜体の名前を使用することで他のファイルと区別されていた。Mac OS 8.5以降では、もう1つの区別用マークが追加された。それは「エイリアス矢印」で、Microsoft Windowsのショートカットで使用されるものと似た、薄い白い枠線のついた黒い矢印であった。Mac OS Xでは、エイリアスの名前は斜体にはならなくなったが、矢印バッジは残った。さらに、エイリアスはオブジェクトへの動的な参照を保持し、リモートサーバ上のファイルを呼び出すときでさえ指定する必要はない仕組みである。

また、UNIXサブシステム内でシンボリックリンクを作成することもできる。Safariブラウザには、インターネットURLを保存するための独自のプロパティリストベースの形式、`.webloc`がある。

## 歴史
初期のGUIでアプリケーションを実行したり、ファイルをレンダリングしたりするためには、ユーザーはアプリケーションやファイルがある場所で実際のファイルや実行可能ファイルのアイコンをクリックする必要があった。ファイルや実行可能ファイルに関連したタスクを実行する指示を表すアイコンから、実行可能ファイルを切り離すという概念は、ファイル構造の物理的な組織ではなく、機能やタスクによってグループ化することができるようにするために、初めて研究論文「A Task Oriented Front End For The Windows Graphical User Interface」で述べられた。この論文はマイク・ロバートによって書かれ、1991年にキングストン大学で公開され、同年にMicrosoftとXerox EuroPARCの両方に学術/ビジネス技術共有合意の下で提示された。この研究の簡略化された形が1991年のSystem 7に、そして4年後のWindows 95に組み込まれた。

## 脚注

## 関連項目
*ハードリンク
*ショートカットキー

## 外部リンク
**Windows LNK**
*"MS-SHLLINK: Shell Link (.LNK) Binary File Format" - Microsoft
*[Windows Shortcut File format specification](https://github.com/libyal/liblnk/blob/main/documentation/Windows%20Shortcut%20File%20(LNK)%20format.asciidoc) Joachim Metz氏によるもので、Microsoftの仕様とWindowsのバージョン間の観察を組み合わせたもの (例えば、Windows 95の動作のいくつかの側面は、MS-SHELLINKでは言及されていない)
* IShellLink interface Windows APIで.lnkファイルにアクセス
* "Shellify"  Shellifyとは、Windows APIなしで.lnkファイルにアクセスするためのMicrosoft Shell Link (.LNK) バイナリファイル形式の100%管理された.NET実装である
* Win32::Shortcut - Perl Module to deal with Windows Shortcuts Perlライブラリ

**.desktopファイル**
*"Howto desktop file", .desktopファイルのガイド