新しいヘルプシステムの仕様

このドキュメントでは、Mozilla 1.0 でのヘルプシステムの挙動に関するいくつかの変更点について解説します。特に二つの大きな更新により、次のような面で影響を与えることになりました。一つは画面に応じたコンテキスト依存ヘルプを提供する際に新しい内容を追加する方法、もう一つは他のアプリケーションがそれぞれ独自のヘルプコンテントを表示するためにヘルプシステムを使用できるようにする方法です。こうした変更は非常に大きなもので、ヘルプビューアのための既存の仕様(このドキュメントの参考資料セクションにあります)がほとんど役に立たなくなってしまいました。

このドキュメントで解説される変更点:

これら二つのシステム上の変更に加えて、ヘルプウィンドウの見た目がいくらか変更されました。中でも、肥大したナビゲーションツールをまとめるためにヘルプウィンドウの左側にサイドバーに似たパネルを用いています。これらのツール(下のサイドバーのセクションで解説されています)には、クライアントサイドの検索機構、独立した用語集、および動的に生成される索引が含まれます。

コンテキストキー・ルックアップ

コンテキスト依存ヘルプの作動効率は、現時点では非常に悪いものです。設定ダイアログのような UI は、その時点でのサブフレームを ID 番号のルックアップのためのキーとして利用し(参考:配列を含んでいる pref-help.js)、それからウィンドウが表示されるときにヘルプシステムから適切なコンテントを読み込むためにその ID を利用して二度目のルックアップを行います。この二段階に分かれたルックアップ方法は余分な時間がかかり、エラーの可能性が大きくなりますし、キー自体も何百とありビルドの中に非常に多くの領域を必要とします。

さらにこのシステムでは、ヘルプビューアの左側にある目次から適切な項目を選択するための簡単な方法がないのです。RDF テンプレートを通じたコンテントの表示方法では、目次内でネストされた項目といった特定のサブノードを見つけることが困難です。ヘルプビューアにコンテキスト依存のコンテントを表示するより良い方法は、ヘルプビューアが RDF データ内であなたの必要とするノードを照会し、その照会によりそのコンテント枠内に適切な HTML コンテントを表示するよう促します。これはまさに、ユーザーが目次内のノードを選択したときに起こることです。それは次のような順になります:

 
ヘルプボタン・ルックアップ -> RDF セレクト -> TOC オンセレクト -> HTML コンテント

RDF ID をコンテキストキーとして利用する

目次を構成する RDF/XML 内の ID 属性という形で、ヘルプ内のそれぞれのトピックに対して固有の ID 番号のセットがすでにあるため、help.js および pref-help.js 内に余計な ID セットは必要ありません。ヘルプシステムの "コンテキスト" 部分がウィンドウロードとして選択されている RDF データソース内の特定ノードの場合、TOC から選択して正しい HTML を表示するため必要なのは対象のウィンドウロードのノード ID だけです。現時点では、コンテキストルックを持つヘルプウィンドウを開くための関数は次のようなものです:

openHelp("chrome://help/content/help.xul?imagemap_properties");

括弧内の文字列があるところはヘルプウィンドウのための URL で、疑問符の後の部分は HTML コンテント内のアンカーに対応する特殊な ID です。

上記に替わる方法として、URL は次のようになります。URL の部分には RDF URI、そして疑問符の後の ID は選択される読み込まれたデータソース内のノードの ID となります。

書式
openHelp(rdfuri?rdfid);
openHelp("chrome://help/locale/mozillahelp.rdf?nav");
ショートカット例
openHelp("?nav");

openHelp() 関数は、ファイル help/content/contextHelp.js で定義されています。このファイルは、特定のコンテキストの中でヘルプウィンドウを呼び出すための UI 定義ファイルのどこかにあります。この関数は、メタファイル(このメタファイルの挙動についての解説は下にある RDF メタファイルセクションを参照してください)に対して完全な RDF URI か、ヘルプウィンドウが開かれた際に読み込まれるコンテントに対応した RDF/XML による目次内(help/locale/help-toc.rdf)にある項目の ID で示されます。つまり、コンテキストヘルプとして開かれる全てのコンテントの内容は目次に示されている、ということです。

これによりルックアップの必要が全くなくなり、ヘルプ内に組み込むことができる RDF データを追加することで、UI 開発者が新たなコンテキスト依存型ヘルプを作成することが可能になります。この RDF データの追加は、HTML コンテントをターゲットにしており、現在 "キー" が定義されている Javascript ファイルを編集することなく行うことができます。ヘルプウィンドウのこの新しいより直接的なヘルプ表示方法は、コンテキストヘルプを含むヘルプウィンドウの全般的なレイアウトおよび検索範囲がメインの RDF ファイルで定義されているという、より広範な更新の一部で、これについては次のセクションで解説します。

RDF メタファイル

ヘルプシステムは、ビューアにコンテントを表示するために RDF を限定的に使用しています。目次は、データソースから読み込まれ UI の一部としてビルドされるデータの例です。ただし、ヘルプビューア内の動的なテータの可能性はこの例に比べて遥かに大きなものです。中でもヘルプシステムは高いモジュール性を備えている必要があります。なぜなら、その他のアプリケーションでも利用でき、HTML コンテントやその他の新たなデータを追加でき、その他の部分との関連がより明瞭かつ効果的になるようにするためです。これらのことを念頭に Peter Wilson はRDF/XML を利用して、より全体的なアプリケーションとしてヘルプシステムを構築するプロトタイプを提案しました。つまり、help.xul ファイルが読み込まれたとき、help.xul ファイルは、索引、検索可能なデータそしてセットの一部として読み込まれるべきその他のモジュールと同じように TOC のコンテントが指定されているメタファイルを探すのです。

メタファイルは次のような形で書かれています:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:nc="http://home.netscape.com/NC-rdf#">

<!-- MOZILLA MASTER HELP DOCUMENT -->
  <rdf:Description about="urn:root"
    nc:title="Mozilla Help."
    nc:defaulttopic="welcome"
    nc:base="chrome://help/locale/">
    <nc:panellist>
      <rdf:Seq>
        <rdf:li> 
          <rdf:Description nc:panelid="search" nc:title="Search" nc:datasources="rdf:null"/> 
        </rdf:li>
        <rdf:li> 
          <rdf:Description nc:panelid="toc" nc:title="Contents" 
             nc:datasources="navigator-toc.rdf mail-toc.rdf composer-toc.rdf  help-toc.rdf"/> 
        </rdf:li>
        <rdf:li> 
          <rdf:Description nc:panelid="index" nc:title="Index" 
             nc:datasources="help-index0 help-index1"/> 
        </rdf:li>
        <rdf:li> 
          <rdf:Description nc:panelid="glossary" nc:title="Glossary" 
             nc:datasources="help-glossary.rdf"/> 
        </rdf:li>
      </rdf:Seq>
    </nc:panellist>
  </rdf:Description>
</rdf:RDF>

defaulttopic 属性は、選択されるべき(そして HTML コンテントを読み込みます)RDF ノードの ID を指定します。base 属性は、HTML コンテントでの chrome へポイントする URL のベースを識別し、panellist 構造はヘルプコンテントのこの特定のセットの一部としての UI へとビルドされる RDF ファイルを一覧表示します。このセットは、4つのパネル、コンテント、索引、検索、用語集を一覧表示します。このセットは mozillahelp.rdf という名前を持ち、ヘルプのための基礎的なメタファイルとして識別されます。ただし替わりに minhelp.rdf あるいは sansmail.rdf というメタファイルを読み込むこともできます。このようにして、新しいデータやインストール時の設定に応じたデータを提供することができるのです。

サイドバーパネルとナビゲーションツール

ヘルプシステムのユーザーインターフェースへの重要な変更は、ウィンドウの左側にあるサイドバーのようなパネルの利用です。オリジナルのヘルプビューアでは、目次、索引という二つに分かれたパネルをもつタブボックスを利用していたところに、新しいシステムでは、サイドバーパネルの変更可能な一覧を提供しています。あなたのメタファイル内の <nc:panellist> に全ての利用可能なパネルを入れた場合、これらのパネルには次のものが含まれます:

  • 検索
  • 目次
  • 索引
  • 用語集

上で述べたように、アプリケーション特有なレベルでヘルプシステムを定義しているメタファイルの柔軟性により、これらのパネルやあらゆるサブセットを全て含めることが可能となります。

検索機構

新しいヘルプシステムは、軽量なクライアントサイドの検索機構を提供します。この検索機構は、ヘルプシステムの構造化されたコンテントの多くを定義するための RDF/XML の利用に基づいています。

検索パネルには簡単なテキストフィールドがあり、検索機構のためのボタンインターフェースが備えられています。テキストフィールドに用語を入力し、検索ボタンをクリックすると、検索機構が、目次、用語集、そして索引を含む、ヘルプシステム内の全ての RDF/XML データを検索します。そして、入力された語に一致する語の一覧を、下の部分に表示します。一覧の中のそれぞれの項目は、一致した RDF/XML に対応するコンテントへのリンクになっています。

目次

目次は前のバージョンのヘルプシステムと非常に良く似た方法で実装されていますが、ナビゲーションの他のモード、非公式的な利便性テストを反映するように再編成されて、拡張されています。目次は、コンテキスト依存型のヘルプリクエストが処理されるメインデータベースとなっています(上のコンテキストセクションを参照してください)。またそのため、コンテントパネル内(i.e., HTML ファイル内の全ての HTML アンカー)で参照される全てのコンテントは、目次に表示されなければならず、固有の ID と共に RDF/XML 要素として実装されなければなりません。なぜなら、かつてのコンテキスト依存ヘルプリクエストでは HTML コンテントを要求し、その HTML コンテントが次に目次内の適切なノードを読み込むように要求していたのですが、現在では目次内のノードに対してリクエストをし、そのノードが適切なコンテントをコンテントウィンドウに読み込むようになっているからです。このアップデートでは、目次がヘルプシステムとユーザーインターフェースの残りの部分との間の主な架け橋となっています。

索引

以前のバージョンのヘルプシステムでは、索引は HTML コンテント内の特別なアンカーから生成される単純な HTML ファイルでした。その HTML 索引を生成していたスクリプト(下の資料セクションにあります)は、ヘルプシステムの最新のバージョンに対して動かされていました。そしてその結果生成された HTML ページは、help-index.html としてチェックインされていました。

このような索引を生成するためのプロセスは以前と変わりませんが、索引は RDF/XML で書かれています。これにより索引パネルに構造化された索引データ(RDF テンプレートという形の outliner として実装されます)を提供することができ、検索機構が一致語を探せるような大規模なデータベースを提供することができるのです。索引のために RDF/XML を利用することによって、以前のバージョンのヘルプシウィンドウのフォントや表示の問題について解決することもでき、パネル間の表示差をなくすことができます。

用語集

新しい用語集パネルでは、古い目次内に既に表示されていた用語集データを切り離して、独立したパネルに納めています。用語集データは、目次とは異なる方法で構造化されています。そしてこのように分離することで、目次と用語集が切り離されていることが分かり、検索や探索がより簡単になるのです。

資料


Ian Oeschger Last updated: Thu, 27 Feb 2003 18:18:46 GMT