都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

Google Chrome Frame をチェックしていたら、BHO ( Browser Helper Object ) が気になってきた

 色々な検証していると、どうしてもいろいろなものに目移りしてしまいます。( ダメな性格です。 一つのものに中々集中できません。) 以前、『Google Chrome Frame のパフォーマンスをみてみた』で、Chrome Frame を試していたことを思い出したら、BHO を作ってみたくなりました。f:id:koogucc11:20131024231325p:plain

 BHO ( Browser Helper Object ) とは、

Browser Helper Object(BHO) とはInternet Explorerで使用するプラグインを第3者でも作成することができるようにする仕組み及びその仕組みによって生成されたCOMの事である。1997年に Internet Explorer のバージョン4より実装された。

ほとんどのBHOはInternet Explorer の起動時に実行され、ブラウザのスタートページや検索ページ、ツールバーの設定、ユーザが閲覧したWebサイトの情報の収集、ポップアップの作成、お気に入りの登録などの機能をカスタマイズ、コントロールすることができる。また、いくつかのモジュールではブラウザーが本来表示することのできない異なったファイルフォーマットの形式の表示を可能とする。たとえばAdobe AcrobatのプラグインはPDFファイルを Internet Explorer 上で表示することを可能としている。他にもInternet Explorer版のGoogle ツールバーなども BHO で実装されている。

 BHO をはじめとする、ブラウザ拡張に関してここを参照してみてください。ブラウザ拡張を開発する上で非常に大事なことが記載されています。

Important  Because extensions run in-process with the browser process, they should not be written using managed code. For more information, see:

 うぅ、これは大事ですね。ブラウザ拡張の機能を開発する場合は.NETFramework のようなマネージドな言語たちは使用すべきではないのですね。ネイティブな言語、すなわち C++ での開発が必要だということになります。下記のページを参照するとその理由がわかります。

 ブラウザ拡張の機能をマネージドで開発した場合、Common Language Runtime のバージョン衝突、ネイティブとマネージド間のスレッド モデルの違い、データ型等の問題が発生します。うーん、今は C# しか使ってないんですよね...C++ で開発するしかないんですね。C++ はかれこれ8年以上触っていません。思い出せるかなぁ。

 それでは、BHO を開発してみましょう。開発環境は、メインマシンの Lenovo にはインストールされていないので、Windows Azure 上の Visual Studio 2013 を使用したいと思います。

f:id:koogucc11:20131212004539p:plain

 Surface Pro 2 とかであれば、PC にインストールしておくのですが... Lenovo yoga 13 は ディスクが 128 G なので、Visual Studio をインストールするのは少し辛いのです。Surface とかあれば....

f:id:koogucc11:20131027233308p:plain

 256G or 512G がほしいですね。できれば、512 G ですかね。うーん、予算が....

f:id:koogucc11:20131027233630p:plain

 ワイヤレスキーボードになるアクセサリもあるんですね。いいですね。このスタイルにしたいです。Surface Pro 3 とかリリースされたら、キーボードがデフォルトでワイヤレス対応されていそうな気がしますが...

f:id:koogucc11:20131027234029p:plain

 こんなキーボードもリリースする予定なんですね。blades ( ブレード ) というものらいしです。

f:id:koogucc11:20131027234504p:plain

※参考URL

http://news.mynavi.jp/articles/2013/10/24/surface2/index.html


Surface Pro 2 -- from Microsoft - YouTube

 この動画見ちゃうと、余計にほしくなりますね。うう.... 本題から、かなり脱線してしまいました。もう夜遅いので、C++ する気力が残っていません。実際のプログラミングは今週末にしたいと思います.....( ああ、結局ほとんど進まなかった.... )