|
Michael Wallent Microsoft Corporation
July 5, 1999
日本語版最終更新日 2000年11月17日
このコラムのソース コードの表示とダウンロード
この記事は、もともと MSDN Online Voices のコラム "DHTML Dude" に掲載されたものです。
プログラミング システムを評価する興味深い評価基準の一つは、「ブートストラップ可能性」です (この正式な名称があるのかもしれませんが、私は知らないのです)。つまり、システム自身を構成するコンポーネントから構築できるかということです。例えば、(マイクロソフトのような) C++ コンパイラ ベンダは、実際には、新しいバージョンのコンパイラのビルドにも、その新しいコンパイラを使い始めます。プログラミング言語と環境 (SmallTalk や Java など) は、場合によっては自分自身で記述されます。このことは、よく完成度の品質証明とみなされます。あなたの新しいシステムは、自分自身を構築できるほど完成していますか。
ご想像のとおり、私たち Internet Explorer 向けの HTML レンダリング システム開発者もブラウザ自身に対して同じように考えています。HTML を利用してブラウザを構築できるでしょうか。HTML を利用して HTML が構築して構築できるでしょうか。
この場で、これまで議論してきましたように、DHTML ビヘイビア は、低レベルの HTML 要素を使って新たな HTML コンポーネントの構築可能なコンポーネント モデルを確立しました。その点から、 HTML 自身から新しい HTML 要素を構築することができます。
Internet Explorer 5 において、DHTML で記述された機能がユーザー インターフェイスを実装するのにどのように使用されるのか調べることは、飛躍しすぎているわけではありません。実は、Internet Explorer チームの開発者の一人は、プロトタイプのブラウザ シェルを構築しました。これは、HTML だけを使った、DTHML ブラウザで、彼は、"Prowler" と呼んでいます。機能の面では、Internet Explorer にまったく及びませんが、HTML を使ってブラウザ UI を作ることができることを証明しています。
どの時点で Web ページがアプリケーションとなるか
Prowler はプロトタイプです。なぜ、本物の DHTML ブラウザを作らないのか。以前、セキュリティに関して、情報の保存したり、ダウンロード情報や Web ページの状態を覗き見する必要がある機能をどのように実装するかという点に関して問題が持ち上がりました。製品チームは、ある人に対しては、どうすればできるか絶えず説明してきましたが、実際には行われるべきことではありません。例えば、「chkdsk や format のような、ディスク メンテナンスの一般的なコマンドにリンクしているけれど、最初に警告ダイアログを表示しない Web ページを作成したいのです。」あるいは、「私が過去に訪れた Web サイトについて完全なリンクチェックを行いたいのですが。」などです。
開発者は、もっと標準的なアプリケーションを構築するためにこれらの機能を必要としていました。多くの場合、開発者は、WebBrowser OC をホストし、HTML で UI を構築して、実行可能な切れ端のようなものを出荷していました。
そうでなければ、彼らは、全画面表示オプションや、ブラウザ UI を使用不可にするオプションを付けたページを開く Web サイトへのリンクを提供していたでしょう。(このことを実際に行った、非常に興味深いサイトが http://www.webos.org です。このサイトでは、DHTML だけをつかって新しいデスクトップのメタファーを実装しています。一見の価値があります。) Web ページとアプリケーションを区別する方法を必要としていることは、徐々に明らかになってきていました。一旦区別がつけば、アプリケーションのコンテキスト中において、セキュリティとユーザー インターフェイスの両方が「きちんとしている」と見せることができるようになります。
タグでしかもアプリケーション
わたしたちの回答は、HTML アプリケーションあるいは、略して HTA と呼ばれる機能です。この機能は、新しい application タグをサポートします。このタグによって、制作者が window のルック アンド フィールとシステム中の動作を制御することができます。また、信頼度に従って、<FRAME> や <IFRAME> マークすることができます。このため別々のドメインにあるページでもデータを共有できます。非常に重要なことですが HTA はまさに実行可能なプログラムのようであるということです。HTA をクリックすると実行が開始されます。
簡単な HTA です。
<html>
<body>
Hello World
</body>
</html>
このサンプルに対するリンクを開くと、[ファイルのダウンロード] ダイアログが現れることに注意してください。HTA は、ユーザーのセキュリティを最大限に保証するために、デジタル署名できますし、そうすべきです。
次のサンプルは、ブラウザ作成の骨格となるものです。 "Go" ボタンがついたアドレスバーと表示領域を、ちょうど私は必要としてしていました。これはブラウザとしてほとんど最低限のものです。
2 番目のサンプルをご覧ください。
<html>
<head>
<TITLE>HTML Application Example</TITLE>
<HTA:APPLICATION ID="HTAEx"
APPLICATIONNAME="HTAEx"
ICON="e.ico"
WINDOWSTATE="normal">
</head>
<body>
<span id=AddressBar
style="overflow: none">
<span
id=AddText>Address</span>
<input type=text
value=http://www.microsoft.com
id=TheAddress
style="width: expression(document.body.clientWidth -
AddText.offsetWidth -
AddGo.offsetWidth - 45)">
<input type=button
value="Go"
id=AddGo onclick="navigate()"><br>
<span>
<br>
<iframe
src="http://www.microsoft.com" id=TheFrame
style="width:
100%; height: 85%"></iframe>
<script language=JScript>
function navigate() {
document.all.TheFrame.src = TheAddress.value;
}
function clickShortcut() {
if (window.event.keyCode == 13) {
navigate()
}
}
TheAddress.onkeypress =
clickShortcut;
</script>
</body>
</html>
これと HTML ページの間の最も明白な違いは、<HTA:Application> タグが文書の頂点にいることです。私は、これをアイコン、ウィンドウ サイズ、およびアプリケーション名の制御に使っています。<HTA:Application> プロパティの完全なリファレンスは、http://msdn2.microsoft.com/en-us/library/ms536495.aspx でご覧になれます。
これは、HTA の機能ではありませんが、別の Internet Explorer 5 の新機能がアドレス バーを適切にフォーマットするのに使われています。アドレス バーのサイズは、ダイナミック プロパティで定義され、"Address" と "Go" ボタンがスペースを確保したあとに、残った水平のスペース全てを割り当てます。
結論
HTML アプリケーションによって、開発者は HTML を利用したリッチな機能を作成する際に、別の選択肢を提供します。HTA によって開発者は HTML の作成が簡単にできるようになり、実際のアプリケーションが必要とする柔軟なセキュリティ モデルを提供します。しかしながら、HTML のインストールとメンテナンスの容易さは犠牲になりません。
|