Webの世界とは? そこで生まれたWebアプリ&ASP.NETとはどのようなものか? Web開発の基礎知識を身に付けよう。
powered by Insider.NET
前回は、Visual Web Developer 2005 Express Edition(以降、Visual Web Developer)を使うことにより、VB6と同様の手法でWebアプリ(本稿では「アプリケーション」は「アプリ」と略す)を開発できるものの、実際に動作させるとVB6で作成したWindowsアプリと同じようには動作しない点があること紹介した。
WebアプリとWindowsアプリのこのような違いでつまずかないためには、Webアプリの仕組みをよく理解しておく必要がある。そこで今回は、Webアプリの基本的な仕組みと、.NETでWebアプリを構築するためのフレームワークであるASP.NETの基本的な仕組みについて見ていくことによう。
本題に入る前にまずは、「そもそもWebアプリとは何なのか」について、もう一度Webの歴史を振り返えってみよう。
ご存じのとおり、インターネットにはWWW(=World Wide Web。略して「Web」)という仕組みがあり、その仕組みの中でわれわれは、Webサーバに配置したWebページ(=HTML言語で記述されたドキュメント)を、Webブラウザによって閲覧できる。Internet Explorer(以降、IE)やFirefoxは代表的なWebブラウザである。
初めてWebブラウザが登場したころのWWWは、Webサーバ上に置いたWebページを取得して表示するだけの非常にシンプルなものであった。WWWでは、Webページ間をハイパーリンクでつなぐことにより、関連したWebページを簡単に表示することが可能なため、必要な情報に効率よくアクセスできた。また、HTMLの言語仕様が単純だったことから、誰もが手軽にWebページを作成でき、実際に多くの情報がWWWで公開されるようになった。
このような情報アクセスの良さと情報公開の手軽さに加えて、検索サイトの発達が相乗効果を生み、WWWには(ほかのメディアに比べ)圧倒的に豊富な情報が蓄積され、かつそれが簡単に検索可能であるということから、(現在では)多くの人に利用されるようになったのである。
このように革新的な成長を遂げたWWWであるが、最初のころはそれほど更新頻度の高くない情報が多かった。WWWが社会に普及するに従い、次第にニュースや天気予報などのテレビや新聞の変わりとなる情報が提供されるようになった。このときに問題となったのが、Webページを書き換える手間である。
まだ、天気予報のように数時間に1度更新すればよい情報であれば、誰かが手作業でWebページを書き換えるという対応も不可能ではなかった。だが、株価情報のようにリアルタイムで更新される情報までもがWWWで公開されるようになってくると、誰かが手作業でWebページを書き換えて情報を更新するというのは現実的ではない。
そのため、何らかのシステムによって管理されている情報を(例えば株価情報は証券会社などがデータとして保持している)、何らかのシステムによって自動的に加工してWebページを作成・更新する必要が出てきた。そのシステムがWebアプリなのである。
初期のWebアプリは社内向けシステムとして作られることが多かった。そこで成長を続け、情報を表示するだけのものから、情報を入力して登録するものへと、その活用範囲を広げていった。
ここで、「初期のWebアプリがどのようなものか」を見てみよう。次のコードは、Perl言語で書かれたWebアプリの一例(sample.pl)である。プログラムの内容は、現在の日時を表示するといった単純なものだ。
#!/usr/local/bin/perl
# 日付の取得とフォーマット
($sec, $min, $hour, $mday, $month, $year) = localtime(time());
$time = sprintf("%04d年%02d月%02d日 %02d:%02d:%02d",
$year + 1900, $month+1, $mday, $hour, $min, $sec);
# HTTPヘッダの出力
print "Content-Type: text/html\n\n";
# HTMLの出力
print "<html>\n";
print "<head>\n";
print "<title>Perl Sample</title>\n";
print "</head>\n";
print "<body>\n";
print "現在の日時は「$time」\n";
print "</body>\n";
print "</html>\n";
プログラム・コードを見ると、まずlocaltime関数により現在日時の取得を行い、sprintf関数によりそれを「2007年08月01日 12:00:00」という形式の文字列へ整形して、$time変数に格納している。その次にprint関数によりHTTPヘッダ(後述)を出力している。最後に、print関数を使ってWebページの内容(HTMLコード)を1行ずつ出力している。
このプログラム・コードでは、Perlの知識に加えて、HTTPヘッダの知識とHTMLコードの知識が要求される。つまり、単にPerl言語を覚えただけではWebアプリが作れないということだ。
ここでHTTPヘッダについて簡単に説明しておこう。Webブラウザは、(例えばHTMLファイルや画像ファイルなど)いろいろなファイルを扱えるが、それを正しく表示するためには、あらかじめ「どのようなファイルが送られてくるのか」をWebサーバから教えてもらう必要がある。そこで使われる情報が「HTTPヘッダ」である。
HTTPヘッダは、主に「これからWebサーバがWebブラウザに対して送ろうとしているものがどういう種類のデータか?」といった情報であり、実際のWebページの内容などではないため、Webブラウザには表示されない。例えば上記コードでは「Content-Type: text/html」というHTTPヘッダを送信しているが、これは「コンテンツの種類がHTMLコードであること」をWebブラウザに通知しているというわけである。
HTTPヘッダの送受信の手順は、WebサーバとWebブラウザが適切にやりとりを行えるようにするためにあらかじめ決められている。この手順は「プロトコル」と呼ばれる。WWWにおけるWebサーバとWebブラウザの間では「HTTP(HyperText Transfer Protocol)」というプロトコルが使われる。このHTTPプロトコルの存在により、WebブラウザはどんなWebサーバとも接続でき、情報をやりとりできるようになっているのである。
話を戻そう。現在求められるWebアプリを一から作ろうとすると、HTTPヘッダとHTMLコードに対する膨大な知識と深い理解が必要となる。
なるほど、上記のコードで出力しているHTTPヘッダは単純だ。しかし、作成するWebアプリが複雑になればなるほど、さまざまな情報をHTTPヘッダで送信することになる。そうなると、HTTPプロトコルについてより深く理解しておく必要が出てくる。また、HTMLコードもこの例は単純だが、例えばカレンダーのような表示を行おうとすると、<TABLE>タグを使った煩雑なコードを書かないと実現できない。
以上のような理由から、Webアプリの開発はとても大変だ。そのため、これまでにWebアプリを開発する方法がいろいろと考えられてきた。例えば、ASP(Active Server Pages)、JSP(Java Server Pages)、PHPなどである。これらは、先ほど取り上げたPerlよりも断然使いやすかったが、それでもやはりHTMLやHTTPといった技術をまったく知らずに使えるといったものにはなっていなかった。Webアプリ開発を始める壁は厚かったのだ。
そのような中で満を持して登場したのがASP.NETである。ASP.NETは、こういったHTMLやHTTPをできる限り意識しなくてもWebアプリが開発できるように設計されている(もちろんHTMLを習得することのハードルはそれほど高くないが、多くのWebブラウザに対応する正しいHTMLコードを記述するのは容易ではない)。
それではASP.NETが、どのような仕組みによりHTMLやHTTPをできる限り意識しなくてよくなっているのかを示そう。以下では、HTMLの知識を必要最小限に減らしてくれるASP.NETの機能として「コードビハインド」と「コントロール」について紹介する。
Copyright© Digital Advantage Corp. All Rights Reserved.