Introduction to Web development 1




                          Hideaki Honda
contents




 Webアプリケーションとは何か?
 どのように発展してきたのか見てみよう!
 Webアプリケーションを構成する要素を理解しよう!




 Page 2
Webアプリケーションとは何か?
Webアプリケーションとは何か(1)


アプリケーション(ソフトウェア)には、大きく以下の2つに分かれます。
デスクトップアプリケーション           Webアプリケーション
普段良く使われているExcelやWordなど   代表的なものでは、Google MapやYahooの
がこれにあたります。CDやインストーラ      乗換案内サービスなどがあります。
から「インストール」をして、初めて使う      「インストール」をすることもないので、
ことが出来るようになります。インストー      普段はアプリケーションだと意識するこ
ルをしたPCでのみ利用可能です。         とは無いかもしれません。ブラウザさえ
                         あれば、どこからでも利用可能です。




           インストール




 Page 4
Webアプリケーションとは何か(2)


PC・ブラウザの性能向上とともに、デスクトップ・Webアプリケー
ションの両方の形態を取る製品も増えてきています。
MicrosoftのOfficeも、昨年に「 Office 365 」という製品名で、Webアプリケー
ション版がリリースされています。


 デスクトップアプリケーションとWebアプリケーションの違いをまとめると、
 以下のようになります。
                デスクトップアプリケーション     Webアプリケーション
 処理しているところ      作業しているPC           サーバ
 画面の表示          OS上で表示             Webブラウザ上で表示
 インストール         必要                 不要
 インターネットへの接続    不要                 必要(※)

 ※最近では、Gmailのようにオフラインに対応しているものも増えています。

 Page 5
どのように発展してきたのか見てみよう!
Webの基礎
・クライアント・サーバモデルとは


まずはじめに、Webの世界では大きな前提があります。
それは、クライアントとサーバが存在しているということです。
この仕組みを、「クライアント・サーバモデル」と呼びます。
クライアント側(サイド)、サーバ側(サイド)のそれぞれで技術的な発展を
遂げていっているのです。




 Page 7
Webの基礎
・クライアントサイドについて


では、クライアントを見てみましょう。
クライアントとは、「アプリケーションを使う側」のことを指します。
実際にアプリを使うのは人間ですが、システム的に見ると、「Webブラウザ」を介してアプリケーショ
ンが動作するので「Webブラウザ」がクライアントということになります。
ブラウザは、ユーザからの操作を受け付け、サーバに情報の要求を行います。
Webブラウザも1種のアプリケーションで代表的なものでは、IEやFirefox等があります。
また、単にクライアントと呼ぶこともあれば、「Httpクライアント」「Webクライアント」と呼ぶこと
もあります。




 Page 8
Webの基礎
・サーバサイドについて


では、サーバを見てみましょう。
サーバとは、「アプリケーションを提供する側」のことを指します。
サーバには「Webアプリケーション」が入っていて、クライアントから要求(リクエスト)があった時に
「Webアプリケーション」が動いて、応答結果(レスポンス)を返します。
クライアントが要求している結果(ファイルやデータ)を作成するのは、「Webアプリケーション」にな
りますが、クライアントとのやり取りを行うために「Apache」や「IIS」などのサーバ用アプリケーシ
ョンが必要となります。このアプリケーションを、「Httpサーバ」や「Webサーバ」と呼びます。




 Page 9
Webの基礎
・クライアントとサーバを繋ぐHTTPについて


クライアントとサーバがあるだけでは、Webアプリケーションは動きません。
その間にはインターネットで繋がっていて、通信が行われます。
その通信では、どのように情報をやりとりするかという取り決めが必要に
なり、この取り決めを「通信プロトコル」と呼びます。
Webアプリケーションでは「HTTP」が使用されます。
※HTTPについては、内容が大きいので、また別の機会に詳細を説明します。




 Page 10
クライアント技術の発展について(1)


クライアント技術の発展は、ユーザの操作性をいかに向上させるかに力を注がれ
てきました。多くの技術が生まれ、定着したもの、そうでないもの様々です。

            HTML    HTMLだけでも画面は作れますが、操作性が良いとは言えません。
                    それは、もともとが文章のやりとりをするために考えだされたものだからです。
                    また、HTMLを解釈するブラウザの実装がベンダごとに異なるため、
                    同じHTMLでも表示が異なることが良くあり、問題となっています。

        applet      ブラウザ上で動くJavaのプログラムです。グラフィカルな表現や複雑な
                    ロジックを組むことも出来るのですが、発表された当時のネット環境では
                    満足に動作させることが出来ず、いまひとつ普及しませんでした。

            Flash   きれいなアニメーションを作れるとあって一時ものすごく人気がありました。
                    Adobeが開発していて、動作にはブラウザにプラグイン(Player)が必要となり
                    ます。ここ最近では、脱Flashを図るWebサイトも多くなっており衰退傾向に
                    あります。その理由は、後述するHTML5の登場により、HTMLそのものでも
                    十分な表現が出来る様になりつつあるためです。モバイルの分野では、
                    iPhoneがFlash非対応としたことや、Adobeがモバイル向けPlayerの開発を
                    中止したことにより、とても厳しい状況にあります。
                    今後は、Webだけでなくゲームのアニメーションにも利用されていきそうです。


 Page 11
クライアント技術の発展について(2)



  リッチクライアント     非常に多くの技術が生まれています。大きく分けると3つのタイプに分かれます。
                1. Javascript型・・・Ajax(prototype.js、jQuery.jsなど)
                2.プラグイン型・・・Flex、Silverlight、JavaFXなど
                3.インストール型・・・AIR、Curlなど
                いずれも高い表現力、操作性を持たせることが出来ますが、そのための
                開発(コーディング)が当然必要になってきます。
                高品質なWebアプリケーションを開発するためには外せない技術で、
                HTML+αという位置づけになっています。

   シンクライアント     Webクライアント(ブラウザのこと)での操作性を高めるのではなく、
                ユーザが使用するPCのリソースを必要最低限にして、ネットワークを介して
                サーバ上でアプリケーションを使用する方法です。クライアントPCに
                データを保持しないことによりセキュリティ向上につながります。
                ※技術の発展というよりは、方式の進化といった気がします。

        HTML5   HTMLのVer.5にあたるものです。まだ仕様は確定していませんが、
                先行でサポートしているブラウザもあります。徐々にFlashからHTML5
                への転換が進んでいることからわかるように、HTMLだけでもリッチな画面を
                作成できるよう進化を遂げています。Webの世界では、今一番ホットなテー
                マと言えるでしょう。詳細はまた別の機会に。
 Page 12
サーバ技術の発展について


サーバ技術の発展は、いかに効率良く開発して動かすかというところが
ポイントになります。

            CGI    クライアントからの要求を受けて、CやPerlなどで書かれたプログラムを
                   動かすための仕組みです。今でも掲示板やアクセスカウンタなどに、
                   利用されています。ただ、開発のし難さや、サーバのリソースを消費しやすい
                   といった問題から、大規模なシステムには向きませんでした。
     Servlet/JSP   CGIの問題点を補うことと、開発言語であるJavaの利点とあいまって、
                   サーバサイド技術といえば、Servlet/JSPと言われるぐらい主流となっています。
                   ただ、動作させるには、APサーバ(Tomcatが有名)の構築が必要となるなど
                   敷居が高く、個人レベルというよりは企業システム向けと言えます。
      PHP/Ruby     より簡単に開発するために、比較的容易に技術習得出来るPHPやRubyでの
                   開発も増えています。ただ、深刻なセキュリティホールが見つかるなど、
                   セキュリティ面での課題もあるため、企業システムの分野では、いまひとつ
                   といった感じです。

    フレームワーク        ServletやJSPだけでも開発は出来ますが、もっと楽に効率良く開発出来ないか
                   という目的で考えだされたのが、フレームワークです。フレームワークが
                   アプリケーションのベースとして存在していて、必要な部分だけを開発して
                   いけば、より短い時間で作ることが出来るようになる、という仕組みです。
                   実際はフレームワークを習得する必要が出てくるのでそう上手くはいきません。
                   Javaの世界では、StrutsやSpringが良く使われています。
 Page 13
Webアプリケーションを構成する技術



              CSS
                          Flash                       Curl
            HTML
                      Ajax                                    AIR
                                                                      JavaFX
                                                             Applet

                                       PHP
                                                    CGI
                              .Net
                                             Ruby


                                     Framework
            Servlet/JSP



               SQL                     DBMS



                                                          ※私が主観で決めた、技術の配置図です。
 Page 14
Webアプリケーションを構成する要素を
理解しよう!
Webアプリケーションの構成を理解する
静的コンテンツの提供


ここまでで、クライアントとサーバが存在していて、それぞれに様々な
技術があって、成り立っているということが分かって頂けたと思います。
ではここからサーバサイドについてより詳しく見ていきましょう。
<静的なコンテンツを提供する場合のサーバ構成>
あらかじめ用意しておいたホームページ(これを静的コンテンツと呼ぶ)を、
表示させたい(提供したい)場合には、Webサーバがあれば事足ります。
Webサーバ上にコンテンツとなるファイルを置いておき、アクセスをすれば
ブラウザにはそのコンテンツが表示されるようになります。




 Page 16
Webアプリケーションの構成を理解する
動的コンテンツの提供とAPサーバの登場


動的なコンテンツとは、ユーザの入力したデータを解釈して、動的に生成された
コンテンツのことを言います。Google Mapを例に考えてみましょう。
住所や地名を入力すると、動的にページを変化させて、目的の場所を表示してくれます。
これは、サーバサイドでプログラムが動いて、処理した結果が表示されているのです。
<動的なコンテンツを提供する場合のサーバ構成>
これまではWebサーバだけでしたが、新たにAP(アプリケーション)サーバが登場します。
このサーバに、Webアプリケーションを置く(※)ことにより、プログラムを動かせるのです。
APサーバの詳細は、後述の「APサーバの代表的なソフトウェア」を参照してください。
※サーバにWebアプリケーションを配置することを「デプロイする」と言います。




 Page 17
Webアプリケーションの構成を理解する
データを保存しておくためのDBサーバ


Webアプリケーションが高度化してくると、使用するデータも増えていきます。
そこで登場するのが、DB(データベース)サーバです。
DBサーバにデータを蓄積することにより、Webアプリケーションから効率よく
活用することが出来るようになります。
<DBサーバを使用する場合のサーバ構成>
下の図のように、「Webサーバ」「APサーバ」「DBサーバ」の3つで構成されていることを、
「三層構成」と呼ばれ、最も一般的な構成です。システムの規模を変更するときには、
各層のサーバを増やすことで、処理を分散させたり、故障に備えやすくなります。




 Page 18
Webサーバについて


役割
Webクライアントからの要求に応じてデータを送信する役割を担う。

補足
※Webサーバという呼び方ですが、ApacheやIISなどのソフトウェアを
指すこともあれば、それが稼働するコンピュータを指すこともあります。

Webサーバの代表的なソフトウェア
 製品名             開発元          ライセンス            特徴
 Apache HTTP     Apache       Apache License   世界中で最も良く使われていて、市場の7
 Server          Software                      割を占めています。個人レベルから大企業
                 Foundation                    まで幅広く利用されています。オープン
                                               ソースであるため、無償で利用可能です。
                                               最新バージョンは、2.4系です。
 IIS (Internet   Microsoft    匿名アクセスで          市場では2割のシェアを占めています。
 Information                  あれば必要無し          設定のハードルが高いため、企業や上級
 Services)                                     ユーザに人気です。最新バージョンは、
                                               7.5系です。

 Page 19
APサーバについて


役割
プログラムの実行とデータベースへの接続機能を提供する。
Webサーバほどの高機能ではないが、Webサーバとしての機能も持つ。
APサーバの代表的なソフトウェア
 製品名         開発元          ライセンス            特徴
 Tomcat      Apache       Apache License   オープンソースであるため、無償で利用可
             Software                      能です。インストールが簡単で使いやすい。
             Foundation                    最新バージョンは、7.0系。
 Oracle      Oracle       プロプライエタリ         各種設定やデプロイを画面から行うことが
 WebLogic                                  でき、操作が分かりやすいです。
 Server                                    最新バージョンは、12.0系。
 JBoss       Red Hat      GNU LPGL         オープンソースであるにもかかわらず、
                                           商用サポートが受けられる点が人気となっ
                                           ています。動作も軽快です。
 GlassFish   Oracle       CDDL ,GNU GPL    小規模から大規模まで拡張性が高い。
                                           商用サポートを受けることが可能。
 WebSphere   IBM          プロプライエタリ         大規模システムでの実績が高く、多くの企
                                           業で採用されています。
 Page 20
DBサーバについて


役割
データの保持と管理(取得・追加・削除・更新)を担う。


DBサーバの代表的なソフトウェア
 製品名          開発元             ライセンス            特徴
 Oracle       Oracle          プロプライエタリ         幅広いプラットフォームをサポートする
                                               RDBMS。商用DBとして最大シェアを誇る。
                                               最新バージョンは11g。
 SQL Server   Microsoft       Microsoft EULA   .Netとの親和性が高く、小規模から大規
                                               模まで広く使うことが出来ます。
 DB2          IBM             プロプライエタリ         多くのプラットフォームで動作します。

 Netezza      IBM             プロプライエタリ         速度がウリのRDBMSです。

 PostgreSQL   PostgreSQL      BSD              MySQLと同じオープンソースのDBですが、
              Global Develo                    日本で特に人気が高く、海外ではあまり
              pment Group                      使われていないようです。
 MySQL        Oracle          GPL              オープンソースのDBとして、世界中で人
                                               気があります。
 Page 21
Webブラウザについて


役割
ユーザからの操作を受け付け、Webサーバへのリクエスト送信、画面の
描画等を担っている。


Webブラウザの代表的なソフトウェア
 製品名                 開発元                  特徴
 Internet Explorer   Microsoft            Windows環境の標準ブラウザ。
                                          シェアNo1のブラウザです。
 Google chrome       Google               非常に軽快な動作で使いやすいです。
                                          アドオンをいれることで機能を拡張できます。
 Firefox             Mozilla Foundation   IEに続いて2番目のシェアを占めています。
                                          様々なカスタマイズが可能です。
 Safari              Apple                Mac環境の標準ブラウザ。
                                          開発者向けの機能が充実しています。
 Opera               Opera Software       パソコンだけでなく、ゲーム機やテレビなど
                     ASA                  多くのプラットフォームで利用されています。

 Page 22
終わりです。
次は、
「Webアプリケーションの中身」
「HTTPとは?」「セキュリティ対策」
「アーキテクチャ」・・・
を予定しています。
参考書籍



「プロになるためのWeb技術入門」小森 裕介 技術評論社
「HTTP & Web」日経BP社




 Page 24

Introduction to web development 1