| はじめに | |
| ASP かブラウザ スクリプトか? | |
| ASP 管理計画 | |
| スクリプト基準の設定 | |
| まとめ | |
| 参考資料 |
Active Server Pages (ASP) は、ユーザーが要求した情報を動的に配置および配信するサーバーサイドのテクノロジーです。
ASP の効果的に使用するには、プロジェクトの開発と管理において効果的な活用方法を計画する必要があります。 この文書は、ASP の利用を計画または考えているシステム管理者、Web 作成者、および Web アプリケーション開発者を対象とし、安全で組織に適していて、そして使いやすい ASP アプリケーションの開発および管理の計画に役立つ情報を提供します。
スクリプト ソリューションの権限を与えられた場合、ASP ページを記述する方がよいか、それともブラウザ ベーススクリプトを記述する方がよいかを決定したいと思うでしょう。また、開発段階の初期にその決定をしたいと思うでしょう。
以下のことが必要な場合、ASP の使用を計画します。
| • | バックエンド ソースから収集し、ユーザーのニーズに合わせて設定した情報を含む Web ページのカスタマイズ |
| • | サイト訪問者が HTML 形式を使って送信したデータの収集 |
| • | 特定のブランドおよびバージョンのブラウザ用にフォーマットされているページの配信 |
サーバーに余分な負荷をかけないために、ユーザーが送信したデータの検証、計算、および単純な条件出力の選択などのタスクにはブラウザ ベースのスクリプトの使用を計画します。
この文書では、以下の 3 つの点について ASP アプリケーション計画を説明します。
| • | 一般的な問題の回避 |
| • | ASP アプリケーション ディレクトリおよびファイルの組織化 |
| • | ASP スクリプトの基準の設定 |
パフォーマンスや信頼性など、ASP 開発やその他の点についてはこの文書以外で説明します。
ASP ページは便利であると同時に、開発と展開に関する危険性を認識することが重要です。 ユーザーをバックエンド データ リソースと接続する ASP ページには、企業データの検索およびアクセス方法に関する情報、さらには企業の営業規則、顧客データ、およびその他の機密情報が含まれている場合もあります。したがって、機密情報を権限のないユーザーにさらす可能性を認識しておくことが大切です。 ASP の開発および展開中に、誤って不正なユーザーに機密情報を取得する許可を与える可能性があります。さらに、適切な開発および管理方法を使用できない場合、満足するユーザーの数が増える代わりにパフォーマンスや信頼性の問題が増加し続けることになります。
ASP アプリケーションは、ファイル システムに保存されます。 ASP アプリケーションは、アプリケーションに必要な HTML ページおよびコンポーネントを含む ASP ページの集合です。 アプリケーションを定義する場合、インターネット サービス マネージャを使って、Web サイトにアプリケーションの開始ディレクトリを指定します。 Web サイトの開始ディレクトリ下のすべてのファイルとフォルダは、別の開始ディレクトリが見つかるまでアプリケーションの一部と考えられます。したがって、ディレクトリの境界を使って ASP アプリケーションの範囲を定義します。
この項では、ディレクトリ構造のテンプレートとガイダンスおよび ASP アプリケーションのアクセス権について説明します。このテンプレートは、ASP アプリケーションがどんなに大規模で複雑になっても、整合性、信頼性、および安全性の高い ASP アプリケーション保存域組織モデルの確立に役立ちます。
次のリスト内のディレクトリおよびファイルに提供される組織と属性は、使用しているファイル名前よりも重要となります。
\Application_Name
Default.htm
Global.asa
\Classes
\Content
\ASP
*.asp
\HTM
*.htm
\Images
\Media
\Themes
\Data (サイト ディレクトリにない)
\DLL (サイト ディレクトリにない
\Helper_Files (サイト ディレクトリにない)
アプリケーションのルートディレクトリ
アプリケーションのルート ディレクトリ名は、サイトのテーマを明白に伝えるものでなければなりません。たとえば、財務調査用のアプリケーションには \Financial_Research のような名前を付けます。 \Media や \Content などのサイトの標準的なサブディレクトリと間違えるようなアプリケーション ルート名は使用しないでください。 また、\FR98346A など 部品番号やコードのように受け取れる名前も避けてください。
実際のサイトに悪影響を与えないために、開発テスト環境でアプリケーションを開発します。 それを簡単に行うには、IIS HTTP ルート ディレクトリ \InterPub\wwwroot 下で新しいアプリケーションを開発し、準備ができたら実際の環境に \InterPub\wwwroot 下の同じディレクトリを移動します。
注:
/InetPub/wwwroot は Microsoft Visual InterDev™ と Microsoft Front Page™ にて作成される Web ドキュメントの Home です。/InetPub/wwwroot 下以外を Home に設定した場合は、これらのツールで Home の場所を指定しなおす必要があります。
すべてのアプリケーションのルート ディレクトリには、少なくとも以下のファイルが含まれます。
| • | Default.htm または Default.asp |
| • | Global.asa |
Default.htm または Default.asp はアプリケーションの既定のホーム ページでなければなりません。また、インターネット サービス マネージャを使って、適切に既定のサーバーを設定する必要があります。 以上の 2 つの手順を実行すると、ユーザーは、サーバーのアドレスとアプリケーションのルート ディレクトリ名を入力することによって一貫して組織のサイトを検索することができます。 たとえば、TechNet Online にアクセスするには、technet.microsoft.com と入力します。ホームに定義されたページ名を入力する必要はありません。
Global.asa ファイルでは、イベント スクリプトの指定、アプリケーションまたはセッションの範囲を所有するオブジェクトの宣言、およびタイプ ライブラリの宣言が行われます。 たとえば、Global.asa スクリプトによって、起動時にアプリケーション範囲およびセッション範囲の変数が使用可能になります。Global.asa は、アプリケーションのルート ディレクトリに保存する必要があります。
\Class
\Class ディレクトリにはアプリケーションで使用される Java クラスが保存され、実行権限が必要です。
\Content
\Content ディレクトリには、サイトのユーザーが直接取得するすべてのページ (Default.htm は除く) およびメディアが保存されます。
\ASP
\Content のサブディレクトリ \ASP には、サーバーサイドのスクリプトを含むすべてのページが保存されます。このディレクトリには、ASP がページ スクリプトを実行できる実行権限が必要です。 .asp ページには営業規則やデータ リソースへのアクセスに関する機密情報が保存されている場合があるので、このディレクトリには読み取り権限を割り当てないでください。すべてのスクリプト ページをこのディレクトリに保存すると、権限の管理およびサイトのセキュリティを簡単に行うことができます。
\HTM
\Content のサブディレクトリ \HTM には、標準的な HTML のみを含むすべてのページが保存されます。 このディレクトリは読み取り専用で、実行権限はありません。 このディレクトリに保存されているサーバーサイドのスクリプトを含むページは実行できません。
\Images
\Content のサブディレクトリ \Images フォルダには、標準的なボタンやアイコンなど、テーマ関連の画像とは別に使用されるグラフィックが保存されます (下記を参照)。
\Media
\Content のサブディレクトリ \Media には、アプリケーション全体で使用されるオーディオ、画像、アニメーション ファイル、.avi、.ASF ファイルなどのファイルが保存されます。
\Themes
\Content ディレクトリのサブディレクトリです。 \Themes ディレクトリを使うと、サイトの表示形式への変更をアプリケーション全体に反映することができます。 このディレクトリには、任意のまたはすべてのテーマ関連の項目を簡単に変更することによって、アプリケーションの表示形式を変更できるように組織化されたスタイル シート、記号、アイコン、ルールなどが保存されます。 \Theme ディレクトリ内の各項目を動的にリンクするには、仮想パスにアプリケーション変数を設定します。
\Data
このディレクトリには、アプリケーションで必要な SQL スクリプト、ファイル ベースのデータセット名など、すべてのデータベース アクセス情報が保存されます。 このディレクトリをサイト ディレクトリ下に配置しないでください。サイト ディレクトリは、権限のないユーザーに営業規則や個人データへのアクセスを与える場合があるからです。
\DLLs
このディレクトリには、COM コンポーネントおよび Vbrun500.dll や Msvbvm50.dll などの Visual BasicR 6.0 実行時 DLL が保存されます。 このディレクトリをサイト ディレクトリ下に配置しないでください。サイト ディレクトリは、不正侵入者に営業規則や個人データへのアクセスを与える場合があるからです。
\Helper_Files
このディレクトリには、アプリケーション全体であるいは多数のアプリケーションで情報を使用可能にするサーバーサイドのインクルード ファイルまたはテキスト形式のファイルが保存されます。 セキュリティ上の理由で、ヘルパ ファイルを含むディレクトリは、発行済みの Web スペース (ユーザーが識別できる Web サイト ディレクトリ) には保存しないでください。
この項で述べるファイルの名前付け規則は、信頼性、整合性、安全性の高い文書ページを作成するための便利な規則を提供します。
.asp 拡張子の使用は、サーバーサイドのスクリプトを含むページに必要です。 最初はスクリプトを含んでいなくても、将来スクリプトを含む可能性があるページに .asp 拡張子を使用するのは、適切な原則です。 サーバー リソースを保存する場合、およびページ提供時の遅延を最小限にする場合は、現在も今後もサーバーサイド スクリプトの実行を必要としないファイルに .htm 拡張子を使用します。
整合性を確保し、維持を簡単にするには、インクルード ファイル (.inc) を使って、特定の情報を複数の参照ページで使用できるようにします。インクルード ファイルへの変更は、ファイルを呼び出すすべてのページに反映されます。 ページ内に含まれるテキスト形式のデータ ファイルにはテキスト ファイル (.txt) を使用します。
スクリプトを含むページには .inc を使用しないでください。 ユーザーがスクリプトを含むページを表示した場合、スクリプト内の営業規則が暴露されます。スクリプトを含むすべてのページ、またはスクリプトを計画しているページには .asp 拡張子を使って、ASP スクリプトでコード化された機密情報を表示できないようにします。
ASP アプリケーションファイルを組織化し、名前を付け、保護すると、ASP の計画および設定が半分進んだことになります。 さらに、チーム内のページ作成者が読みやすいものにするためにページ スクリプトの基準を確立したいと思うでしょう。
読みやすくするには、ASP ページに以下のようなスクリプト スタイルの基準を確立します。このスタイルは、Microsoft Visual Basic® Scripting Edition (VBScript) または Jscript® で記述されるスクリプトに適用されます。 ディレクトリおよびファイルの基準と同様に、提供される基準を正確に適用するよりも、以下の説明で取り上げる問題点に対処することが重要です。スクリプトの基準を定義する方法を決定する場合、ほとんどの ASP ページにはプレーンな HTML も含まれているという事実を考慮してください。
この項では、スクリプト規準の確立を開始します。 より広範囲のスクリプト スタイル ガイドについて内容の追加がある場合は、このサイト上で提供します。
スクリプト内のコメント
コメントは、コードを見るスクリプト作成者がすぐに理解できるための手助けとなる必要があります。さらに、コードが示していることを単に繰り返すのではなく、コードの目的を説明したり、コードの機能を要約したりするものでなければなりません。
ファイル名、ファイルを開発するグループ (個人ではありません。電子メールはグループ宛てに送信されます)、ファイルが開発された日付、準拠する HTML およびスクリプト基準、および実行されたすべての変更に関する日付の入った説明を一覧表示する各ページの上部付近に整合性のあるコメント ブロックを記述します。
スクリプト作成者が解読するのに何秒もかかるようなあいまいなコードや複雑なコードを説明するためにコメントを使用します。次のような句には、必ずコメントを付けてください。
If Err = LOCK Then
コメント アウトされるスクリプトは、プレースホルダでない限り削除しなければなりません。プレースホルダには、その旨のラベルを付ける必要があります。
対応するコードと共に各コメントを挿入します。 インライン コメントを挿入するには、対応するコードの後に 2 つのスペースを入れる必要があります。 新しい行から始まるコメントは、空白行で区切る必要があります。
例:
<%
Dim intVariable '明示的に変数を宣言します。
'変数に整数値を割り当てます。
intVariable = 5
%>
単一のコメントが複数行に及ぶ場合、各行は標準的な VBScript コメント記号 (') で開始する必要があります。大きなマルチステートメントのコメント ブロックは、次の例のようにフォーマットする必要があります。
例:
Sub ShowIt()
'======================================
この手順は、ユーザーが言語を選択する
'ときに呼び出されます。
'
'選択した言語に基づいて、
'適切な選択項目が表示されます。
'
'メソッドの選択は、それぞれ
'別の部分に保存されます
'======================================
Dim vntCurrLang
vntCurrLang = document.all.langselect.value
Select Case vntCurrLang
Case "C"
document.all.cdiv.style.display = ""
Case "VB"
document.all.vbdiv.style.display = ""
Case "J"
document.all.javadiv.style.display = ""
End Select
End Sub
JScript の複数行コメントは /* で始まり、*/ で終わります。 大きなマルチステートメントのコメント ブロックは、次の例のようにフォーマットする必要があります。
例:
function showIt()
/*******************************************
**これは、大きなコメント ブロックです。
**
**この手順は、ユーザーが言語を選択する
**ときに呼び出されます。
**
**選択した言語に基づいて、
**適切な選択項目が表示されます。
**
**メソッドの選択は、それぞれ
**別の部分に保存されます。
*******************************************/
{
var vntCurrLang = document.all
...
}
定数名
ほかの要素と区別するために定数の名前を付ける場合、すべて大文字を使います。 下線は、必要に応じて語句を区切るために使用することができます。
例:
Const MIN_QUAL = 25
コンテキストの切り替え
読みやすくするために、HTML とスクリプトの切り替えを最小限にします。可能な場合、小さなスクリプトを多数使用する代わりに、大きなスクリプト ブロックをページで使用します。
インデントインデント
によって、コードの論理構造がより明確になります。
複数行から成るスクリプトはブロック化し、2 スペース分インデントして、スクリプト区切り文字の下の行に配置します。1 行のスクリプトは、区切り文字と同じ行に配置します。
ASP 区切り文字 (<% U %>)間では、すべてを最低 2 スペース分インデントします。また、以下の場合、それぞれ 2 スペースのインデントを追加します。
| • | 論理の切れ目 |
| • | ネストされたステートメントまたは HTML 要素 |
| • | 関数のボディ |
| • | 制御コードからのループのボディ |
以下の例で、VBScript または JScript で記述されたスクリプトのインデント ルールを示します。
単一行スクリプト
<% Dim strLastName %>
ネストされた論理を含むスクリプト
<%
'この例は、ネストされた論理ブロックを含む
'スクリプトを説明します
Dim vntOutput
Set vntExample = Server.CreateObject("MyComponents.Component.1")
vntOutput = varExample.Text
If vntOutput = "" Then
Response.Write "An error has occurred"
Else
Response.Write vntOutput
End If
%>
VBScript による関数のスクリプト
<%
Function CalcMortgageRate()
Statement_1
End Function
%>
JScript による関数のスクリプト
<%
//これは、関数の例です。
function calcMortgageRate()
{
statement1
statement2
}
%>
適切なディレクトリ構造と権限、および有効なページ スクリプト基準を確立し、保持すると、ASP アプリケーションの管理可能性および安全性が高まり、システム管理者および開発チームはスクリプトを簡単に読んだり、理解したりすることができるようになります。
『Internet Information Server リソース キット』、1998 年、Redmond: マイクロソフト プレスhttp://www.asia.microsoft.com/japan/info/press/JPN_ViewMsPress.asp?Book_id=152&list_id=1
この書籍では、Web アプリケーションの開発を含む IIS 4.0 使用に関するすべてが説明されており、ASP 基準に関する付録も含まれています。
Web リンク
http://www.microsoft.com/japan/msdn/default.aspx
Microsoft Developer Network (MSDN) Online は、ASP を含むすべての Microsoft 開発テクノロジーの包括的な Webサイトです。
http://www.windowstechedge.com/
Brooks Talley によるこの Window TechEdge は、拡張および複雑化する必要性を踏まえた ASP アプリケーションの開発を計画するように指示しています。 Talley は、効果的な ASP プロジェクト計画への鍵として標準化と再利用を強調しています。