>>じゃぱざむ公式Twitter始めました!フォローよろしくお願いします!<<

COM(Component Object Model)とは何か?

COMとは簡単に言ってしまえばプログラムの型です。

と言われても難しいもので、私も最初よくわかりませんでした。

こんにちは!今井@ima_maru)です。

最近アルバイト中にCOMを勉強する機会が増えてきたので、アウトプットに解説を書こうかなと思います。

簡単な例えを挟みつつ解説していきます!

ではどうぞ。

COM(Component Object Model )とは何か?

COMとは、ソフトウェアの機能を外部から呼び出して利用する仕組みを定めた技術仕様です。

つまり、COMはある定められたされた型・モデルを意味します。

そしてCOMの型が利用されるのが、外部のプログラムを呼び出すときです。

これらは、ソフトウェアの拡張機能プラグイン(下で解説)に使われます。

COMとはコンポーネントオブジェクトモデルの頭文字をとっています。

  • Component : 構成要素
  • Object : オブジェクト
  • Model : 型

COMの読み方はコムです。

COMを使うと何ができるか?

COMを利用すると、既存のシステムに「+α」という形で新しい機能を付け加えることができます

どういうことかというと、今あるプログラムの状態はそのままに

  • こんな機能を追加したい!
  • こんな処理を挟みたい!

という要望をかなえることができます。

これらの機能を「プラグイン」といいます。

プラグインとは何か?

プラグインはソフトウェアやアプリケーションの部品(プログラム)です。

よく拡張子が「dll」となっているファイルを見かけませんか?

これはDynamic Link Library(ダイナミックリンクライブラリ)と呼ばれ、プログラムの機能の一部分として使われます。

私の表示では、アプリケーション拡張となっていて、まさにこの「拡張機能」こそがプラグインなのです!

プラグインをイメージでいえば、車のカスタマイズに似ています

車は、スピーカーをいいものに変えたり、タイヤを変えたりできますよね。

それと同じで、

  • Aさん用のカスタマイズ
  • Bさん用のカスタマイズ

といったように、その人だけに向けたカスタマイズができるようになります。

具体例でいえば、

  • 企業A「この処理はすこし危険だから、プログラム実行時に警告音が鳴るようにしたい」
  • 企業B「静かな場所だから、警告音が鳴ってしまっては困る」

といった場合があります。この時、プログラムそのものを変えるという方法ではだめです

それでは、どちらかの要望しかかなえることができません。

(もちろんプログラムを複製して新しく作るという手もありますが)

そこで登場するのが、このプラグインです。

  • 今あるプログラムをそのままに、新しい機能を加える。
  • プログラム単体で使ってもいいし、新しい機能を付け加えて使ってもいい。

こんなように、「必要な部分だけ」をプラグインとして付け加えることができるようになるのです。

COMを利用すれば、プラグインを作ることができる!

COMというのは、そもそも仕様です。プログラムの決められた構造や型というイメージがいいかもしれません。

例えば、iPhoneの充電ケーブルをiPadに挿すことはできますが、Androidのスマホにさすことはできませんよね。

当たり前ですが、これは「型が違うから」です。

iPhoneやiPadは同じApple社が作っていて、充電ケーブルの型があらかじめ決められているからうまく挿すことができるのです。

プラグインも同じで、型が違えば機能しません。

逆に言えば、型があってるのならばどんなプログラミング言語で作ろうが機能するんです。

その決められた型(モデル)がMicrosoft社が提唱していたCOMです。

そして、COMに従って作られたソフトウェアの部品をCOMコンポーネントと呼びます。

なので、プラグインもCOMコンポーネントです。

またこれらの特徴で、単体では動作しないという特徴を持っています。

下のdllファイルをダブルクリックしても動作しないのと同じで、何らかのメインのプログラムがあったうえで、その拡張機能として動作します。

COMコンポーネントはとても便利で、

ソフトウェアの機能の拡張以外にも、新規のソフトウェア開発においても活躍します。

それは、公開・販売されているCOMコンポーネントを組み合わせることができるからです。

これを利用すれば、

  • この機能は自分で作ろう
  • この機能は公開されているCOMコンポーネントを使おう

といったことができるようになり、生産性の向上につながります。

自分ですべての機能を作らなくてよいということになりますからね。

最後に

最近、プログラミング関係のアルバイトに採用していただいて、わからないことがたくさんです!

大学では習わない(?)COMやプラグインなどの知識もわんさか出てきます。

なので、実際の業務にかかわるような知識を、アウトプットがてら発信していけたらと思っています。

早く一人前になるために技術を蓄えていきます。

最後までご覧いただきありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です