動的リンクどうてきりんく英語: dynamic link)とは二つの意味がある。

  1. コンピュータプログラムにおいて、実行時にプログラムの結合を行う方式。
  2. ハイパーテキストにおいて、ノード間のリンクを参照時に決定する方式。

プログラムにおける動的リンク編集

動的リンキングダイナミックリンキングとも言う。

コンピュータプログラム作成時において、大規模なプログラムは一般的に複数のモジュールに分割される。ライブラリあるいはアプリケーションプログラムモジュールビルドする際に、まずコンパイラによってソースコードからオブジェクトファイルが生成されるが、各モジュールに必要なプログラムコードの実体すべてをリンケージエディタによってリンクしてモジュールに含め、実行可能形式のバイナリ(実行ファイル)を得る方式を静的リンクと呼ぶ。

これに対し、各モジュールに必要なプログラムコードの実体すべてを含めず、プログラムの実行開始時にローダによって初めて他のモジュールと結合する方式を動的リンクと呼ぶ。この動的リンク機構を使ったライブラリを、動的リンクライブラリ(ダイナミックリンクライブラリ)と呼ぶ。Microsoft Windows環境ではDLLと略されることが多い。よく使われる処理(アルゴリズム)を記述したサブルーチンを再利用するケースなど、動的リンクライブラリを複数のプログラムから共有することには利点があるので、しばしば「共有ライブラリ」として運用される。

動的リンクの利点としては、重複するコードやデータが減ることでモジュールのサイズを小さくできることや、ライブラリの実装を変更したときに、ライブラリのインターフェイスに変更がなければプログラムを再リンクする必要がないことが挙げられる。

動的リンクの欠点としては、モジュール自身に必要なコードが含まれていないため自己完結できないことや、シンボルの解決が実行時に(動的に)実施されるためプログラム実行時のオーバーヘッドがあることなどが挙げられる。

共有ライブラリ編集

動的リンクされるライブラリは、単独のアプリケーションから利用される「プライベートライブラリ」だけでなく、複数のアプリケーションから利用される「共有ライブラリ」にすることもできる。ただし共有ライブラリの場合、暗黙的に特定のバージョンの共有ライブラリの内部処理や仕様に依存していたプログラムがライブラリのバージョンアップによって動作しなくなること、バージョンアップした共有ライブラリにバグが存在するとそのライブラリを利用するソフトウェアすべてに影響が及ぶこと(特にライブラリがシステム全体で共有される場合に深刻となる)、バージョンアップによる影響範囲を事前に特定できないこと[要説明]、同じ共有ライブラリの複数のバージョンがシステム内に存在するときに探索優先度の違いで動作が変わってしまうこと、などがある。これらの欠点は俗にコンピュータ業界で「DLL地獄(DLL Hell)」の名称で呼ばれることがある。

ハイパーテキストにおける動的リンク編集

ハイパーテキストにおいて、ハイパーテキストを記述したときにノード間のリンクをあらかじめ定義する方式に対して、参照時に動的にリンクを決定する方式を言う。

関連項目編集