動的リンキング【基本情報技術者・解説】

プログラムを構成するモジュールの結合を,プログラムの実行時に行う方式はどれか。

ア)インタプリタ
イ)オーバレイ
ウ)静的リンキング
エ)動的リンキング


まず「モジュール」っていうのは機能の「部品」のことだね。(´・ω・)
例えばペイントアプリであれば、「ペン機能」「塗りつぶし機能」「消しゴム機能」
これら一つ一つをモジュールって言ったりする事もあるし
ペン機能の中でも「ペンの太さを変える機能」「ペンの色を変える機能」なども
モジュールって言ったりするね。
曖昧だね。
でもまぁとりあえずイメージとしては「部品」だよ。(´・ω・
)

で、次に「モジュールの結合」というのは何かというと
モジュール達はプログラムが実行された時に一つにまとまる事で
”アプリケーション”として動作するようにできてるんだよ。
「ペン機能」だけポツンとあっても仕方がないからね。
「ペン機能」「塗りつぶし機能」「消しゴム機能」…
それらすべてのモジュール達が1つのプログラムとして結合されて
はじめて「ペイント」というアプリができるんだ。(・ω・*)

んで、その結合のタイミングが
プログラムの実行時(アイコンをクリックしてプログラムが開かれる時)か
プログラムの実行前(ダウンロードされた時点であらかじめ結合されている)かで
呼び方が違うんだよね。

前者が「動的リンキング」
後者が「静的リンキング」と呼ぶよ。
つまり答えは(エ)だね。


動的リンキングにする事でどんなメリットがあるのだろう?(´・ω・)?

ペイントの機能は「ペン機能」「塗りつぶし機能」「消しゴム機能」というような
絵を描くための機能だけじゃないんだよ。
例えば「×ボタンを押すとアプリケーションが閉じる」ってのも
ペイントに搭載されている立派な機能の一つだよね。

でも「×ボタンを押して終了」という機能は
ペイント独自の機能ではなくて、他のアプリでも同じように搭載されている機能だよね?
どんなアプリでも×ボタンを押せばウィンドウは閉じるでしょ。

このような機能は、ペイントの開発者が
「×ボタンを押したらウィンドウを閉じる」というプログラムを書いたわけじゃなくて
あらかじめWindowsOSやMacOSの中に用意されている
「×ボタンを押したらウィンドウを閉じる」というモジュールを使っているだけなんだよ。

自前でわざわざ「×ボタンを押したらウィンドウを閉じる」っていうプログラムを
書いている人なんていないだろうね。
(なぜなら1から書くとなるとくそめんどくさいからだよ。)(´・ω・)

で、ペイントアプリには
「ペン機能」「塗りつぶし機能」「消しゴム機能」といったモジュールたちの他に
上記でいったように最初からOS内に用意されているモジュールも含まれるんだ。(・ω・
*)
だからそもそも「ペン機能」「塗りつぶし機能」「消しゴム機能」たちと
最初からOS内に用意されていた「×ボタンを押したらウィンドウを閉じる」ってのは
プログラムファイル自体が別になってるんだよ。
別になっているファイルを結合させるには、実行時のタイミングで行うしかないんだよね。

逆に静的リンキングってのは
「ペン機能」「塗りつぶし機能」「消しゴム機能」「×ボタンを押したらウィンドウを閉じる」
がぜーんぶ一つのファイルに入っている状態をイメージしてもらえるとわかりやすいかな。
つまり最初からもうぜーんぶ結合されてるの。
こういうアプリもあるんだよね。


動的リンキングを使うメリットは
開発者が「×ボタンを押したらウィンドウを閉じる」をわざわざ作らなくていいから楽だし
「×ボタンを押したらウィンドウを閉じる」のプログラムを用意しなくていいから
ファイルが軽くなってダウンロードが早い!というのがあるね。
逆にデメリットは、モジュールファイルのどれか1つがバージョンアップをしたら
プログラム全体にバグが発生する可能性があるって事かなー。

静的リンキングを使うメリットは、上記のような心配がないね。
だから、バグが発生してもらっては困るプログラムでは静的リンキングを使ったりするね。

現在配布されているプログラムは動的リンキングのものが多いんじゃないかな。