• ベストアンサー
  • 暇なときにでも

プラグイン、ライブラリ、コンポーネント、モジュールの違いは?

プラグイン、ライブラリ、コンポーネント、モジュールの違いは? プログラムを行っている人にとっては初歩的な質問かと思いますが、プログラム開発で出てくるプラグイン、ライブラリ、コンポーネント、モジュールのそれぞれの違いってなんでしょうか? いずれも、あるプログラムをまとめたプログラムであると思っているのですが、何をどういう基準で分ければいいのかと疑問に思ってしまいました。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

実はとても良い質問だと思います。 おそらく、明確に答えられるプログラマはあまりいない (特にコンポーネントとモジュールの違いが) と思います。 順に説明していきましょう。 プラグインはあるソフトウェアを拡張するためのプログラムです。 プラグインは単体では動きません。 プラグインは「ソフトウェアを使用する人間が入れ替え可能なプログラムの一部のこと」と言えるでしょう。 プラグインで最も有名なソフトウェアとして、Mozilla Firefox を挙げます。 このソフトウェアの使用者は、Firefox のプラグインとして、各種拡張を自由に追加・入れ替え・削除が行えます。 (firefox では、「拡張」と例えば Adobe Flash Player のようなファイルの種類に応じて呼び出される別のプログラムという2種類のプラグインが存在しているので、注意してください) ライブラリは有用で汎用性の高い関数・クラス・その他を再利用可能な形でひとまとめにしたものです。 たいていの場合、ライブラリ単体では動きません。 プラグインとの違いは汎用性が挙げられます。 あるソフトウェアを対象として書かれたプラグインと違い、ライブラリは特定のソフトウェアを対象としてかかれていません。 誤解が生じかねないので具体例を挙げます。 例えば、Windows Media Player で YouTube を見られるようにするためのプログラムを書いた場合、それは Windows Media Player のプラグインと言えるでしょう。 一方、YouTube を見られるように、手続きを行う関数・クラスをひとまとめにしたプログラムを書いた場合、それはライブラリです。 この場合、ライブラリがアクセスするソフトウェアは固定ですが、ライブラリを使うソフトウェアは特定のモノが対象となっていないことに注意してください。 コンポーネントはソフトウェアの部品で、モジュールもソフトウェアの部品です。 モジュールはある手続き (関数やメソッド) とデータ構造をひとまとめにした部品です。 大抵の場合、モジュール単体でコンパイル可能ですが、動作はしません。 この説明だけだと、クラスとモジュールの違いがわからなくなりますが、一番大きな違いは、クラスはインスタンスとしてオブジェクトを生成しますが、モジュールは生成しない点でしょう。 コンポーネントはある機能を持ったプログラムの部品です。 大抵の場合、コンポーネント単体では動作しません。 非常に漠然とした回答で申し訳ないですが、モジュールを複数組み合わせた位のモノがコンポーネントと思っていただければありがたいです。 粒度的には プログラム (←これ単体でやっと動く) > コンポーネント > モジュール > クラス です。 さて、ココまでの回答ですが、全てちゃぶ台をひっくり返してしまいます。 業務のドメインや会社・組織、部署、チーム、はてはプロジェクトごとに、 コンポーネント、モジュール、その他もろもろの定義はぜんぜん違います。 はっきり言ってしまえば、どんなにえらい先生、専門家、スーパーエンジニアでも、これらの定義はまちまちです。 例えば、IT用語辞典 e-word において「コンポーネント」は「基本的に単体では使用できず」と書いてありますが、世界で始めて「コンポーネント」という概念を実装したのは Unix のパイプとフィルタであり、 当たり前ですが、ここで用いられている Unix の各種プログラムは単体で使用可能です。 ですので、実際のところは、あなたがこれくらいかなと思ったものがコンポーネントであり、モジュールです。 実のところ、勉強すればするほどわからなくなっていくお話ですが、漫然と過ごしてしまうと、このようなハードな疑問を抱けなくなってしまうかと思います。 どうか、これからも疑問を抱き続けてください。 最後に、まったくどうでもいい知識ですが、 世の中には Component Plugin Module というモジュールが存在しています。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

S_Katsuyamaさん 素晴らしい回答ありがとうございます! この様な回答をお待ちしていました。 > 実のところ、勉強すればするほどわからなくなっていくお話ですが、 そうなんです。 プログラムを書けば書くほど疑問が大きくなり、何が何なのかわからなくなってしまったので質問させて頂きました。 この様な回答を書ける方であれば、きっと素晴らしいプログラマかと思います。 一緒に仕事をしている人がうらやましいぐらいです。 > 世の中には Component Plugin Module というモジュールが存在しています。 そんな物があるんですね。知りませんでした。 いずれにしても本当にありがとうございました。

その他の回答 (1)

  • 回答No.1

ここに質問する前にネットで検索してね! プラグインとは コンポーネントとは モジュールとは ライブラリとは のキーワードで検索すれば説明サイトが見れます。それでわからない部分を聞いてください。、そうずれば >いずれも、あるプログラムをまとめたプログラムであると思っているのですが と言うアホナ質問にならないと思いますよ。コンピューター関係の用語は、学校で国語とか漢文とか英語とか習うのと一緒で、まず辞書で調べましょう。 例: 授業で This is a pen. と黒板にかかれたら、penとは何ですか? と質問する人はいますかね? ちなみに、それぞれ全く違う意味です。それぞれ元の意味があり、コンピューターの用語としては、このような意味になります。と言う説明になります。 例えば「ライブラリ」ですが「図書館」ですね。コンピューター用語としては、メインのプログラムから呼び出されるソフトの集合場所や、ソフトそのものを指します。 しかし、違う意味でも使われます。写真や動画の集めたフォルダーやアルバムを指します。これは、絵画や歴史的な資料をそろえている会館やオフィスなども指しますね。前後の文脈が重要ということですね。 >何をどういう基準で分ければいいのかと と言う事でこの質問は的を得て質問されていないので、「それぞれ意味が違います」と言う回答が正しかと思いますよ。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • ライブラリとAPI

    はじめまして。 すごく初歩的な質問ですが 誰かライブラリとAPIの違いを教えてください。 どちらもプログラムでよく使うものをまとめたものみたいですが両者の違いが分かりません。 またDLLはライブラリの一部なんでしょうか?

  • ライブラリとAPIについて

    はじめまして。 すごく初歩的な質問ですが 誰かライブラリとAPIの違いを教えてください。 どちらもプログラムでよく使うものをまとめたものみたいですが両者の違いが分かりません。 またDLLはライブラリの一部なんでしょうか?

  • 参照コンポーネント追加について

    VB.NETで別の人が作ったプログラムを読み込もうとしたところ、 「参照コンポーネント'AxMSComDlg'が見つかりませんでした。タイプライブラリを読み込めませんでした。ライブラリは登録されていません。」 「参照コンポーネント'Microsoft.Office.Core'が見つかりませんでした。」 「参照コンポーネント'MsComDlg'が見つかりませんでした。タイプライブラリを読み込めませんでした。ライブラリは登録されていません。」 「参照コンポーネント'StdType'が見つかりませんでした。タイプライブラリを読み込めませんでした。ライブラリは登録されていません。」 というエラーが出ています。 どうしたらこのエラーは解消されるでしょうか。 参照設定に追加しなければいけないと思うのですが、どうしたら追加できる でしょうか。教えてください。お願いいたします。

  • モジュールとは何ですか

    モジュールとは具体的には何を指しているのか、をお聞きします。 手元のカタカナ語辞典では 「プログラムを、それぞれ特有の機能を持ついくつかの基準単位に分割すること。また、その基準単位。」 と書いてありました。 そうすると、1つ1つのソースファイルを指しているように思えてきます。 いままで私が人がしゃべっているのを聞いてきたところでは、Windowsでいうところの、exeファイルやdllファイルを指しているような気がします。 「モジュール」という言葉は gooの新語辞典にも載っています。 また、コンピュータ用語辞典のようなサイトも見てみました。 それらによると、「ソフトウェア・ハードウェアの部品」だそうです。 しかし、例えば何のことをいっているのかが、分からないのです。 #ファイルなら何でもいいのだろうか。 この言葉の用例を教えていただきたいのです。 ============================ 過去の質問と回答より。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=302590 回答No.1の補足より。 >モジュールはAccessの標準モジュールのことです わたしはAccessのことをほとんど知らないので、ハテナです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=293234 こちらのNo.2の回答では、 dllとは「共通モジュール=ライブラリ」である、 という使い方ですので、例えばdllのことを指しているようです。

  • プラグインとアドオンの違いについてお教えください。

    プラグインとアドオンの違いが、わかりません。 調べると、プラグインは「ソフトウェアに機能を追加する小さなプログラムのことを指す場合が多い」と書かれていて、アドオンは、「ソフトウェアに追加される拡張機能のこと」なっていますが、パソコンに強くない私には同じ機能のように思えてします。 すみませんが、プラグインとアドオンの違いについて、お教えいただけましたら助かります。 よろしくお願いいたします。

  • 「プラグイン」の使い方

    ソフトウェアの機能拡張プログラムを意味する「プラグイン」について質問があります。 例えば 『Sample』と言うプログラムがあり、これの開発元は『Sample-API』を別途で提供しており、この『Sample-API』を使って『Sample』用のプラグインを作れるとします。 『Sample-API』にはクラスやメソッドのみ用意されているだけで、このAPIのみでは意味はありません。 これで作られたプラグイン全般に対してどう呼ぶのか?を友人と話したところ、 友人は「『Sample-API』を使ったプラグインだから、『Sample-APIプラグイン』でしょ」とのこと。 しかし、私は「『Sample』用のプラグインだから、『Sampleプラグイン』では」と考えています。 どちらで呼ぶのがよいのでしょうか?

  • Python クラスとモジュールの違いについ

    プログラミング初心者です。※初めてのプログラミングでPythonの勉強中です。開始2週間程度です!! Pythonにおける(プログラム一般における?)クラスとモジュールの違いが分かりません。 ■現状の認識 ・モジュール 「***.py」といったような一つのファイル 他のモジュールからimportすることによって使用できる ・クラス 「***.py」といった一つのファイルの中に「class」として宣言できる 他のモジュールからインスタンスを生成して使用できる ■疑問点 上記を使い分ける意味 上記を使い分けた時のメリット、デメリット ※すべてモジュールとして作成して、使用したいときにimportすればいいのでは?と考えています。 現状Pythonの知識しかありませんが、プログラミング一般の知識のような気がしています。 プログラムに詳しい方よろしくお願い致します。

  • モジュールとサブルーチン

    モジュールというとソースの中の機能の単位と思っていたのですけれども、共通モジュールとかは一つのプログラムでもモジュールと呼んでいます。プログラムになればサブルーチンだと思うのですが、モジュールとサブルーチンの違いは何ですか?

  • JavaScriptライブラリってそもそも・・・

    私はweb制作をはじめて3年たらずのwebデザイナーです。 プログラムはまったくと言っていいほど書けないので、アニメーションなどを実装したいときはwebで拾った著作権的に大丈夫なものを使いまわしています。 ほとんどjqueryライブラリを使ったものです。 最近はそのソースも少しは読めるようになり、少し手を加えられるようになりました。 そこで、かなり根本的な疑問がわいてきたのです。 ◆JavaScriptライブラリってそもそもなにが書いてあるものなのでしょうか? ※JavaScriptライブラリとはで調べたのですが、難しい言葉が多くて・・・ (jqueryとは具体的にどんなものが書いてあるものなのか。) ◆jqueryのアドオンとかjqueryのプラグインとか書いてあるのをよく見かけますが、これはなんのでしょうか?アドオンとプラグインは違うものなのでしょうか? ◆jqueryを読み込んで実行するためのスクリプトをソースに追加すれば意図した動きになりますよね。(アコーディオンメニューなど) ↓こういうもの=========== <script type="text/javascript"> $(function(){ // ここにコードを書いていく。 }); </script> これは「jqueryライブラリを使用して作ったプログラム」という言い方であっているのでしょうか? それともこのソースに追加するスクリプトのことをアドオンというのでしょうか? 無知で恥ずかしいのですが、この辺のことをきっちり理解できれば、もう少し自分のできる範囲が広がるのではないかと思い、質問しました。 よろしくお願いします。

  • オブジェクト指向開発とコンポーネント指向開発の違いに関して

    オブジェクト指向開発から派生した開発としてコンポーネント指向開発というのがあると思いますが、それらの違いがあまりはっきりわかりません。粒度がコンポーネントの方が大きい、プラットホームに限定されない、継承などの難しい(?)概念が省かれ簡略化された部品、再利用を前提としたプラグアンドプレイができるような開発とありますが、その他にどのような特徴があるのでしょうか?わかりやすく教えてください。