広告

ラベル COM の投稿を表示しています。 すべての投稿を表示
ラベル COM の投稿を表示しています。 すべての投稿を表示

2014年11月2日日曜日

.NET開発者が必要最低限のCOM知識を学ぶための書籍「COM Programming with Microsoft .NET (Developer Reference)」

今は.NET FrameworkがWindows系の主な開発プラットフォームになっていますが、VB6で実装されたAPを.NETに移植する場合等、まだまだCOMの知識が必要となる場合があります。

また.NET Framework 1.1のマイクロソフトサポートが終了したことで、.NET 1.1のAPを.NET 4.Xに移植するという案件も増えています。
.NET 1.1のアプリ自体が元々VB6のアプリを移植したもので、実は.NETアプリからActive Xコンポーネントを呼び出していた、というような一見COMとは関係無いように見えて、実はCOMの知識が必要というようなケースもあります。


■今更COMを勉強し直すのも…という人におすすめ書籍あり



とは言え、今更COMを一から勉強し直すのも費用対効果に合わないのも事実です。上記のようなケースで.NET開発者が必要最低限のCOM知識を学ぶための書籍として、「COM Programming with Microsoft .NET (Developer Reference)」がオススメです。


COM Programming with Microsoft® .NET: O'Reilly - Safari Books Online








目次は上記サイトを参照してもらえればと思いますが、.NET開発者が最低限理解すべきCOMやCOM+の仕組みや、.NETからCOMにアクセスする際の実装方法等がまとまっています。

「COM Programming with Microsoft .NET (Developer Reference)」を読むことで、古いプロジェクトファイル内にinteropとかaxinteropの名前のdllファイルが存在する理由もわかるようになると思います。

Safari Books Online会員であればWeb上で本書を読むことも可能ですが、Amazonマーケットプレイスで古本を安価で買うことも可能です。COMに興味のある.NET開発者の人は読んでみてはいかがでしょうか。

残念ながら本書の日本語訳はないと思いますが、平易な英語で書かれており洋書を読み慣れていない人でも大丈夫だと思います。



2014年7月20日日曜日

最初の仕事はVB6で開発支援ツールの実装【SE業務経歴振り返り】

一応十数年SEをやってきましたので、いろいろな仕事を経験しました。読者の方の何らかの気づきなればと思い、過去の業務経験を振り返ってみたいと思います。


■最初の仕事はVB6で開発支援ツールの実装


SEとして初めて担当したのは、主にC言語で記述された超巨大システムでした。
とはいえ社会人1年目のSEがいきなりシステム全体を把握できるはずもないので、私が担当したのは開発作業をいかに効率化するかという仕事でした。

現在は、アジャイル開発などで必要なドキュメントを減らしていく方向ですが、このシステムはガチガチのウォーターフォール型開発です。とにかく設計書や試験項目表等、作成するドキュメントも大量になります。

そこで私は少しでもドキュメント作成の工数を減らせるよう、C言語のソースコードを解析して、Excelの試験項目表等のドキュメントを自動生成するツール作成を担当しました。

確かVB6で実装したと思います。C言語のソースコードを構文解析するんですが、コンパイラのような大げさなものではなく、ソースコード内の特定のキーワードやカギカッコ、改行等を元に、必要なドキュメントをExcelファイルとして自動的に作成する、というようなツールだったと思います。


■学んだ技術はVB6とOfficeオートメーション


技術的には、VBからExcelのオートメーション機能を使ってExcelを操作する仕組みで実装しました。

とにかく最初の仕事で、まわりにVBやExcelオートメーションについて詳しい人もあまりいなかったので試行錯誤かつ自己流開発でした。


■COMという技術に興味を持つ


この仕事でVB6やオートメーション技術の背景にはCOMというテクノロジーがあるらしい、ということがわかり、以下のような本を読んだりして自分なりに色々勉強しました。



とは言えCOMという技術は、当時の自分には理解しきれませんでした。今から思うと例えば以下の様なもっとCOMの定番の本を読んでいればもう少し理解が深まったかなという気もします。




2014年7月19日土曜日

IEアドオン(ブラウザ ヘルパ オブジェクト・BHO) をIE11拡張保護モードで動作させる情報源まとめ

Windows8及びIE11は更にセキュリティが強化され、拡張保護モードという概念が追加されています。
そのためブラウザ ヘルパ オブジェクト(BHO)で実装されたIEアドオンは、拡張保護モード有効時では動作しません。正確に言うと、IEから読み込まれることすらしません。

既存のIEアドオンを拡張保護モード有効時に動作させるための情報源をまとめておきます。


■拡張保護モードについて


英語ですが、拡張保護モードについてはこの記事が一番網羅的でわかり易いと思います。
Understanding Enhanced Protected Mode - IEInternals - Site Home - MSDN Blogs


MSサポートチームの人がもう少し噛み砕いたのがこちらの記事。
Blogs - Japan IE Support Team Blog - Site Home - TechNet Blogs



■ ブラウザ ヘルパ オブジェクト(BHO)について


そもそもIEアドオンをどのようにBHOで実装するかはこの記事が参考になります。

Visual Studio 2005 によるブラウザ ヘルパ オブジェクトのビルド

Microsoft Visual Studio 2005 と Active Template Library (ATL) を基に、C++ を使用して BHO を開発する内容になっていますが、Visual Studio 2008でも同様に作成できました。


■拡張保護モード有効時に IEアドオンを読み込ませるには?


Supporting enhanced protected mode (EPM) (Windows)
Loading ActiveX controls when EPM is active ...

にも記載されていますが、拡張保護モード有効時にIEアドオンを読み込ませるには、COM component categoryにAppContainer互換を示すGUID(59fb2056-d625-48d0-a944-1a85b5ab2640)を登録する必要があります。

具体的な登録方法(レジストリ操作)は

BUG: Component Category Registry Entries Not Removed in ATL Component

が参考になりました。


■アドオンがIEに読み込まれることと正しく動作することは別問題です


当然ですが、上記のCOM component categoryを正しく行ったとしても、アドオンがIEに読み込まれるようになるだけです。読み込まれたIEアドオンが、より制限された実行環境であるAppContainer内で正しく動作するかはまた別の問題であり、動作確認が必要です。想定通り動作しなかった場合はコード修正が必要になりますので注意して下さい。




2014年7月8日火曜日

WebアプリケーションでOfficeファイルを作成する業務要件を実装する際の注意点

 Webアプリケーションの業務要件で
  • サーバ上でExcel等のOfficeファイルを生成し、ブラウザからダウンロード可能とする
というのがよくあります。

 この業務要件を実現するために、サーバサイドの開発言語(ASP.NET等)からOfficeオートメーションを使って実装している場合がありますが、マイクロソフトのサポート外の実装方式になりますので注意して下さい。


 詳細は、以下のサイトで詳しいですが、

 http://support.microsoft.com/kb/257757/ja http://blogs.msdn.com/b/office_client_development_support_blog/archive/2012/04/12/1-office.aspx


 Officeオートメーションはクライアントアプリケーションから使われることを前提とした設定となっているため、場合によってはエラーや警告ダイアログを表示する場合があります。サーバから使われている場合、ダイアログが表示されてしまうと、そのダイアログを誰もクローズしないため、その後の処理がブロックされてしまうというのが一番の問題のようです。


■解決策は?


 解決策は

http://blogs.technet.com/b/sharepoint_support/archive/2014/05/07/office.aspx

の内容を参考にするか、サーバサイドでの動作が保証されたサードパーティ製品を使うということになります。