プラグイン

提供: miniwiki
移動先:案内検索

プラグイン (plug-in)

概説

通常、コンピュータ上で動作するプログラムは、中心となるプログラムコードがサブルーチンを呼び出して処理を進める形で構成される。処理の基本の流れは同じでも、処理内容の詳細が異なるアプリケーションコードを作る場合には、いくつかのサブルーチンを入れ替える事により実現する。例えば、「ビットマップ画像ファイルを読み込んで画面に表示をする」というアプリケーションの場合、ファイル読み込みのサブルーチンを差し替える事により、「PNGを読み込んで画面に表示をする」プログラムや「JPEGを読み込んで画面に表示をする」プログラムなどのバリエーションを作る事ができる。

多くのソフトウェアでは、この差し替え可能な部分のサブルーチンの呼出し手順は公開されておらず、アプリケーション・コードを開発した者だけが差し替え作業ができるようになっている。しかし、上記の画像ファイルのフォーマットの例のように、必要とされる全てのサブルーチンを大元の開発者が用意できるとは限らない場合がしばしば発生する。このような場合、サブルーチンの呼び出し手順を規格化して公表し、さらにサブルーチンの差し替え方法を提供すれば、大元の開発者以外の者もアプリケーションの機能を変更できるようになる。

このように誰でも差し替え可能になっているアプリケーションコードの一部分を、プラグインと呼ぶ。

プラグインの機構を実現するためには、次の点を明確に規格化しなければいけない。

  • サブルーチンに与えるパラメータのフォーマットと意味の定義
  • サブルーチンから受け取るデータのフォーマットと意味の定義
  • サブルーチンを呼び出す手順
  • サブルーチンが呼び出されるタイミング

また、プラグインとなるサブルーチンのコードを開発しやすいように、プラグイン用のライブラリが大本の開発者から提供される事が多い。

コンパイラを用いて作られたアプリケーション・コードでは、原則としてサブルーチンの実行メモリアドレスはコンパイル時に決定されてしまうため、サブルーチンの差し替えをする度に再度コンパイルが必要となる。プラグインを利用する者に開発者と同じコンパイラを用意させるのは現実的ではないので、プラグインの場合、ダイナミックリンクライブラリと呼ばれる機構を使って、アドレスを間接的に参照する事によりこの問題を回避する。

ダイナミックリンク・ライブラリは、WindowsではDLL形式が、macOSLinuxなどのUNIX / Unix系OSではso形式が用いられる事が多い。これは、OSの開発者が規格化したサブルーチン呼び出し手順であり、OSがその呼出しを実現するライブラリなどを提供しているので、プラグインを開発する者もプラグイン機構を開発する者も簡単にかつ安定して利用できるからである。

プラグインの形式

プラグインとして動作するソフトウェア

主要なプラグイン対応ホストソフトウェア