
コンピューティングにおいて、プラグイン(pluginとも綴られる)、アドイン(addin、add-on、addonとも綴られる)、または拡張機能とは、既存のソフトウェアシステムの機能を、システムを再構築することなく拡張するソフトウェアコンポーネントのことです。プラグイン機能は、システムをカスタマイズできる方法の 1 つです。[ 1 ]
アプリケーションがプラグインをサポートする理由は多岐にわたり、以下のようなものがあります。
さまざまなカテゴリのアプリケーションにおけるプラグインの使用例:

ホストアプリケーションは、プラグインが利用できるサービスを提供します。これには、プラグインがホストアプリケーションに自身を登録する方法や、プラグインとのデータ交換のためのプロトコルが含まれます。プラグインはホストアプリケーションが提供するサービスに依存しており、通常は単独では動作しません。逆に、ホストアプリケーションはプラグインとは独立して動作するため、エンドユーザーはホストアプリケーションを変更することなく、プラグインを動的に追加および更新できます。[ 10 ] [ 11 ]
プログラマーは通常、プラグインを共有ライブラリとして実装し、実行時に動的にロードします。HyperCardも同様の機能をサポートしていましたが、より一般的にはプラグインのコードを HyperCard ドキュメント (スタックと呼ばれる) 自体に含めていました。そのため、HyperCard スタックはそれ自体で完結したアプリケーションとなり、エンドユーザーが追加のインストール手順を必要とせずに実行できる単一のエンティティとして配布可能になりました。プログラムは、 PythonやLuaなどのスクリプト言語で記述されたシンプルなスクリプトファイルのディレクトリをロードすることによってプラグインを実装することもできます。
ウェブブラウザのコンテキストでは、ヘルパーアプリケーションは、IrfanViewやAdobe Readerのように、ブラウザの機能を拡張する別のプログラムです。[ 13 ] [ 14 ]ヘルパーアプリケーションはアプリケーションの機能を拡張しますが、ホストアプリケーションのアドレス空間にロードされる一般的なプラグインとは異なり、ヘルパーアプリケーションは別のアプリケーションです。アドレス空間が別になっているため、拡張機能は、アドレス空間を共有している場合のように、ホストアプリケーションをクラッシュさせることはありません。[ 15 ]
1970年代半ば、EDTテキストエディタはUNIVAC Series 90メインフレームコンピュータ用のUnisys VS/9オペレーティングシステム上で動作していました。これにより、メモリ内の編集バッファにアクセスできるプログラムをエディタから実行することが可能になりました。[ 16 ] プラグイン実行ファイルは、エディタを呼び出してテキストを検査および変更することができました。ウォータールー大学のFortranコンパイラは、これを利用してFortranプログラムの対話型コンパイルを可能にしました。
プラグイン機能を備えた初期のパーソナルコンピュータソフトウェアとしては、 1987年にリリースされたApple Macintosh向けのHyperCardとQuarkXPressが挙げられる。1988年には、Silicon Beach SoftwareがDigital DarkroomとSuperPaintにプラグイン機能を搭載した。