pyてよn日記

一寸先は闇が人生

プロになるための Web 技術入門:その1 - Web アプリケーションとは何か,Web の発展

 Web の基本が学べる良書として紹介されていた「プロになるための Web 技術入門」という本を読み始めた.そのメモ書きとして読んだ部分から少しずつまとめていこうと思う.今回は 1,2 章の Web アプリケーションの概要,Web の発展についてまとめる.

 上記の本は非常に分かりやすく頭にすっと入ってくる表現が多い印象を受けた.また,「サーバ」,「クライアント」,「コンパイル」などの用語も平易に解説しており基礎用語の良い復習にもなる.私のような独学者にとって,調べてもなかなか整理された情報が得難い部分を補完してくれる本だと思う.

1 章:「Web アプリケーション」とは何か?

 デスクトップアプリケーションと Web アプリケーションの違いを簡単に表にまとめる.

デスクトップアプリケーション Web アプリケーション
処理の主体 手元の PC サーバ
画面の表示 OS 上で表示 Web ブラウザ上で表示
インストール 必要 不要
Word,ExcelWeb ブラウザ Amazon.co.jp,各種 EC サイト,NAVITIME などの交通アプリ

 少しややこしいが,Internet ExplorerIE),Google ChromeFirefox などの Web ブラウザ自体はデスクトップアプリケーションである. 「デスクトップアプリケーション」である Web ブラウザを通して「Web アプリケーション」を利用することになる.

2 章:Web はどのように発展したか?

 Web がどのように発展してきたかについてまとめる.

技術の発展を学ぶことの重要性

 2 章の冒頭において,著者は技術の発展について学ぶことの重要性を指摘している.

ある技術が生まれるに至った背景や流れを理解しておくと,そのあとに新しい技術が出てきても比較的すんなりと理解することができます.技術とは偶然ではなく必然をもって生まれてくるからです.その必然性を理解することが,新しい技術を素早く理解する近道となります.

また,歴史の流れは基礎から応用へと進むので,技術の歴史を理解するとその技術を体系的に理解できるようになります.

 「技術とは偶然ではなく必然をもって生まれてくるからです」という言葉は自分の頭の片隅に留めておきたい言葉.

Web の発展をざっくり学ぶ

1. インターネットの誕生と普及

  • 大学や研究機関で研究成果等を電子メールやファイルでやりとりし始めたのがインターネットの原型.
  • 「インターネット」とは,世界中のコンピュータが相互接続することによりできる通信網のこと.

2. WWW の誕生と普及

  • 電子メールやファイルでは情報共有がやりづらい.もっと良いやり方がないか?
  • そこで考え出されたのが「ハイパーテキストシステム」.これは,HTML による統一された形式による文書の表現とその文書間の参照を「ハイパーリンク」で実現するシステムである.参考文献,関連する論文資料が簡単に閲覧できるようになる.
  • 「WWW」とは,インターネット上で提供されるハイパーテキストシステムのこと.
  • WWW によるブレークスルーは,「インターネット」と「ハイパーテキストシステム」を繋げたことである.
  • 情報共有の利便性が上がる.

3. Web ブラウザの祖先 NCSA Mosaic の登場

  • 従来はテキスト(文字)のみが表示され,画像などは別のウィンドウで表示されるのが一般的だった.
  • Mosaic が開発されたことにより,テキストと画像を混在させたページを表示できるようになった.Mosaic現代の Web ブラウザの原型である.
  • Web ページの表現力が上がったため,一般の人々の興味を惹くようになった(Web の普及).
  • Mosaic をベースとして発展していったのが現在の IEGoogle Chrome などのブラウザである.

4. Web を支える技術の発明

  • クライアント・サーバシステム
    • WWW によるハイパーテキスト(動画などを含めるとハイパーメディアともいう)の公開と閲覧は,クライアント・サーバシステムで実現されている.
  • リソースの場所はどこ?:URL
    • 「URL」とは,ホストコンピュータ,リソースのインターネット上での位置を示す文字列のこと.
    • 「リソース」は,インターネット上で送受信される HTML などの情報のこと.Web ページに表示される画像,動画などもリソースの一部である.
    • 「ホストコンピュータ」はリソースが保存されているコンピュータのこと.Web の文脈では Web サーバのこと.
    • URL は,「スキーム + ホスト名(ドメイン名) + パス名」からなる.
  • リソースを送受信するための取り決め:HTTP
    • ハイパーテキストなどのリソースを異なるコンピュータ間でどうすればやり取りできるかという問題が出てきた.
    • Web サーバと Web クライアントが情報をやり取りするための取り決めをするのが「通信プロトコル」であり HTTP である.

5. CGI の登場

  • 静的なページではつまらない -> プログラムで動的なページを作れないか?というのが CGI の始まり.
  • CGI」は Common Gateway Interface の略で,Web サーバと外部プログラムを連携するためのインタフェースのこと.
  • CGI により,Web サーバ上で外部プログラムを動作させ,動的な Web コンテンツの生成ができるようになった
  • 例えば,Web サイトのアクセス数,時刻に合わせたメッセージなどコンテンツにちょっとした変化を加えることができるようになった.

6. Java / サーブレットの登場

  • CGI の問題点
    • CGI で主に使われていた言語である Perl は大規模アプリケーションの開発に向いていなかった.
    • CGI 経由でプログラムが呼ばれる度に新しいプロセスが起動されるため,アクセス数が多くなるにつれて処理が追いつかなくなる.
  • Java / サーブレットの登場
    • Javaオブジェクト指向のフルサポート,その他標準機能(マルチスレッド,セキュリティ,ネットワーク通信)が豊富で大規模システムの開発がやりやすい.
    • サーブレット」は HTML などの Web コンテンツを生成するための Java プログラムのこと.Java プログラムの中に HTML を文字列として埋め込む
    • Web サーバと同じプロセスでコンテンツを生成するプログラムが動作するため比較的高速.
    • JVM によるクロスプラットフォームでの Java プログラムの動作の実現.

7. JSP の誕生

8. Web アプリケーションフレームワークの時代

  • サーブレットJSP ではコーディング量が膨大で,成果物のつなぎ合わせ時の不整合が起こるなど大規模な Web アプリケーションでのソースコードの管理が非常にしづらい.
  • Web アプリケーションに関する共通部分,土台となる部分を「フレームワーク」が担うようになり,開発効率が格段に上がった.

用語説明

  • コンテンツ
    Web サーバを通じて公開される情報.

  • ユニーク unique
    「一意な」という意味.「面白い」ではない.

  • プロセス
    コンピュータで動作するプログラムの単位.Web サーバと動的コンテンツを生成するプログラムは異なるプロセスである.

  • マルチスレッド
    複数の処理を同時に実行するための仕組み.実際には同時実行ではなく,短時間で複数の処理を少しずつ切り替えながら実行することにより見かけ上同時実行がなされているように見える.

  • コンパイル
    プログラムを翻訳すること.通常のプログラミング言語は人間が読めるように記述でき,コンピュータはその意味を解釈することができない.そのため,プログラムを実行するためにプログラムをコンピュータが理解できる命令(機械語)に変換する作業が必要になる.この変換作業のことをコンパイルと呼び,変換作業を行うソフトウェアのことをコンパイラと呼ぶ.

  • コンパイル言語
    コンパイルが必要な言語.ソースコードを先に全て翻訳するためプログラムが高速に動作する.C 言語など.一括翻訳

  • インタプリタ言語
    ソースコードインタプリタで逐次機械語に変換しながら実行する言語.逐次翻訳するという性質上,コンパイル言語より動作が遅い.PerlPython など.逐次翻訳Javaインタプリタ言語とコンパイル言語の中間に位置する.

  • プラットフォーム
    ソフトウェアを動作させるハードウェアと OS の組み合わせのこと.

終わりに

 かなりざっくりだが Web の発展についてまとめてみた.「なぜこの技術が存在するのか」という視点は新しい技術を学ぶ際に非常に重要だと思うので定期的にこの問いかけを思い出すようにしたい.冒頭で紹介した本は Web 開発の初学者にとっても分かりやすく,知識の整理をするのに役に立つと思うのでおすすめ.