DinopTabbingBar開発秘話

2001年頃


 Internet Explorerをタブブラウザ化しようと思い立ったのはこの頃。当時は「タブブラウザ」なん て用語は知らなかったりもする。

 一番のきっかけはこの記事。 Internet Explorerをタブブラウザ化するフリーソフト「collector」。

 自分にはこんなソフトを作るだけの技術はなかった(2005年現在もない?)し、「どうやってこれだけ のことをやってるんだ!」なんて尊敬したものだった。ただこのソフトの欠点はInternet Explorerのウイ ンドウの外側にタブがあること。そんな目に付きやすい改善ポイントがあるものだから「ツールバーとし て動くcollectorを作ってやる!」なんて思ったわけ。

 ただDinopSearchBarを公開していることもあってInternet Explorer用のツールバーの作り方は分かるも のの、肝心のタブの切り替え方が思いつかなかった。
 唯一思いついた方法は...タブを切り替えるときにNavigateかput_outerHTMLを動かす...という方 法。IEコンポーネントを使ったことがない人にとっては何のことだかまったく分からないかもしれない。分 かりやすく言うと「タブを切り替えるたびにページを読み込みなおす」っていう方法。

 この方法は試作するまでもなく実用性ゼロってことが想像できた。だから結局「タブブラウザ化は無理」 っていう結論に達してあきらめることに。



~2004年11月まで


 半年に1度ぐらいの頻度でタブブラウザにするソフトを作りたくなるという生活が続く。
 ただ新しい方法は思いつかず、「タブを切り替えるたびにページを読み込みなおす」という実用性ゼロ の方法をなんとか生かして作れないかと考えを巡らせる。しかし結局長く考えても数分でやっぱり「タブ ブラウザ化は無理」っていう結論に達してあきらめることに。

 Internet Explorerのツールバーとして動くものが作れないから「やっぱり普通に1つのアプリケーショ ンとしてタブブラウザの開発しようかな」なんて思うこともあった。だが自分の性格を考えると絶対に途 中で投げ出すことは目に見えてる、って言うことでこれも頭から断念。



2004年12月中旬


 Internet Explorer内部の挙動を知る目的でIE用のツールバーを1日に数個作っては実験をするような ことをしていた。Internet Explorer内部の挙動に関する資料はGoogleで検索してもほとんどヒットして こないから、MSDNを片手にあの手この手でInternet Explorerをひっくり返していた。

 そんなときに見つけたのがMSDN内のとあるページ。この文章を書いている2005年3月には記憶が薄れて しまってどこにあるのか見つけることができなかったが...マウスをクリックすると絵が切り替わる というサンプルのあるページ。そこで使われていたのがレイヤー機能。
 これを見たとき「これは使えるかも!」とひらめいて早速実験してみることに...しかし結果は惨敗。 お遊び(実験)程度に使うことはできそうだがそれ以上にはできそうもなかった。

 レイヤー機能がHTMLで完結してVC++を使わなくてもタブブラウザ化できそうな雰囲気を持っていたとこ ろから可能性が広がり...ほとんど遊び状態でIFRAMEタグを使った切替やフレームでの切替など色々 やってみる。フレームを使うとほとんどタブブラウザみたいに動かすことはできそうだった。しかしリンク を新規ウインドウで開こうとするとすぐにボロが出てくる。
 フレームはput_RegisterAsBrowserが効かない(?)からどうしてもリンクがタブではなくてIEで開いて しまう。これはどうしようもなさそうでこれがネックとなり結局HTMLを利用したタブブラウザ化はあきら めることに。


 ちなみにこの頃に作ったのが「SDK for DinopSearchBar HE」。手作業でIE用のツールバーを作成するの は非常に面倒だからマウスクリックだけで簡単にツールバーを作れるようにする開発支援用ソフト。作れる ツールバーの種類は通常のツールバー、フォームを利用したツールバー、HTMLベースのツールバー、そして それぞれのタイプのエクスプローラバーとタスクバー用のデスクバンド。
 そのうち売ろうとは思っているがドキュメントの整理が遅れているため公開は未定。



2005年1月2日22時頃


 新年明けて間もない2日の夜。ふっと思いついたのがタブブラウザ化する方法。
 正確に言うと方法を思いついたのはだいぶ昔のことだったが思いついても「そりゃ無理でしょ」と頭か ら決め付けていた方法を実際に試してみようと思ったのがこの頃。その方法は「IEを無理やり乗っ取る」 というかなり強引なもの。
 それまで考えていた方法はInternet Explorerに元々備わっている機能をそのまま使ってなんとかタブ ブラウザ化という、言ってみれば"共存"の方法を探していた。しかしそれをやめてHTMLの表示領域の上に 新しく作ったウインドウをかぶせてしまおうというのが乗っ取る方法。

 この方法は強引だからInternet Explorerに備わっている多くの機能が使えなくなるということが容易に 想像がつく。むしろ「使えるわけがない」と言ったほうが当たっている。お気に入りの選択や更新ボタン 履歴などのInternet Explorer標準の機能の全てが使えなくなるわけだ。

 なんとかがんばれば機能を保ったままタブブラウザ化できるのか...

 想像を巡らしてみても答えが出る訳はないからとりあえずプロジェクト名をDinopTabbingBarとしてツー ルバーを作ることに。



2005年1月3日~5日16時頃


 「今年は新年早々仕事が詰まっているから休み明けから数週間は忙しくてとてもDinopTabbingBarの開発は できない。だけど自分の性格からするに数週間も開発にブランクが開くと絶対に放り投げてしまう!」とい う何とも言えない脅迫概念に取りつかれて不眠不休での開発が進む。

 5日早朝頃にはあまりの過労(?)に左目がピクピク痙攣する始末。目を休ませるために左目に簡易的な眼 帯をつけて右目だけで開発を続ける...

 自分の中で正月休みは6日か7日ぐらいまであるはずだったのに、期待を裏切って5日の16時頃仕事のメール が舞い込んで来た。しかしこのときには安定性こそ悪く開けないページも多かったがタブブラウザ的機能は 作り終えていたのでDinopTabbingBarの開発は中断&とりあえず今できているものを無理やり常用することに。



2005年1月5日~3月13日


 仕事がひと段落ついてからもDinopTabbingBarの開発なんてそっちのけでほかのことをする日々。
 Windowsの機能を使ったCABファイルとメモリの圧縮/解凍用クラスやCriptAPIを利用した暗号化クラス、 ワーキングスレッド管理用クラスやソケット通信用クラス...今後の開発で役に立ちそうなライブラリ の作成と整理ばかりをやっていた。

 とは言うものの使い勝手の悪いDinopTabbingBarは常用していたのでたまに開けないホームページがある となんとか開けるように修正を入れたり、Internet Explorer標準の機能を使えるように小細工を追加して いた。
 1番時間を食ったのがSBCMDID関連。SBCMDID_ADDTOFAVORITESを使って今開いているページをお気に入りへ 追加するようなことはすぐできたが、SBCMDID_GETPANEに関する情報がどこにも見つからない。このコマンド は文字通りペインを取得するためのもの。SSLのページを開いたときにステータスバーに鍵のアイコンを表示 するときに使う。実際は別に使わなくてもSBCMDID_SETSECURELOCKICONでアイコンは設定できるが、ステータ スバーのダブルクリック検出時のために必要なもの(結局時間を使ったもののGETPANEはあきらめることに)。

※SBCMDID_GETPANEのコマンド番号をご存知の方!教えていただけませんか?

 そんなこんなで少しずつ使い勝手はよくなっていつでも公開できる状態にまで持ち込めてはいた。
 しかしSDK for DinopSearchBar HEによって自動作成されたインストーラはWEBインストール対応のものの のみ。WEBインストールするには"電子署名"が必要だが、その電子署名は個人で取得するのは非常に困難。 というか面倒。
 始めの頃は「3月1日か4月1日に公開かな」と思っていた公開日もいつしか「電子署名が取得できたら公開 かな?」に変わり...「電子署名は取得するの面倒だからどうでもいいや」という状態に。
 そんなんではいつまで経っても公開できそうもないので自分の中で区切りをつけることに。「そう言えば DinopSearchBar Ver1.00の公開日って3月だったような」ということを思いつき、せっかくだからDinopTabbingBarの 公開日も3月16日にすることに。



2005年3月13日~14日 公開数日前


 公開日を3月16日に決めたからと言ってもDinopTabbingBarの開発はほとんど気まぐれ状態。
 しかしさすがに公開予定日の3日前ともなれば「そろそろ用意しといた方がいいかな?」と思い始めた。と りあえず今の段階で足りないものはreadme関連とインストーラ。電子署名はあきらめたから普通のEXEファイ ルとして動くインストーラを作るか、ということで作業開始。

 とは言うものの既にWEBインストーラがあったのでそれをウイザード形式に移行するだけですぐに完成。

 「せっかくだから日本語だけじゃなくて英語にも対応しようかな?」なんて軽い乗りで二ヶ国語対応にする ことを決意。
 多言語に対応するためにはソースコード内の文字列をリソースに入れる必要がある。もともと多言語を意識 したDinopSearchBar HEは一瞬で二ヶ国語に対応できた。しかしDinopTabbingBarはしんどい。「やめようかな」 なんて意識も芽生えたけどなんとか対応できた。

 さらに軽い乗りで「Windows 9xにも対応しようかな?」なんて思いつく。DinopSearchBar HEの方はVC++の設 定を変えるだけでWindows 9xにも対応できたがDinopTabbingBarはダメ...正確にはWindows 9xで動くよう にするとWindows XP系では誤動作する...あまり深く考えるのも時間の無駄だからあきらめることに。



2005年3月15日 公開前日


 公開予定日の前日。
 今までDinopTabbingBarの動作テストをしていなかったのが悔やまれるほどバグが見つかり、その修正に追わ れる。しかしいつまでも修正に修正を重ねていると公開できなくなるので、今後のバージョンで直すことしよう と見切りをつける。

 そして作業は公開ページ用のHTML作成。さらにインストール用のマニュアルの作成。始めはHTMLで作ろうかと も思ったけど仕事でも多用しているInDesignを使うことに。操作マニュアルも作りたいけどとりあえず保留。

 今月の25日に結婚退職&遠くに引越しする友達(の友達)のお別れ会も辞退(ごめんなさい&お幸せに)して 作業を進める。



2005年3月16日 公開日


 知らないうちに0時を回って公開日当日に突入。
 このページ(この開発秘話のページ)は作り途中だけどほかのものはサーバーにアップ。無事公開開始。そし て午前6時半寝る。

 午前11時半起床。ちょっと眠たい。でもとりあえず寝る前の作業を続ける。このページもほとんど書き終わり 後はアップするだけ。
 操作マニュアルはまだ手もつけてないけど...それは「そのうちやろう」と心に決めて保留(ということは 作らない可能性大?)。


カテゴリー「DinopTabbingBar」 のエントリー