特集
NetDictionaryで始める
Webサービス・プログラミング

1.ヘルプ・ページのテンプレート


デジタルアドバンテージ
2002/02/06


 前回の後半にある4.[WebService]アトリビュートの追加では、ブラウザでWebサービスを記述した.asmxファイルを開いたときに表示されるWebサービス・ヘルプ・ページ(前回ではこれを「Webサービスの参照用ページ」と呼んでいたが、リファレンス・マニュアルをよく読むとこれは“Webサービスのヘルプ・ページ”と記述されているので、今後は表記をこちらに統一する。またこのページは、「テスト・ページ」「HTMLスキン」などと呼ばれることもあるようだ)の見栄えをよくする1つの方法を示した。

 これは、[WebService]アトリビュートのName属性などがそのままヘルプ・ページに表示されることを利用して、そこにHTMLのタグを直接埋め込むというお手軽な方法であった。しかしこの方法では、自動生成されるWSDLファイルにまでそのHTMLタグが含まれてしまうという問題があった。また、カスタマイズできる範囲が文字列表示部分に限られるので、ヘルプ・ページ全体を大々的にカスタマイズすることはできない。

 ヘルプ・ページをカスタマイズする正統な方法は、テンプレートとして使用されるページを直接変更してしまう方法だ。このテンプレートとして使用されるページは、実はWindowsディレクトリの下にある次のファイルである。

\WINDOWS\Microsoft.NET\Framework
   \v1.0.2914\CONFIG\DefaultWsdlHelpGenerator.aspx

 ただしこれは、OSがWindows XPで、かつ.NET Frameworkのバージョンが「ベータ2日本語版」の場合のデフォルト・パスである。Windows 2000の場合には、「WINDOWS」の部分が「WINNT」になる。また、先日公開された製品版(英語版)では、「v1.0.2914」の部分は「v1.0.03705」となっている。

 このテンプレートとなるデフォルトのファイルは、その拡張子が.aspxになっていることからも分かるように、ASP .NETによるWebアプリケーションになっている。ファイルは1400行を越える大きなもので、アトリビュートで記述された情報や、クラスやメソッドの情報をWebサービスのコンポーネントから動的に取得し、ヘルプ・ページを自動生成している。

 ヘルプ・ページの見栄えを変えるためにこのファイルを直接編集してもよいのだが、これはマシン全体で参照されるデフォルトのファイルなので、そうするとすべてのWebサービス用のヘルプ・ページが同じデザインになってしまう。従って通常は、このファイルを自分で作成したWebサービスのある(asmxファイルのある)ディレクトリにコピーし、それを編集してWebサービスごとにカスタマイズするようにすればよいだろう。

カスタマイズしたヘルプ・ページ

 さて次の画面は、今述べた方法で、コピーしてきたデフォルトのヘルプ・ページを少しだけ編集したものである。通常は紺色であるページ上部の帯部分を赤色にカスタマイズしている。これは[WebService]アトリビュートなどにタグを追加しただけでは実現できない。

カスタマイズしたICD Webサービスのヘルプ・ページ
ページ上部の帯部分を赤色に変更している(デフォルトでは紺色)。この変更はアトリビュートの属性を記述するだけでは不可能だ。

 また、「Insider’s Computer Dictionary / コンピュータ用語辞典」という文字列はアトリビュートとして記述したものだが、その上下に小さなフォントで表記された「Insider.NET Presents...」「provided by IWebMethod.NET」などの文字列は、前回の記事ではアトリビュートの属性にタグ付きで書き込んでいたが、今回はヘルプ・ページの方で記述している。

 1400行にも及ぶデフォルトのaspxファイルであるが、画面描画に使用されるHTML部分は、約1200行目あたりから始まっている。デザインのカスタマイズだけであれば、その部分を試行錯誤的に修正していけばよいだろう。ここでは今回行った2個所のカスタマイズについて簡単に説明しておこう。

 まず、帯部分のカスタマイズであるが、これはデフォルトのヘルプ・ページでは次の部分により記述されている(記述されている個所はエディタなどで検索していただきたい)。

<p class="heading1"><%#ServiceName%></p><br>

 この行の“<%#ServiceName%>”の部分が、実際には[WebService]アトリビュートのDescription属性で指定した文字列に展開される。この文字列に関するフォントの色や大きさ、背景の色などは、それを囲んでいる<p>タグから分かるように、スタイル・シートにより「heading1クラス」で定義されている。このクラスの定義部分は、その行の少し上にある<style>タグ内の「.heading1 { color:・・・」の行である。この行にある

background-color: #003366

background-color: #FF0000

に変更すれば、帯部分の背景が紺色から赤色になる。もちろん、スタイル・シートなどに従わずに、該当部分をごっそり書き換えても問題はない。

 一方、帯部分の下にあるWebサービスのタイトル部分は、続く“<%#ServiceDocumentation%>”の部分を、以下のように<table>タグなどを使用して変更している。

<!--
      <span visible='<%#ShowingMethodList && ……
          <p class="intro"><%#ServiceDocumentation%></p>
      </span>
-->

  <span visible='<%#ShowingMethodList && ServiceDocumentation.Length > 0%>' runat=server>
    <table cellpadding=0 cellspacing=0>
      <tr><td>
        <a href='http://www.atmarkit.co.jp/fdotnet'>
          Insider.NET
        </a> presents...
      </td></tr>
      <tr><td>
        <font size=4><b>
          <%#ServiceDocumentation%>
        </b></font>
        <hr>
      </td></tr>
      <tr><td align=right>
        provided by
        <a href='http://www.iwebmethod.net/'>
          IWebMethod.NET
        </a>
      </td></tr>
    </table><br><br>
  </span>
DefaultWsdlHelpGenerator.aspxを修正した部分
先頭の5行は元のコードをコメントアウトしたもの。ICD Webサービスの場合には、<%#ServiceDocumentation%>の部分が実行時に「Insider’s Computer Dictionary / コンピュータ用語辞典」に置き換えられる。

web.configファイルでの指定

 コピーして編集したヘルプ・ページは、そのままでは参照されない。asmxファイルをブラウザで開いたときに、このファイルがヘルプ・ページのテンプレートとして使用されるように設定する必要がある。この設定はasmxファイルと同じディレクトリに配置される“web.config”というファイルで記述する。このファイルはVisual Studio .NETを使用していれば自動的に作成されるが、そうでなければ自分で作成する必要がある。

 web.configは、個々のWebアプリケーションやWebサービスに関する設定をXML形式で記述するためのものだ。ASP .NETによるWebアプリケーションで使用される文字コードを、デフォルトのUnicode(UTF-8)からShift-JISに変更するために、このweb.configファイルが使用されているのをご存じの方もいらっしゃるだろう。

 次に示すリストは、ICD Webサービスで使用しているweb.configの内容だ。ここで記述されている要素名はすべてシステムで規定されているものである。

 1: <!-- web.config -->
 2:
 3: <configuration>
 4:   <system.web>
 5:     <globalization
 6:       requestEncoding="Shift-JIS"
 7:       responseEncoding="Shift-JIS"
 8:     />
 9:     <customErrors mode="Off"/>
10:     <webServices>
11:       <wsdlHelpGenerator href="helpgen.aspx" />
12:     </webServices>
13:   </system.web>
14: </configuration>
ICD Webサービスで使用しているweb.config
10〜12行目がヘルプ・ページのテンプレート・ファイルを指定している部分。

 分かりやすいように、ヘルプ・ページのテンプレート指定に必要な部分だけを抜き出すと次のようになる。

<configuration>
  <system.web>
    <webServices>
      <wsdlHelpGenerator href="helpgen.aspx" />
    </webServices>
  </system.web>
</configuration>

 <wsdHelpGenerator>要素の行で参照されている“helpgen.aspx”というファイルが、今コピーして手を加えたファイルだ。

 ちなみに、デフォルトのヘルプ・ページである“DefaultWsdlHelpGenerator.aspx”というファイルは、そのファイルと同じディレクトリにある“machine.config”というファイルで、同じように<wsdHelpGenerator>要素で指定されている。ファイル名から予想できるように、このファイルは、当該マシンにおける.NET Frameworkの設定が記述されているもので、ほとんどのデフォルト設定値はここで記述されている。ASP .NETがブラウザを判定する際の条件なども列挙されており、非常に興味深いファイルなので、一度ぐらいは目を通してもよいだろう。 


 INDEX
  [特集]NetDictionaryで始めるWebサービス・プログラミング
  第4回 辞書データベースへのアクセス
  1.ヘルプ・ページのテンプレート
    2.ICDデータベースの構造
    3.ADO .NETによるデータベース・アクセス
    4.ICD Webサービスのデータベース処理
 
 特集 : NetDictionaryプロジェクト


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間