依存ファイルdependent file[要出典])とはプログラミング用語で、プログラム実行ファイル以外に必要となるファイルのことである。

Windows OSでは実行ファイルとはいわゆる「EXEファイル」のことであるが、通常、ビルド(コンパイルリンク)によって出力された実行ファイルは、プログラム内で使用する関数クラスなどをランタイムライブラリから呼び出すため、そういったライブラリのない環境では動作しない。こういったDLLOCXファイルなどを総称して依存ファイルと呼び、プログラムを配布する際にはこれらのファイルの配布も必要になる。

C/C++Delphiなどの言語では、ビルド時に「静的リンク」を行うことによってこれらのライブラリの機能を実行ファイル内部に取り込むことができる。これによって依存ファイルがなくとも異なる環境での実行が可能となるが、アプリケーションの実行ファイルのサイズは大きくなり、ライブラリのバージョンアップ時に対応するためにはコンパイルをやり直さなくてはならなくなる。「動的リンク」を行えば、実行時にOSのローダーによってライブラリをリンクするため、アプリケーションの実行ファイルのサイズは抑えることができるが、ランタイムライブラリを別に配布する必要が生じる。

従来のVisual Basic(バージョン6以前)においては、一連のランタイムライブラリが必須であり、これらを含んだ適切なインストーラを作成するか、あるいは共通ライブラリ群(VBランタイム)を別途インストールする必要があった。

C#Visual Basic .NET (VB.NET) などの.NET言語で書かれた.NETアプリケーションでは、言語によらず.NET Framework共通言語ランタイム (Common Language Runtime, CLR) を必要とする。.NET Coreの場合は、.NET FrameworkのCLRとは異なるCoreCLRを必要とする。

C++/CLIの場合、ネイティブコードと.NETのマネージコードが混在するプログラムとなる。マネージコードはコンパイル時に共通中間言語として出力され、実行時に機械語にJITコンパイルされるが、コンパイルオプション/clrはランタイムライブラリの静的リンク/MTと共存できない[1]ため、.NETのランタイムだけでなくCRT (C Run-Time) のDLLが必須となる。

上記に挙げたように、依存ファイルを必要とするプログラムを実行するためには、通常それらを別にインストールしなければならないが、パッケージ管理システムを利用することで、依存ファイル・ランタイムを別途配布したりインストールしたりするときの手間を省くことができる。

脚注 編集

関連項目 編集