トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
株式会社ヤザワ
矢沢久雄
第4回 ASPがASP.NETに変って、何でもかんでも楽になっちゃった!
はじめに
開発スタイルはWindowsアプリケーションと同様
ユーザーインターフェイスとロジックの分離
さらばVBScript
便利なWeb Formsコントロール
おわりに

はじめに

皆さんは、従来のASPでWebアプリケーションを作成したことがありますか? それなら、この記事を読めばASP.NETで何が変ったかがわかるでしょう。もしも、まったく経験がないなら「そもそもWebアプリケーションとは、こうやって作るものだ」と考えてください。.NETにおけるWebアプリケーションの開発手法はとても簡単で効率的です。従来のASPに戻る必要などあり得ません。
ASP.NETとは、WebアプリケーションとXML Webサービスの実行エンジンであり、WindowsのWebサーバーであるIISと連携して動作します。ASP.NETは.NET Framework上で動作するので、Visual Basic .NETやVisual C#など.NET対応の様々なプログラミング言語を使って、WebアプリケーションやXML Webサービスを作成できます。今回はWebアプリケーションの作成方法を説明し、次回(最終回)はXML Webサービスの作成方法を説明します。

開発スタイルはWindowsアプリケーションと同様

Visual Studio .NETを使うと、Windowsアプリケーションと同様のスタイルでWebアプリケーションを作成できます。すなわち、まず、フォーム(Webフォームと呼ばれる)にコントロール(Web Formsコントロールと呼ばれる)を貼り付け、プロパティウインドウでプロパティを設定して、アプリケーションのユーザーインターフェイスをデザインします。次に、コントロールをダブルクリックして表示されるコードエディタにプログラムを記述します。これでWebアプリケーションが完成です。
図1は、Webフォームに2つのテキストボックス、ラベル、およびボタンを貼り付けて作成したWebアプリケーションです。ボタンをクリックすると、2つのテキストボックスに入力された数値の加算結果がラベルに表示されます。ユーザーインターフェイスのデザイン方法も、コードの記述方法やコードの内容(リスト1)も、前回紹介したWindowsアプリケーションと同じです。

図1 加算を行うWebアプリケーション

リスト1 コードの内容はWindowsアプリケーションとまったく同じ(こちらをクリック)

ユーザーインターフェイスとロジックの分離

.NETのWebアプリケーションは、基本的に2つのファイルから構成されています。1つは、ファイル名の拡張子が.aspxとなったもので、その内容はHTMLのタグになっています。Webアプリケーションを実行する場合には、WebブラウザのURL欄に.aspxファイルを指定します。もう1つは、ファイル名の拡張子が.vb(Visual Basic .NETを使った場合)となったもので、その内容はプログラムのコードになっています。先に作成したWebアプリケーションの.aspxファイルと.vbファイルの一部を示しておきましょう(リスト2、リスト3)。

リスト2 .aspxファイルの内容(抜粋)(こちらをクリック)

リスト3 .vbファイルの内容(抜粋)(こちらをクリック)

従来のASPでは、ファイル名の拡張子が.aspとなった1つのファイルの中にHTMLのタグとプログラム(VBScriptまたはJScriptのスクリプト)を一緒に記述していました。タグとプログラムが混在しているため、実に混沌としたものでした。.NETでは、タグだけのファイルとプログラムだけのファイルを分離することで、この問題を解決したわけです。デザイナの作業(タグ)とプログラマの作業(プログラム)を分けたのだと考えてください。.aspxファイルの背後で動作するプログラム(.vbファイル)のことを「コードビハンド(code behind)」と呼ぶことも覚えておいてください。
プログラムの記述に従来のスクリプト言語ではなく、フル機能のプログラミング言語が使えるのも特筆すべきことです。データ型がなく、オブジェクト指向プログラミングなど不可能だったスクリプト言語から、一気に本格的なオブジェクト指向プログラミング言語になったのですから。さらに、プログラムを1行ずつ逐次実行するインタプリタ形式のスクリプトでなく、プログラムを一気に実行するコンパイラ形式の言語となったことで、Webアプリケーションの実行速度も向上します。従来のASPに比べて、ASP.NETはいいことづくめです。筆者の知る限りでは、否定する要素など何もありません。

さらばVBScript

.NETのWebアプリケーションでは、従来のVBScript(Visual Basicをベースとした簡易言語)に事実上「さよなら」を告げたことになります。フル機能のVisual Basic .NETを使えるからです。もしも、クライアントに転送されるHTMLの中にスクリプトを挿入したいなら、VBScriptではなくJScript(Javaに似た簡易言語)を使うのが「.NET流」だと言えます。ただし、VBScriptが禁止されているわけではありません。JScriptを使うことが推奨されているだけです。
.NETのコンセプトの1つに、「Windowsに非依存」ということがあります。VBScriptをデフォルトで解釈し実行できるWebブラウザはInternet Explolerだけです。それに対してJScriptなら、ほとんどのWebブラウザが解釈し実行できます。
Visual Studio .NETには、使い勝手のよいHTMLエディタが装備されています。このHTMLエディタを使ってクライアント側で実行されるスクリプトを記述しようとすると、JScriptのスケルトンコードが自動生成されるようになっています。.NETでスクリプトを使うならJScriptだということを実感していただけるでしょう(図2)。

図2 Visual Studio .NETのHTMLエディタ

●便利なWeb Formsコントロール

Webアプリケーションで使われるコントロールは、Web Formsコントロールと呼ばれます。これらは、System.Web.UI.WebControlsネームスペースで提供されるクラスであり、Windowsアプリケーション用のコントロールとはまったく異なるものです。ただしプログラミング上は、両者の使い勝手が極力同じになるように、プロパティやイベントの名前や機能が合わせられています。
コードビハンドとなるプログラムは、Webサーバー側で実行されます。したがって、スタンドアロンのWindowsアプリケーションと同じことができても不思議ではありません。ただし、WindowsアプリケーションがWindowsの高度なグラフィックス機能を使って外観を描画するのに対し、Webアプリケーションの外観は、すべてHTMLのタグで描画しなければなりません(見劣りのするものとなります)。すなわち、Web Formsコントロールとは、サーバー側で何らかの処理を行い、その結果をHTMLのタグでWebブラウザに転送するものなのです。
図3は、Webアプリケーションの作成時にツールボックスに表示されたWeb Formsコントロールのアイコンです。Web Formsコントロールの種類は大きく4つに分類できます(表1)。

図3 Web Formsコントロールのアイコン


表1 Web Formsコントロールの種類

分類
機能
主なコントロール
基本コントロール 1つのHTML要素を表す。 Button、ImageButton、CheckBox、CheckBoxList、DropDownList、ListBox、ListItem、Label、Image、Panel、RadioButton、RadioButtonList
リッチコントロール 高度な外観と機能を実現する。 Calendar、AdRotator
データ関連コントロール データベースの内容を表示する。 DataGrid、DataList
入力検証コントロール 入力チェック用のJscriptを生成する。 CompareValidator、CustomValidator、RangeValidator、RegularExpressionValidator、RequireFieldValidator、ValidationSummary

基本コントロールは、1つのHTML要素に対応したコントロールです。「そんなものコントロールでなく、HTMLのタグで書けばいいじゃないか」と思われるかもしれませんが、そうではありません。コントロールを使うからこそ、Webブラウザ側でボタンをクリックしたイベントの処理をサーバー側で行えるのです。さらに、HTML流のタグのパラメータ名を、プログラミング上は.NET流のプロパティ名で取り扱えるようにしてくれます。たとえば、ボタンの表面に表示される文字列はHTML流ではvalueで指定しますが、コントロールのプロパティはTextとなっています。これはWindowsアプリケーション用のコントロールのプロパティ名と同じです。
リッチコントロールは豪華なユーザーインターフェイスを提供してくれます。たとえば、カレンダーコントロールは複数のHTMLのタグを生成して外観を形成します(図4)。

図4 カレンダーコントロール

データ関連コントロールは、Webサーバー側のデータベースの内容を表形式やリスト形式のHTMLのタグにしてWebブラウザに転送します。表を実現するためには、もちろん多数のタグが生成されます。
入力検証コントロールは面白い存在です。会員登録などを行うWebページでは、入力にエラーがあった場合に、それをHTMLに挿入したスクリプトでチェックするのが一般的です。いちいちWebサーバーに転送してチェックを行っていたのではパフォーマンスが低下するからです(ユーザーが怒ります)。入力検証コントロールは、このような入力チェックのためのJScriptを自動生成し、それをHTMLに挿入します。入力エラーがあった場合にはメッセージを表示します(図5)。

図5 入力検証コントロール

.NETのWebアプリケーションは、Web Formsコントロールを使って作成しなければならないわけではありません。従来のASPのように、個々のHTMLのタグをプログラム的に転送することも可能です。とは言え、Web Formsコントロールを使えば効率的に楽しくプログラミングできます。Visual Studio .NETを使えば、皆さんのアイディアでオリジナルのWeb Formsコントロールを作成することもできます。「HTMLのタグとJScriptを生成してWebブラウザで動作する本格的なグリッドを実現できた」なんて人がいましたら、ぜひ筆者にお知らせください。きっと大ヒット商品になりますよ!

●おわりに

「ASPで作成されたWebアプリケーションをASP.NETに移行させた方がいいでしょうか?」と聞かれることがよくあります。現状問題なく動作しているなら、移行する必要などないでしょう。ただし、コンパイラ形式でプログラムを実行するASP.NETの方が従来のASPより高速なので、パフォーマンスの向上が必須課題なら移行を検討してもよいと思います。.NETでは、Webブラウザで実行するスタイルのWebアプリケーションだけでなく、XML Webサービスを利用するWindowsアプリケーションというスタイルでWebアプリケーションを作成することもできます。高度なユーザーインターフェイスが必須課題なら、このようなスタイルのWebアプリケーションも検討の候補に入れてください。




< 今後の予定 >


第5回 XML Webサービスは、.NETの目玉商品なんです!
XML Webサービスのコンセプトと、基本的な作成方法を説明します。あなたのアイディアが広がります。
PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.