ダイナミックリンクライブラリは、WindowsではDLL形式が、macOSやLinuxなどのUNIX / Unix系OSではso形式が用いられることが多い。これは、OSの開発者が規格化したサブルーチン呼び出し手順であり、OSがその呼び出しを実現する標準APIなどを提供しているので、プラグインを開発する者もプラグイン機構を開発する者も簡単にかつ安定して利用できるからである。プラグインを実装する側では特定の名前と呼び出し規約を持つサブルーチンを実装してシンボルをエクスポートしておき、プラグインを利用するホストアプリケーション側では実行時にモジュールをロードして名前の文字列をもとにサブルーチンのアドレスを探索し、見つかった場合はそのサブルーチンのアドレスを利用して呼び出す、というダイナミックバインディングの技術が用いられる。
Windowsではプラグインの実現にCOM/ActiveXテクノロジーが用いられていることもある。注入されるコードは単純なサブルーチンではなく、オブジェクト指向のインターフェイスを実装したクラスとして実現される。.NET Frameworkではプラグイン機構の実現を容易にするためのフレームワークとして、バージョン4.0でManaged Extensibility Framework(英語版)が追加された。
なお、スクリプト言語の処理系をアプリケーションに組み込んでおくことで、プラグインと類似の機構を実現することもできる。 アプリケーションの外部からコードを読み込んで実行することで、サードパーティ製のプラグインを利用できるようにすると、コードインジェクションやコードの改竄によって、アプリケーションが不正に使用されるというセキュリティ上の問題が発生する可能性が大幅に高まる[3]。あらゆる可能性を考慮しなければならなくなるため、アプリケーションの動作検証も難しくなる。アプリストアにおけるプライバシーとセキュリティの品質維持の観点から、アプリケーションのパッケージ外部にあるコードを動的に読み込んで実行しないようにポリシーを定めているプラットフォーム[4]や、ユーザーの同意が得られた場合のみアドオンや拡張機能を取得できるように定めているプラットフォームもある[5]。 実際に、Adobe Flash Playerのプラグインはセキュリティホールの温床となっており[6]、iOSプラットフォーム上では最後までサポートされなかった。
セキュリティ
プラグインの形式
Adobe Illustrator用プラグイン
Adobe Photoshop用プラグイン
Netscapeシリーズのウェブブラウザ用のプラグイン
Mozilla Firefox用のプラグイン - 関連:拡張機能 (Mozilla)
Winamp用のプラグイン
Susieプラグイン
Sleipnirプラグイン
Movable Typeプラグイン
Eclipse用のプラグイン
Apache Maven用のプラグイン
LightWave (3次元コンピュータグラフィックス)
VSTインストゥルメント (DTM)
AU (DTM)
DirectXインストゥルメント (DTM)
TDM (DTM)
HTDM
RTAS (DTM)
プラグインとして動作するソフトウェア
Adobe Flash Player
Adobe Shockwave Player
Adobe Acrobat Reader
QuickTime
Windows Media Player
Microsoft Silverlight
Real Player
電子国土Webシステム
3DMLW
主要なプラグイン対応ホストソフトウェア
Internet Explorer
Netscapeシリーズ
Mozilla
Firefox
Opera
Safari
Google Chrome
シイラ
Susie
Windows Media Player
Winamp
Notepad++
脚注
出典^ DLL の境界を越えて CRT オブジェクトを渡す場合に発生する可能性のあるエラー 。Microsoft Docs
^ C++ ライブラリ サポート 。 Android NDK 。 Android Developers
^ セキュリティに関するヒント 。 Android デベロッパー 。 Android Developers
^ アプリの中核品質 。 Android デベロッパー 。 Android Developers
^ Microsoft Store ポリシー - UWP applications 。Microsoft Docs
^ アップル、旧バージョンの「Adobe Flash」プラグインを遮断 - CNET Japan
関連項目
ダイナミックリンクライブラリ