HTML Applications 概要

Microsoft Corporation

HTML Applications (HTA) の作成能力により、MicrosoftR Internet Explorer 5は、有望な MicrosoftR WindowsR 開発プラットフォームとして注目を集めています。本格的なアプリケーション HTA の登場です。これらのアプリケーションは信頼されたアプリケーションで、Web 開発者の作成するメニュー、アイコン、ツールバー、およびタイトル情報だけを表示します。Internet Explorer が持つすべてのパワー(オブジェクト モデル、パフォーマンス、レンダリング機能、プロトコル サポート、チャネル ダウンロード テクノロジ)を結集したもの、それが HTA です。しかも厳格なセキュリティ モデルやブラウザのユーザー インターフェイスを強制しません。

  • なぜ HTA を使用するか
  • HTA の作成
  • HTA 固有の機能
  • 信頼性というパワー: HTA とセキュリティ
  • 互換性
  • HTA の導入
  • 結論
  • 関連トピック

なぜ HTA を使用するか

これまでは、開発者の要求するオブジェクト モデルやシステム リソースへのアクセスは C++ や MicrosoftR Visual BasicR といったプログラミング言語が提供してきました。HTAの登場で、スクリプトを使った Dynamic HTML (DHTML)もこうした言語の仲間入りを果たすことができます。HTAは、Webページで実行できるすべての機能(HTML、CSS、スクリプト言語、Behavior)をサポートしているだけではなく、HTA 固有の機能もサポートしています。この追加機能により、ユーザー インターフェイスのデザインやクライアント システムへのアクセスを制御することができます。また、高信頼性アプリケーションの HTA は、セキュリティに関して Web ページと同じ制約を受けません。どの実行可能ファイルでもそうですが、HTA をダウンロードする場合も、そのアプリケーションを保存するか、実行するかを尋ねるメッセージが表示されます。クライアント マシンに保存されたアプリケーションは、その後、必要に応じて実行されます。HTAは、C++ や Visual Basic で作成された実行可能ファイル( .exe )と同じように動作します。

HTAは、プロトタイプ、ウィザード、フルスケールのアプリケーションの作成など、さまざまな用途に適しています。DHTML やスクリプトが提供する機能(フォーム、マルチメディア、Webアプリケーション、HTMLエディタ、ブラウザ)は、すべて HTA にも備わっています。HTA では、特定の作業が簡単にできるようになるなど、DHTMLやスクリプトよりも優れているといえます。たとえば、HTAを使えばプロトタイプを簡単に生成できるので、プログラム マネージャやデザイナーはダイアログボックスやアラートを作成でき、C++やVisual Basicの開発者は基本的な機能を作成することができます。

HTA の作成

HTA を作成するのは非常に簡単です。HTML ページを作成し、ファイル拡張子 .hta を付けて保存するだけです。

次のサンプルは、最も単純なHTAを示しています。これは、 "Hello, World" という文字列から構成され、.hta という拡張子を付けて保存されています。Internet Explorer は非常に寛容なので、HTML タグや BODY タグが欠けていてもエラーが生じることはありません。


  Hello, World

なお、この機能は、Internet Explorer 5 を必要とします。

HTA を起動するには、HTA のプログラム アイコンをダブルクリックするか、[スタート]メニューから実行するか、URLで開くか、またはコマンド ラインから起動します。いったん実行されると、HTA は、対の BODY タグにはさまれたすべてを表現し、TITLE タグ内に設定された値をウィンドウ タイトルとして表示します。

HTA 固有の機能

システムは .hta という拡張子からアプリケーションの扱い方を判断し、ウィンドウは新しい HTA:APPLICATION タグと属性からアプリケーションとしての振る舞い方を判断します。このタグは特定の属性セット、つまりボーダーのスタイルからプログラムのアイコンやメニューにいたるまですべてを制御する属性を公開します。その大部分は読み取り専用で、平均的なアプリケーション用に最適化されたデフォルト値を備えています。HTA を有効にするには、このタグを対の HEAD タグ内に記述しなければなりません。

この例で取り上げた HTA:APPLICATION タグでは、DHTML では使用できないアプリケーション機能を指定します。属性で禁止されているように、このアプリケーションにはボーダー (border) も、タイトル バー (caption) も、標準のプログラム アイコン (sysMenu) もありません。アプリケーションのタイトルは Windows タスク リストに表示され、タスクバー (showInTaskBar) には表示されません。また、アプリケーションのインスタンスは、一度に1回しか実行できません (singleInstance)。HTAは起動されると、システムに "monster" (applicationName) として認識され、最初に画面のサイズに合うように調整されます (windowState)。属性とプロパティの一覧やそれらの各情報へのリンクについては、HTA Reference を参照してください。


<HEAD>
  <TITLE>My Monster Application</TITLE>
  <HTA:APPLICATION ID="oMyApp" 
    APPLICATIONNAME="monster" 
    BORDER="none"
    CAPTION="no"
    ICON="/graphics/creature.ico"
    SHOWINTASKBAR="no"
    SINGLEINSTANCE="yes"
    SYSMENU="no"
    WINDOWSTATE="maximize"
  >
</HEAD>

ウィンドウのユーザー インターフェイスに影響を及ぼす HTA 固有の特性は、その多くが互いに依存しています。sysMenu を no に設定すると、プログラム アイコンだけではなく、最小化ボタンや最大化ボタンが使用不能となります。また、 border を none に設定すると、ウィンドウ ボーダー、プログラム アイコン、タイトル バー、それに 最小化ボタンおよび 最大化ボタンも表示されません。CAPTION を no に設定すると、最小化ボタンおよび 最大化ボタン、プログラム アイコン、それに ウィンドウ ボーダー が使用不能となります。これらの設定は、標準的なWindowsグラフィカル ユーザー インターフェイス デザインの観点からするとすべて意味があります。

信頼性というパワー: HTAとセキュリティ

高信頼性アプリケーションとしての HTA は、Internet Explorer では不可能と思える動作をWebページ上で実行します。そのため、アプリケーションの動作は途切れなくシームレスなものとなります。

HTA の場合、スクリプトは制約を受けずにクライアント マシンを操作することができます。たとえば、コマンド コードはすべて記述上の制約なしにサポートされます(command id を参照)。また、HTAはクライアント マシン上のファイルやシステム レジストリにアクセスしてデータの読み取りや書き込みを行うことができます。

HTA の 信頼関係ステータスは、セキュリティ ゾーン オプションに従うすべての操作にまで拡張されます。要するに、ゾーン セキュリティはオフということです。したがって、HTAは、クライアント マシン上のゾーン セキュリティ設定とは関わりなく組み込みの ActiveXR コントロールや Java アプレットを実行できます。こういったオブジェクトがダウンロードされ、HTA 内で実行されるときには、その前に警告メッセージはいっさい表示されません。

HTA ウィンドウは、他のドメイン内のコンテンツにまで信頼(trust)関係を拡張できます。HTA により、クロスドメイン スクリプトはウィンドウ オブジェクトとクッキー間でアクセスすることができます。クロスドメイン スクリプティング固有のセキュリティ リスクに対処するために、HTA では FRAMEIFRAMEAPPLICATION 属性が使用できます。しかし、このHTA固有の属性だけが唯一の安全予防策ではありません。HTA では、APPLICATION 属性が no に設定されていると、FRAMEIFRAME により、それらを含む HTA にはスクリプトからアクセスできなくなります。このように、安全でないコンテンツは、信頼関係が確立していないウィンドウを通じて HTA に入ることはできません。

信頼関係が確立していない HTML FRAMEIFRAME 内のスクリプトから、HTA 内のスクリプトへアクセスできない様に、HTA は設計されています。HTA の 有効化されていない FRAME の場合、最高位のフレームは、それに含まれるすべての FRAME のトップ ウィンドウを構成します。その FRAMEwindow.topwindow.self はまったく同じものです。また、安全でない FRAME および IFRAME は、親 HTA から referrer URL も opener URL も受け取りません。したがって、その FRAME と IFRAME はそれらを含む HTA を親ウィンドウとしては認識していません。

すべてのコンテンツが安全なアプリケーションでは、FRAMEIFRAME は安全に信頼関係確立ずみとマークすることができます。ウィザードとコントロール パネルは、安全なコンテンツの例です。下記の例のように IFRAME が HTA-enabled ステータスの場合には、情報を親ウィンドウに渡すことができます。


<IFRAME SRC="filename.htm" APPLICATION="yes">

逆に、安全でないコンテンツの参照を許す IFRAME は、通常のHTMLとして実装する必要があります。下記の IFRAME 例のコンテンツは、そのゾーンのセキュリティ設定に従います。次の IFRAME は HTML を組み込むときに使用できます。


<IFRAME SRC="filename.htm" APPLICATION="no">

注: APPLICATION 属性は、HTA ではなく HTML 内で使用すると無視されます。

HTA の実行にあたっては、実行可能ファイルの場合と同じような注意が必要です。HTA は、信頼性の高いソースで生成されたものだけをインストールしてください。これはコード署名することはできませんが、署名付きキャビネット ファイル(.cab)や他の署名付きインストール フォーマットからインストールできます。いずれにせよ、最も信頼できるソースは、企業イントラネットや定評のあるソフトウェア ベンダです。

互換性

Microsoft による HTA の実装は、Internet Explorer 5 が動作する 32ビット Windows システムでしか使用できません。HTA は、HTML のフォーム機能の AutoComplete (英語) や外部オブジェクト をサポートしていません。

HTA の導入

HTA 実装は、導入方法として Web モデル、パッケージ モデル、および(この2つの)ハイブリッド モデルをサポートします。アプリケーションの開発者は、どれが一番配布条件を満たしているか判断しなければなりません。

Web モデル

Web 導入モデルは、Web ページと同じように実行でき、管理できるアプリケーションからなります。このシナリオでは、URL を参照するか、または Internet Explorerお気に入りリストからそれにアクセスするだけで HTA が起動します。HTA が起動する前に、Internet Explorer はダイアログボックスを表示して、アプリケーションを開くか、保存するか選択するよう求めてきます。起動後は、補助のアプリケーション コンポーネントが必要に応じてサーバーからダウンロードされ、キャッシュに格納されます。サーバーは、http:プロトコルによる配布を有効にするために MIME型 "application:hta" を登録していなければなりません。

このモデルには、いくつかの重要な利点があります。1つは、シームレスなアップデートが可能になることです。イントラネットの管理者は、最新バージョンを受け取るクライアントに新しいコード、すなわちコンテンツを送るだけで済みます。ユーザーは、アプリケーションをインストールしたり、アンインストールしたりする必要はいっさいありません。未使用のアプリケーションは、自動的にキャッシュから消去されます。この展開モデルを評価するときの重要なポイントの1つは、オフラインで、あるいはサーバーが停止したときに、サーバー ベースのアプリケーションを実行できない点です。これへの対処法としては、たとえば、Internet Explorer 4.0 またはそれ以上の先進的なチャネル(CDF)機能を実装して不測の事態を予期するという方法があります。詳細については、Active Channel Technology Overview (英語) を参照してください。

パッケージ モデル

パッケージ導入モデルでは、HTA のインストール手順は従来のアプリケーションのインストール手順と同じです。ファイルは、インストーラまたは自己解凍型の実行可能ファイルを使って、ネットワークにより、あるいはディスクからコピーされます。インストーラは、アプリケーションを Program Files ディレクトリ、またはユーザーの選択したディレクトリに収容します。HTA へのリンクは、[スタート]メニューに含まれます。アプリケーションが Internet Explorer 5 (またはそれ以上)に依存していることが記録されます。これにより、Internet Explorer をアンインストールすると、そのアプリケーションが使用できなくなることを警告できます。HTA をパッケージして、指定先に配布する方法については、そのツールのベンダにお問い合わせください。

Webモデルと同様、パッケージ モデルにも利点がいくつかあります。アプリケーションの信頼関係を確立する初期インストール時だけに、ユーザーの情報入力が促されます。その後、アプリケーションは、.exe の場合と同様、信頼関係が確立したコードとして実行されます。また、ユーザーは、たとえサーバーに接続されていなくても、いつでもインストール済みの HTA を使用することができます。

ハイブリッド モデル

Web モデルとパッケージ モデルは、どのようにでも組み合わせることができます。HTA は、この配布方法を意識する必要はありません。HTA コンポーネントは必ず絶対URL または相対URL として参照されるので、アプリケーションは単に処理を行うだけです。

優先度の確認

配布には何が必要か? ここでは、この問いに対するいくつかシナリオを紹介します。

  • 初期ダウンロード時間の短縮を最優先しなければならないときは、ハイブリッド配布を行います ― このためには、HTA からサーバー内のイメージやサポート ファイルにアクセスできるようにしたまま、HTA のトップ ウィンドウをクライアント マシンにインストールします。
  • アプリケーションを仕事場と遠隔地の両方で実行する場合は、Webモデルを使ってローカル ネットワーク上で HTA を配布することとパッケージ モデルを使って遠隔地用に配布することを検討します。
  • コンテンツが個別のグループで保持され、それがサーバーを介して配布される場合は、通常特定のツールが必要となります。単一のユーザー インターフェイスを作成し、Web展開モデルで最新情報を自動的に配布すれば、アプリケーションは統合された全体として機能するはずです。

結論

大きなアプリケーションの作成する際には、あるいは小さなアプリケーションの場合であっても、配布モデルに関わりなく、Internet Explorer を開発プラットフォームとして使用するのが最も優れた方法となります。

関連トピック

HTA Reference (英語)