勉強会資料①

20
勉勉勉勉勉WEB 勉勉勉勉勉勉勉勉勉勉勉勉勉

Transcript of 勉強会資料①

Page 1: 勉強会資料①

勉強会資料①

~WEBアプリケーションの基礎知識~

Page 2: 勉強会資料①

目次 Webアプリケーションとは サーバーサイドの技術 クライアントサイドの技術 WEBアプリケーションレイヤー

Page 3: 勉強会資料①

Webアプリケーションとは ウェブの機能や特徴を利用したアプリケーションソフトウェアのこと デスクトップアプリケーションとの比較

ユーザー毎の端末へのインストールが不要 Webサーバー上のファイルを更新するだけで全ユーザーに対してアップデートが可能

ユーザーの環境が異なっていてもWebブラウザが動作すればよい Webサーバーやネットワークに障害が発生した場合は利用不可 Webブラウザによっては描写や動作が異なる場合がある

基本的にはサーバーサイドでユーザーからの入力や、 DBからのデータに応じて、 HTMLなどのリソースを動的に生成する仕組みを備えているものを指す

Page 4: 勉強会資料①

Webアプリケーションとは 基本的なWebの動作1. ブラウザで URLを入力2. Webサーバーが URLに該当するリソース( HTMLや画像など)を返却

3. ブラウザが受け取った内容を描画(レンダリング)

1. http://www.nsw.co.jp/index.html

2. /var/www/html/index.html

3.描画

Page 5: 勉強会資料①

Webアプリケーションとは クライアントサイドとサーバーサイド1. 【クライアント】ブラウザで URLを入力2. 【サーバー】Webサーバーが URLに該当するリソース( HTMLや画像など)を返却

3. 【クライアント】ブラウザが受け取った内容を描画(レンダリング)

1. http://www.nsw.co.jp/index.html

2. /var/www/html/index.html

3.描画

Page 6: 勉強会資料①

Webアプリケーションとは 表示内容を動的に生成する仕組み

プログラムを通して HTMLや画像等を生成すること

Page 7: 勉強会資料①

Webアプリケーションとは HTMLの動的な生成を含む場合の動作1. 【クライアント】ブラウザで URLを入力2. 【サーバー】Webサーバーが URLに該当するプログラムを実行し、作成したリソース( HTMLや画像など)を返却

3. 【クライアント】ブラウザが受け取った内容を描画(レンダリング)

1. http://www.nsw.co.jp/index.cgi

2. /var/www/cgi-bin/index.cgiの実行結果

3.描画

Page 8: 勉強会資料①

Webアプリケーションとは 起点(この場合は URL)は同じだが生成物(この場合は

HTML)が異なる状態を動的な生成という 起点と生成物が常に同じ場合は静的という

Page 9: 勉強会資料①

Webアプリケーションとは 例えば・・・

Web上で会員登録を行う場合、ユーザーは自分の個人情報を入力する

多くの場合、登録内容の確認画面としてユーザーが入力した内容を表示して、ユーザーに内容を確認させる

この画面は動的!

Page 10: 勉強会資料①

サーバーサイドの技術 動的に生成する手段(簡単に言うとプログラミング言語)は無数にあるが、代表的なものは以下のとおり Java、 PHP、 Perl、 VB( .NET)、 Ruby、 Python

それぞれ特徴はあるが高級言語であることがほとんど ちなみに・・・

WSの実績としては Java、 PHP、 Perlがほとんど 新規の案件では Java、 PHPのどちらかにしている

低級言語( C、 Lispなど)を使う場合もある 高速化のために 基本的にサーバーサイドの処理時間はネットワーク遅延より短いため、特に現在では選択することはほとんどない(全くないと言ってもいいぐらい)

厳密に手段を定義すると、 CGIとインタープリタに大別される CGI= Common Gateway Interface インタープリタ=mod_php( Apacheモジュール)、 Java

Servlet( APサーバ)など

Page 11: 勉強会資料①

クライアントサイドの技術 クライアントサイドの機能を活かしてページを動的に変化させる技術 Javascript、 Adobe Flash、Microsoft Silverlight、 Java FXなど 近年のクライアントのスペック向上にしたがって利用機会は増えている

主にユーザーインターフェース( UI)を強化する目的で使用される 見た目が格好良かったり、入力補助をしたり 英語ではUser Experience(和訳は体験)と表記されることが多い

リッチインターネットアプリケーション クライアントサイドの技術を活かした、柔軟なインターフェースをも

つ Webアプリケーションを“リッチ・インターネット・アプリケーション( RIA)”と呼ぶことがある 最近ではWebアプリケーションがクライアントサイドの技術を内包することが当たり前になりつつあるので、呼ぶ機会は減っている

Page 12: 勉強会資料①

(参考)レイヤーとは 技術、物体などを動作あるいは管理する範囲を階層(レイヤー)に分けて定義した場合に、物理的な階層を低い、仮想的な階層を高いとする概念 低レベル(=簡単)、高レベル(=複雑)という意味ではない OSI 参照モデル、 TCP/IP 参照モデルが代表的な階層分け (レイヤリング)

OSI 参照モデルとは コンピュータの持つべき通信機能を階層構造に分割したモデル

TCP/IP 参照モデルとは インターネットで稼働するプロトコルの階層(プロトコルスタック)と、それを実装する通信プロトコルの一式(プロトコルスイート) 要するにインターネットを実現するためのレイヤリングのこと 階層名が OSI 参照モデルと同じだが、直接の関連はない

Page 13: 勉強会資料①

(参考) OSI 参照モデル 7 階層が定義されており、上にいくほど高い、下に行くほど低いと表現される

階層 OSI参照モデル

役割 例

7 アプリケーション層

具体的な通信サービス ブラウザ、メーラー

6 プレゼンテーション層

データの表現方法 EBCDIC⇔ASCII変換

5 セッション層 通信の開始から終了までの手順

RPC

4 トランスポート層 エラー訂正、再送制御 TCP、 UDP

3 ネットワーク層 通信経路の選択 ルーティング2 データリンク層 通信機器間の信号の受け渡し イーサネット、 P2P

1 物理層 物理的な通信機器 ルーター、 LANケーブル

Page 14: 勉強会資料①

(参考) TCP/IP 参照モデル Webアプリケーションに登場するクライアント、サーバーは通信機器といえるが、厳密には OSI 参照モデルではなく TCP/IP 参照モデルに準拠している

アプリケーション層

トランスポート層

ネットワーク層

データリンク層クライアント ルーター A ルーター B サーバー

Page 15: 勉強会資料①

(参考)レイヤリングの利点 各レイヤーで役割が決まっている

隣のレイヤーから渡されるデータと、渡すデータを知っていれば良い

相手の同じレイヤーと直接やり取りしているようにみなせる

アプリケーション層

トランスポート層

ネットワーク層

データリンク層クライアント ルーター A ルーター B サーバー

私はブラウザですhttp://www.google.co.jp/

を見たいよ

通信開始データを送るよ

www.google.co.jpは X.X.X.Xにあるよ

X.X.X.Xに行くにはルーター Aを通るよ

データをルーター Aに送るよ

www.google.co.jpは X.X.X.Xにあるよ

X.X.X.Xに行くよ

データを受け取ったよ

私はWEBサーバーですOK

HTMLを返すよここが直接に見える

Page 16: 勉強会資料①

WEBアプリケーションレイヤー

クライアント サーバソフトウェア

ネットワーク

ネットワーク

ミドルウェア

WEBアプリケーション

ブラウザHTML JS

CSS 画像

SSL

LAN

Firewall

Proxy LAN

Firewall

TCP/IP

iptables

WEBサービスDBMS

APPサービス

Apache

Tomcat

PHP Java Perl

フレームワークMysql

Page 17: 勉強会資料①

問題の切り分けブラウザが表示するエラー

ネットワークに問題がある場合がほとんど

・ ping、 traceroute(tracert)・ netstat、 iptables

Apacheのデフォルトエラー・ 404 Not Found・ 403 Forbidden

・ 500 Internal Server Error

WEBアプリのエラー

Page 18: 勉強会資料①

動作主体の切り分け

HTML

JS CSS

<html> <head> <meta ・・・> <title> ・・・</title> <link ・・・> <style type=“text/css”> ・・・ </style> <script type=“text/javascript”> ・・・ </script> </head> <body> ・・・ </body></html>

http:// ・・・ /index.php

作成する

実行する

レイヤーが違う!

Page 19: 勉強会資料①

動作主体の切り分け サーバーサイド( PHPや Java)から見るとブラウザが IEでも FireFo xでも何であれ動作に関係はない つまり作成する HTMLや JSに変わりはない

クライアントサイド( HTMLや JS)から見るとWEBアプリが PHPでも Javaでも動作に関係はない つまり動作する HTMLや JSに変わりはない

Page 20: 勉強会資料①

まとめ WEBアプリケーションとは、表示内容を動的に生成する仕組み サーバサイド、クライアントサイド共に

WSで利用するサーバサイドのプログラミング言語は PHP、 Javaがほとんど クライアントサイドは HTML、 JS、 Flashなど

レイヤリングによって問題の切り分け、影響範囲の特定ができる

“ レイヤリングを意識した設計・製造”により”拡張性・保守性の高いシステム”が構築できる