web programming introduction

42
サーバーサイド Webプログラミング入門 システム工房コルン 今村安伸

Upload: colun

Post on 03-Aug-2015

393 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web programming introduction

サーバーサイドWebプログラミング入門

システム工房コルン今村安伸

Page 2: Web programming introduction

みなさんサイト作ってますか?

Page 3: Web programming introduction

●HTML●CSS

表示するだけ。

Page 4: Web programming introduction

●Java Script●Java Applet●Flash●Silverlight

ブラウザ上で色々動く!

Page 5: Web programming introduction

●CGI●PHP●Java Servlet●ASP.NET

これって必要?

Page 6: Web programming introduction

ブラウザ上のプログラムでなぜ代用できない?

Page 7: Web programming introduction

●利用者と運営●利用者と利用者

この実現に、サーバーは必須。

双方向性

Page 8: Web programming introduction

汎用のDBサーバーでなぜ代用できない?

Page 9: Web programming introduction

ブラウザ上のプログラムは(容易に)改ざん可能

Page 10: Web programming introduction

●データ整合性の保証がない●権限を管理できない●機密データを保護できない

セキュリティの問題点

Page 11: Web programming introduction

サーバーサイドは(容易には)

改ざんできない!

Page 12: Web programming introduction

●データ整合性の保証●権限の管理●機密データの保護

これ以外はブラウザ上でやってよい

逆説的には……

Page 13: Web programming introduction

●M … モデル○実際の処理

●V … ビュー○ユーザへの表示

●C … コントローラ○MとVを繋ぐ

MVCモデル(1)

Page 14: Web programming introduction

●実際の処理○サーバーサイド

●ユーザへの表示○ブラウザサイド

サーバーサイドはMが主役

MVCモデル(2)

Page 15: Web programming introduction
Page 16: Web programming introduction

●ルーティング●テンプレートビュー●アクセス制御リスト●データベース連携

お品書き

Page 17: Web programming introduction

ルーティング

Page 18: Web programming introduction

●リクエスト○http://example.com/hoge.txt

●レスポンス○c:¥example¥hoge.txt

Httpdの仕事(1)

Page 19: Web programming introduction

●リクエスト○http://example.com/fuga.jpg

●レスポンス○c:¥example¥fuga.jpg

Httpdの仕事(2)

Page 20: Web programming introduction

●リクエスト○http://example.com/

●レスポンス○c:¥example¥index.html

Httpdの仕事(3)

Page 21: Web programming introduction

●ビュー○対応するファイル自体

●コントローラ○リクエストを受ける○対応するファイルを返す

ここで行われていること

Page 22: Web programming introduction

●リクエスト○http://example.com/foo.cgi

●レスポンス○c:¥example¥foo.cgi○…を実行○その結果を返す

Httpdの仕事(4)

Page 23: Web programming introduction

●リクエスト○http://example.com/bar.php

●レスポンス○c:¥example¥bar.php○…をPHPで実行○その結果を返す

Httpdの仕事(5)

Page 24: Web programming introduction

●ビュー○ファイルの実行結果

●コントローラ○対応するファイルを実行○実行結果を返す

ここで行われていること

Page 25: Web programming introduction

リクエストを元に誰を呼ぶか決めるのが

ルーティング

Page 26: Web programming introduction

●リクエスト≒ファイルアドレス

●IDなどをリクエストに含める○http://example.com/?id=123

●以下はできない○http://example.com/123

Httpd標準機能の制約

Page 27: Web programming introduction

標準機能がダメなら拡張プログラムで対応→フレームワーク化

Page 28: Web programming introduction
Page 29: Web programming introduction

●ルーティングルール○どんなリクエストを○どのコントローラに

ルールは設定ファイル等で管理

拡張ルーター(1)

Page 30: Web programming introduction

●http://example.com/123○"123"の部分は○パラメータとして認識

設定次第で可能(拡張ルーターが対応してれば)

拡張ルーター(2)

Page 31: Web programming introduction

テンプレートビュー

Page 32: Web programming introduction

printf("<!doctype html>¥n");printf("<html>¥n");printf("<head>¥n");printf("<title>%s</title>¥n", title);printf("</head>¥n");printf("<body>¥n");:::::

こんなこと、やりたくない

Page 33: Web programming introduction

printf("%s", html().add( head().add( title(nowTitle) ) ).add( body().add( ... ) ).toString());

これもヤダ!

Page 34: Web programming introduction

プログラムでHTMLを生成すると

色々と大変

Page 35: Web programming introduction

そこでPHP(1)

<!doctype html><html> <head> <title><?php echo $title; ?></title> </head> <body> : : </body></html>

これならまだマシ。

Page 36: Web programming introduction

そこでPHP(2)

<ul><?php foreach($list as $item) { ?> <li><?php echo $item; ?></li><? } ?></ul>

……少し、見辛いかな。

Page 37: Web programming introduction

そこでPHP(3)

<ul><?php$result = mysql_query('SELECT id, name FROM xxx');while($item = mysql_fetch_assoc($result)) { ?> <li><?php echo $item['name']; ?></li><? } ?></ul>

htmlも見辛い!処理も見辛い!

Page 38: Web programming introduction

ビューとロジックは分けよう!

Page 39: Web programming introduction

●ロジック○必要なデータを用意

●テンプレートビュー○用意されたデータをテンプレートに当てはめ表示するだけ!

役割分担

Page 40: Web programming introduction

ファイルの役割分担=担当者の役割分担

デザイナーさんが助かる!

Page 41: Web programming introduction

テンプレートエンジン(Smarty)

<ul> {foreach from=$list item=item} <li>{$item}</li> {/foreach}</ul>

これなら見やすい。

色々なエンジンがある。

Page 42: Web programming introduction

●ルーティング●テンプレートビュー●アクセス制御リスト●データベース連携

分量的に無理でした。 おしまい

お品書き