Webの技術は多種多様、どこから手をつければいい?
Amazon、楽天、Gmail、Twitterなど、インターネットに接続して利用するこれらのサービスやツールは、Webアプリケーション(以下、Webアプリ)と呼ばれます。Webアプリ全盛の昨今、IT技術者がWebアプリの開発案件に携わることも多くなりました。ただ、その開発にはプログラミングのほかにHTMLやCSS、データベース、フレームワーク、ネットワーク、セキュリティなど多種多様な知識が必要です。技術を学ぼうにも、どこから手をつければいいのでしょうか。
じつは、Web技術の根幹はHTTPというプロトコル(通信規約)です。HTTPそのものはシンプルなのですが、そのシンプルなしくみを使って凝ったアプリケーションを実現しようとしたため、後付けでさまざまなしくみや技術が加えられ複雑になっているのです。そこがWebアプリ開発の難しいところです。
Webサーバを作ることは、HTTPとその周辺技術を学ぶこと
では、まずHTTPから学ぶとして、どんな手段で学ぶのが良いでしょう。本当にHTTPの知識を活用できるようになりたいなら、Webサーバを作ってみることをお勧めします。
「Webサーバを作るなんて難しそう!」そんな声が聞こえてきそうです。でも、大丈夫。すごく簡単なところから始めればいいのです。たとえば、最初は単なるテキストデータを通信するプログラムから始めましょう。すると、通信をするにはHTTP以前にTCP/IPというプロトコルを使う必要があることを知るでしょう。でも、今どきのプログラミング言語にはTCP/IPを簡単に扱える関数やメソッドが用意されています。案ずることはありません。
次に、この通信プログラムを発展させて「ブラウザからのリクエストを受信したら、リクエストされたHTMLファイルをブラウザに返す機能」を付け加えてみます。HTMLもテキストデータですから先ほどの応用です。ただし、ここで「ブラウザがどんなリクエストを送ってくるのか」、「HTMLファイルはどんなデータ形式で返せばいいのか」という疑問が出てきます。そのルールを決めているのがHTTPです。HTTPの仕様どおりにデータを送受信するようにプログラムを改造すれば、これはもう立派なWebサーバです。
さらに、ブラウザからの入力に応じてページを表示するWebアプリ(掲示板など)を作ってみましょう。そうすると、HTMLを動的に生成するしくみ(CGIやサーブレットなど)について知る必要が出てきます。
もう一歩進んで、ショッピングサイトのように複数画面にまたがって1つの目的を達成するようなWebアプリを作るならば、セッションの機能を組み込む必要があります。セッションを実現するにはCookieというものが必要であることも、HTTPを知ったこの段階ならすんなり理解できるはずです。
どうですか? Webサーバを自作すれば、段階的に無理なくHTTPとその周辺技術を学んでいけそう、そんな気がしませんか。
技術は自分で試してこそ活用できる
HTTPのことはWebなどでも学べます。けれど、Webサーバを自分で作ったほうが、HTTPの生データを見ることもできますし、そこから新たな気づきを得ることもあるでしょう。
ところで、イギリスには学びに関するこんなことわざがあるそうです。「聞いたことは忘れる。見たことは覚える。体験したことは理解する。発見したことは活用できる」。Webアプリ開発技術についても、Webサーバ自作を通じて、活用できる知識を身につけてみませんか。
とはいっても、これだけの情報を頼りに1人で実践するのは難しいですよね。そこで『Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門』という本があります。Webサーバ自作やHTTPのしくみは本書で詳しく解説しています。ぜひ本書を参考に、活用できる技術を身につけてください。