• ベストアンサー

OCXとは?OLE?解説が読みこなせません…

社内のドキュメントを整理していたところ、 「開発に必要なAPIをOCXの形式で提供します」 と記載があり気になって調べてみたのですが、解説が 理解できませんでした。 "OLE"やら"カスタムコントロール"などの言葉で説明されて おりましたが、調べれば調べるほど本筋から脱線して、 気付いたら全く違う用語を調べてしまうという始末です。 イメージとして、どのようなもの(機能?)かを教えてください。 拡張子がocxであることまでは理解できました (これを「理解」とは言わないと思いますが)。 宜しくお願いします。

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

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

失礼な表現、記載、誤記等ありましたらご容赦ください。 話が大分逸れてきましたがお付き合いします。 >私なりの理解(想像)としては、 … >Excelのファイルの拡張子は「doc」や「xls」となっているが、 >単独でファイルを開くことができる。その理由は、Windowsが >ファイルの関連付けを行うことにより、「doc」や「xls」といった >拡張子をコンピュータが理解できる形式に翻訳しているから。 少し違います。主に動くのは「***.exe」のプログラムです。そしてそれはCPUが直接理解できる2進数の命令の集まりです。これを機械語とかマシーン語と言います。そして「***.doc」や「***.xls」は単なるアプリのデータを意味します。そちらの方はアプリの理解できる形式のデータでなければなりませんが主データ部分は人が理解できるデータでなければなりません。 実際に説明するために小生の現在バージョンのOffice 2007のWordやExcelのデータに合わせて説明します。 現在のWordやExcelはデータも複数の拡張子を使っていて最新は知りませんが小生のOffice 2007では「docx、xlsx」が主なOffice 2007のバージョンのデータであり2007のソフトで保存した場合のこの拡張子となります。 小生はOffice2007なのでその場合は正確には例で言えば「家計簿.xlsx」というExcel2007のバージョン用の拡張子のデータをクリックするとコンピュータはxlsxでそれに関連付けされているプログラム「EXCEL.EXE」というプログラムをRAM上に呼び込みバトンをそのプログラムに渡してそのプログラムに従ってCPUが処理しデータを更にRAM上に読み込むという手続きを取ります。その後Windowsにバトンを戻します。 「exe」と言うファイルだけが多分唯一の実行形式、PCにそのまま取り込んでもよい形式の機械語のデータで人にはまったく理解できない形式のデータの塊です。 本来は「exe」でなくてもよく、RAM上にプログラムがあればいいだけです。その例は後で説明します。(*1) 「スタート」ー「ファイル名を指定して実行」で「cmd」と入力してOKするとコマンドプロンプトというコンソールがでます。 C:\Documents and Settings\「ユーザーアカウント」>_ とコマンドプロンプトと言うものが出ます。 これは言わば対話型のプログラム、実際はコマンドを操るコンソールでPCは人に分かるコーディングをCPUに理解できるように変換して最終的には機械語のプログラムが処理します。その処理もすべて専用プログラムが行っています。 このコマンドプロンプトのコンソールで続けて、英語の半角英文字で特定キーを[Enter]など[ ]で表記すると dir[Enter] でそこにあるフォルダやファイルを表示します。 これはDOSから引き継いだ命令で「ディレクトリ」というコマンドの英語の略字命令です。本来今のWindowsならfilesにしたいところですが経緯があるのでこのコマンドです。 Windowsのフォルダを開いて中のデータを覘く操作です。 もう少し遊んでついでに c:\.....>help[Enter] キーインでそこで使用できるコマンドを表示してくれます。 下手に操作するとデータをこわしますのでこんなのがあるんだ位理解してください。 c:\.....>exit[Enter] キーインでこのコンソールを閉じてください。 なぜこんなものを紹介したかと言うとバッチファイルと言う機能があって ***.bat で上記のコンソール上で動くコマンドの一部はメモ帳で作って***.batとすると これも実行してしまいます。 それはソースコードを一行ずつ機械語に変換して実行されています。 コマンドプロンプトとは少し違いますがこのバッチファイルはワンステップずつ実行されOSを構築する前にこの技術が使われていてWindowsの基本ドライバーを組み込んでいます。 一部のInternetや Home pageで使われるJavaやJavaScriptと呼ばれるものに一行ずつ機械語に変換するインタープリタ(英語で翻訳者の意味)系のプログラム言語と完全に機械語(exe)ファイルにしてしまうプログラム言語(コンパイラ系→.exeにする)が現在は混在しています。 Internet Explorer 8くらいまではHPやその他のJava、JavaScriptなどはインタープリタ系もしくはコンパイラ系と混在していて、IE9位からやGoogleChromeではコンパイラ系で、後者になりそちらに移行しつつあります。 初期のPC(1980年代のPC)はインタープリタの「BSAIC」で動くPCが殆どでした。 現在でもVisual Basic(コンパイラ系)以外のBasic言語などでインタープリタが使われているようです。 このインタープリタ、翻訳者とは人の分かるソースプログラムリストを一行など部分的に機械語に変換してRAM上に展開して実行しています。 何が違うかと言うとRAMの消費量が違います。 実際にプログラムとして動いているのは機械語と呼ばれる2進数の集まりでPCを扱う人は16進数で扱っています。 なぜ、16進数かと言うと2の倍数だから2進数に変換し易いメリットがあります。「0xFFFFFFFF」で最初の0xは16進数であることを示し、32bitのすべてのビットに1が立っていることを示します。Fは10進数の15になり、0x10は10進数の16を表しています。A=11、B=12、C=13… 今は、RAMはXpでは全RAMが512kB位から動いていますがシステムが幾分食ってその場合で480kB位がユーザーエリアとなります。 RAMが少量の場合はインタープリタ系が有利になります。 と言う訳でXpサポートが完全に切れる位からのIEのバァージョンのJava系言語もコンパイラ系になってしまうと思います。もうなっているかもしれません。 小生は意図的にIE9にはバージョンアップしていません。 そしてプログラムですらHDD上にある時は単なるデータであり、「.exe」はCPUが直接読んでも理解できるデータであると明言するためのもので、PCが「ワードデータ.docx」などをクリックするとdocxに対応しているプログラム「Word.exe」がPCのRAM上に読み込まれ、そのプログラムがデータを読み込んでいます。 そして、大よそのプログラムは事前にユーザーがインストールしていなければなりません。 インストールしてユーザーが意識して使うものは「スタート」-「すべてのプログラム」の中にショートカットが作られて起動できるようになります。 実際にユーザーがインストールして使うアプリケーションプログラムはローカルディスク(C:)の中の「Program files」フォルダにインストールされるのがWindowsでは普通です。システムで使うプログラムは「Windows」フォルダにさらにNTFSであればさらにその中の「System32」フォルダにインストールされています。 そして、ユーザーのデータは「マイドキュメント」フォルダーに入れて管理しています。 今のPCが健全な状態ならば [Ctrl]+[Alt]+[Del]でタスクマネージャが起動できます。 「アプリケーション」タブはデータがあるので分かりませんが「プロセス」タブをクリックするとほとんどのプロセスは***.exeです。 これが今動いているプログラムです。 さてこの状態で、「スタート」-「すべてのプログラム」-「Microsoft Office」-「Microsoft Office EXCEL 20**」を起動してみてください。 タスクマネージャのプロセスに「EXCEL.EXE」が登場してメモリ使用量が表示されます。 それがEXCELの実行プログラムが消費しているRAMの量です。EXCELのセルにデータを追加するとその量が増えていきます。 (*1)のところですがここで見れるプロセスの下の方System、System Idole Process となって「.exe」になっていない部分があります。 SystemはWindowsやBIOSの基本プロセスのプログラムがあります。 これらはWindowsがあらかじめシステムで確保した領域やOSのベースのプログラム等の領域です。 タスクマネージャは 「ファイル」-「タスクマネージャの終了」で閉じてください。 APIですがあまり考えないで結構です。WindowsXpがNT系のプラットフォームと言うだけでプログラマーは例えばMACならMACの環境でプログラムしなければなりません。と言う意味にとってください。 プログラムを作る人は動作させたいOSの条件下と同じプラットフォームで作成しなさい。程度の意味でありWindowsであれば今はほぼVista、7含めNTFS系フォーマットでおそらく同じ系統のプラットフォームです。 MSサポートタスクマネージャ ↓↓

参考URL:
http://support.microsoft.com/kb/323527/ja
pacioli
質問者

お礼

お礼が遅れまして大変申し訳ありません。 ご指摘されたように、かなり当初の質問からかけ離れて しまいましたが、懇切丁寧にご教示くださいまして とても感謝しております。見ず知らずの相手に、ここまで 詳しく、かつ優しく指導いただき、感謝してもしきれない ほどの気持ちでいっぱいです。 私の職場はコンピュータを扱ってはおりますが、職種柄 細部(Uncle_John様からすれば、基礎中の基礎かも しれませんが)まで知る必要もないですし、また「知りたい」 と思っても自分自身が理解できるような環境にはありません。 …もちろん、同僚に聞けば親切に解説はしていただけるのですが、 専門用語が多いため、調べれば調べるほどドツボにはまり 得られることが少ないことが多々あります。そのため、 コンピュータについてはブラックボックスとして利用するもの として諦めかけていた矢先ではあったのですが、やはり 無責任な知識欲には勝てず、こちらで質問してみた次第です。 OCXやOLEの解説が理解できない、ということでご相談に お付き合いいただきましたが、コンピュータサイエンス (という領域なのでしょうか?)の解説を含め、連想ゲームの ように湧きでる私の疑問点にも明快にご回答賜り、心より 御礼申し上げます。キーボード上でタイプする文字のみで 感謝の意を伝えること自体に強い違和感を覚えるほどに Uncle_John様には感謝しきれません。が、どうぞ私の心境を お察しいただけると幸いです。 ありがとうございました。

その他の回答 (4)

回答No.4

失礼な表現、記載、誤記等ありましたらご容赦ください。 周知でしたら済みませんがまず、基本を説明します。 用語説明で充分と思ったのですが基礎を押さえてください。 PC:パソコン、CPU(MPU)と言うセントラル・プロセッシング・ユニット(中央処理装置(大型コンピュータ)、PCではチップになっていてマイコンともいう)とメモリー(RAM/ROM)、及びそれを支える周辺記憶装置(ハードディスク、USBフラシュメモリー)およびユーザーが具体的にやりとりを行う装置、モニタやキーボード、PCではマウス等で構成されています。 何故こんな話を持ち出したかと言えばファイル名拡張子です。 PCは基本的に2進数しか理解しません。対して人は文字でないと理解できません。それをインターフェイスしているのが大雑把にいえばOSです。 まず、PC用語のファイル名拡張子を押さえておきます。 例として「paint.exe」とかで「exe」が主に実行できるプログラム、実行ベースのプログラムを意味する拡張子です。 「paint」の部分は任意で人が分かる言葉、Word、Excel、Paintになります。PCはどう理解するかと言うと後ろの「exe」でPCはこれを見て実行可能なプログラムであることを理解します。プログラム名だけではデータかプログラムかは区別出来ません。この場合「exe」は拡張子というファイルの名の一部です。 このファイル名拡張子により何のソフトのデータかあるいはプログラムか、それともそれをサポートまたは、機能拡張するためのプログラムであるソフト的なパーツであるかを理解します。そして人の分かる名前はPCにとってはデータやプログラムの識別名になります。 普段は誤操作を防ぐためWindowsでは拡張子は見えないWindows上で拡張子で特定のアイコン表示となっています。 拡張子はxls,doc,ocx,dll 他沢山ありソフトのデータ(EXCEL→xls,Word→doc)やアプリケーションを支援する単独では動かないプログラムでパーツの「***.ocx」「***.dll」などが存在し、どんな機能のパーツか、データかPCが理解できるよう拡張子が必要です。 本来は、ファイル名拡張子「exe」を持ったプログラムが主に実行可能なプログラムなのですがWindowsでは拡張子の関連付けによって写真やワードデータをクリックするとjpgやdocに関連付けられたプログラムが起動し開くことができるようになっています。 これが返って誤解を与えているようですがあくまでもJPGの写真であればクリックされたことで、その拡張子に関連付けられたソフトをPCが呼び出しそのデータを読み込んで処理を開始します。 これ位は押さえておかないとパソコン用語の説明そのものが理解できないと思います。 PCの用語は日本語にすると返って分からないものもあります。 そういう場合は英語にも注意して見てみます。 アプリケーションプログラムとは応用プログラムで実際にユーザーが必要となるプログラムです。 「システムプログラム」のOS、及び付随(ユーティリティとも言うが死語?)のものとは異なります。 アプリで何となくはご理解いただいていると思います。 Word,Excelもアプリになります。 以上を踏まえて **** IT辞典から OLE【Object Linking and Embedding】:Windowsにおいて、アプリケーションソフト間でデータを転送・共有するための仕組み これはほぼ説明の必要はないかと思います。 ==== 念のため英語を見るともっと分かります Object(対象、目標) Link(連結する) Embed(埋め込む) これらを纏めて『アプリケーションに埋め込まれ、相互間でデータをやり取り、または共有するもの、仕組み』となります。 **** IT辞典から OCX【OLE Custom Control】:OLE 2.0に準拠したソフトウェア部品。正しくは「OLEコントロール」だが、拡張子が.ocxであることからこう呼ばれる ==== Custum(慣例、お客? カスタム・メイドとかカスタマイズ→特定顧客に作った、顧客のニーズに合わせた) まとめると特定顧客に作られたOLEコントロールのファイル名拡張子となります。 勿論、公開してしまえば別ですが社内で使うなどすれば特定ユーザー専用のカスタムメイドなコントロールとなります。 コントロール?←単独では動くことのできないプログラムでパーツです。 ここでAPIを押さえておきます。 *** IT辞典から API【Application Program Interface】(プログラミングインターフェース) あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に使用できる命令や関数の集合のこと。 とあります。 『プラットフォーム』、ん…躓きそうですがこれは小生から説明しておきます。OSのベース、骨格、車で言えばシャーシ、フレームと言ったところでしょうか? 「WindowsXp」のマイコンピュータ右クリックのプロパティで「詳細タブ」の「環境変数」ボタンを押します。戻りはキャンセルで ここで、OSを見るとWindowsNT(WindowsXpの場合)とあります。 少なくともXpはNT系のプラットフォーム、OSの更なる枠組み、大分類、ベースの様なものです。 =========== 以上を全部纏めて大雑把に無理やり説明文にすると 「Windowsのアプリケーションに組み込んで使う命令や関数の集合体のプログラムパーツをOLE 2.0のやり取りするためのルールに準拠した形でOCXと言う拡張子(PCが何のパーツかどういう目的のパーツか理解するために必要)で提供するのでそれをアプリケーションに組み込んで使ってください。 そうすればアプリケション間でデータのやり取りが出来ます。」 となります。 組み込まれる方、ソフトにも組み込む仕組みが必要です。 dllはこれも単独では動かないプログラムでパーツです。 ダイナミック・リンク・ライブラリの略だったと思いますが意味は必要があればご自分で調べてみてください。(英語の部分を抑えるだけでも半分は行かなくても2~3割は理解できるかと思います) 後は使って覚えるしかないと思います。

pacioli
質問者

お礼

大変ご丁寧に解説していただき、ただただ感謝しております。 PCの動作について、かなりイメージをつかむことができました。 いかに、これまで基本原理を知らずにPCに触れていたかと 恥ずかしい限りです。 Windowsのプログラムが実行される様子について、 >本来は、ファイル名拡張子「exe」を持ったプログラムが主に >実行可能なプログラムなのですがWindowsでは拡張子の >関連付けによって写真やワードデータをクリックするとjpgや >docに関連付けられたプログラムが起動し開くことができる >ようになっています。 >これが返って誤解を与えているようですがあくまでもJPGの >写真であればクリックされたことで、その拡張子に関連付け >られたソフトをPCが呼び出しそのデータを読み込んで処理を >開始します。 …と、ご記載いただいた箇所が、よく理解できませんでした。 私なりの理解(想像)としては、 本来、Windowsは拡張子が「exe」のファイルのみを実行ファイル として単独のプログラムとして動作しない。しかし、Wordや Excelのファイルの拡張子は「doc」や「xls」となっているが、 単独でファイルを開くことができる。その理由は、Windowsが ファイルの関連付けを行うことにより、「doc」や「xls」といった 拡張子をコンピュータが理解できる形式に翻訳しているから。 …と解釈しましたが、大枠正しいでしょうか? また、WordやExcel、bmpやjpgのファイルを実行する際に、 これらのファイルとOSとの間でAPIが登場してくるのでしょうか? IT辞典の定義によると、Windowsで何かを開発するときに APIが必要となってくるようですが、Officeや汎用ソフトを 使用するときには、APIの出番はないのでしょうか? あまり興味の対象ではなかったコンピュータについて 好奇心が強くなってきたので、疑問を抱いた次第です。 ご回答に対して、不躾に質問をしてしまい恐縮ですが ご指導いただけると幸いです。

回答No.3

失礼な表現、記載、誤記等ありましたらご容赦ください。 前回の回答は、リンクはこりごり、と言う人に失礼な回答だったかもしれません。 大雑把な機能を知るにはこのリンクがお薦めと言う意味でつけさせて頂きました。 現状で、細かく説明してもdllに躓いたり堂々巡りで同じことです。 前回回答のリンクは前半は出来るだけ一般の人に比較的分かりやすい言葉で概要を説明してあります。 後半は躓く言葉もあると思いますが大雑把でもその目的や意味を理解して読むのと、理解しようとして読むのでは差があります。 小生は前回のリンクがビジネスで使う方には一番わかり易かろうと思い添付いたしました。 ご理解ください。 以上

pacioli
質問者

お礼

お気遣い、ありがとうございます。 私自身、正確な知識というよりは、概念を 理解したいので、お心遣いに感謝しております。 コンピュータって難しいですね。 思わず「知らぬが仏」というテロップが脳裏をよぎりました。 ありがとうございました m(_ _)m

回答No.2

失礼な表現、記載、誤記等ありましたらご容赦ください。 小生も、分からない用語沢山あります。 Win98時代にVB,VCでWindows用のプログラムを組んだことがありますがそれでもさっぱりでした。 分かるような?分からないような?面倒だから使ったちゃえ、と言う訳で試行錯誤は今も同じです。 小生がごちゃごちゃ言うより以下の方がわかりやすいかとおもいます。 MS資料は機能の説明が多すぎてそもそも何なのかの説明が不足気味です。 その心境、ご察し申し上げます。 ちなみに、ActiveXの代表選手はおそらく表示していると思いますがAdoveFLASHのアップデートをオンライン上で行う指示が時々出てくるかと思います。 ネットを介したFlashインストーラそのものも含めActiveXのようです。 以下ご参考 IT用語辞典→OLE http://e-words.jp/w/OLE.html IT用語辞典→OCX http://e-words.jp/w/OCX.html IT用語辞典→Activex http://e-words.jp/w/ActiveX.html

pacioli
質問者

お礼

御礼が遅れまして恐縮です。 リンク先の情報は既に目を通していたのですが、 改めて見たところ、やっぱり解りません。 習うより慣れろ、というところなのでしょうか…。 もっとも、解らないことに慣れてしまっている感も 否めないのですが。 ありがとうございました。

  • hogya
  • ベストアンサー率67% (49/73)
回答No.1

拡張子がocxのファイルで提供されるというとこまでは了解なのですね。 で、これはVisual Basic .NETより前の世代(Visual Basic 6等)で主に使用されていたもので、ActiveXコントロールと呼ばれるものです。 その他、カスタム・コントロールとかユーザーが独自に作成したという意味でユーザコントロールとも呼ばれます。 いわゆる、フォームに貼り付けて使用するなんらかの目に見えるユーザーインターフェイスを持ったものです。 例えば、テキストボックスに「数字以外の入力を行えない」というカスタム要素を加えて作成されたもの、とかと言えばピンときますでしょうか。 もしくは、ブラウザを通してWebサーバーからコントロールをダウンロードして使用する場合もあります。ご質問ではシステムのアーキテクチャが不明なのでどちらの用途かはわかりかねます。 dllの拡張子の付いたファイルがダイナミックリンクライブラリと呼ばれて一般的にユーザーインターフェイスを持たない共有コードの集まりとして使用されますが、ocxで提供ということは何らかのユーザーインターフェイスを持つのではないでしょうか。 もちろん、ユーザーインターフェイスを持たないコードも含めることは可能ですので、単に開発の都合上の理由の場合もあるかも知れません。 (そういう場合はなぜocxでの提供なのか開発上の理由を聞くのは全然恥ずかしいこととかではないです)

pacioli
質問者

お礼

ご回答ありがとうございます。 恥ずかしながらActiveXやdllという用語も理解できていないのです。 いずれもインターネットで調べてみたのですが、ocxを調べてみた ときと同様、解説を読んでいるうちにおかしな方向へ進んでいって しまいます。 dllについては、何かの処理をするときに呼び出されるファイルと ざっくり考えていますが、具体的にどのような処理をするときに どのdllが呼び出されるかが解りません(そもそも間違った理解を しているのかもしれませんが)。 ActiveXは、マイクロソフトが決めたインターネットに関する技術の 総称らしいですが、何が便利となるのかが解っておりません。 特段、プログラミングを生業としている訳ではありませんが、 あまりにも漠然としたまま、IT用語を知ったかぶりして歳を重ねる ことに不安を感じております。よろしければ、今少しお付き合い いただけると幸いです。

関連するQ&A

専門家に質問してみよう