Transcript day3day4

Day3 Day4
Day3 Day4
1
Day3
第1回の宿題の発表
前回のおさらい
CakePHPについて
 最近のWebアプリケーションの開発方
法
 Webアプリケーションフレームワーク
(以下Webフレームワーク)とは
Day3 Day4
2
第1回宿題
複数のテーブルに対するSQL言語の
演習(ものまね)を行ってください
複数のテーブルを使ったWebアプ
リケーションをペアで作成してくだ
さい
Day3 Day4
3
前回のおさらい
WebとWebアプリケーション
HTML
PHP
データベースとSQL
Day3 Day4
4
World Wide Webとは
ブラウザから「http://www.~」と入
力することでいろいろなWebページ
を見せているしくみ。
World Wide Web
Day3 Day4
5
Webページの表示の仕組み
1
“http://www.yahoo.co.jp/index.html”で
指定されるファイルをリクエスト
index.html
Webサーバ
2
“index.html”ファイルを
レスポンスとして返す
3
“index.html”ファイルを
整形(レンダリング)して
表示
Day3 Day4
6
HTML
Webページを作成するためのマーク
アップ言語。
index.htmlはHTMLで書かれたテキス
トファイル。
Day3 Day4
7
Webアプリケーションとは
(Webページをただ表示するだけでな
い)Webの機能や特徴を利用したアプリ
ケーション。
例えば、、、

データを登録していつでも参照できるように
できる。
 Blog

ログイン機能を持たせて会員しか表示しない
ようにする。
 SNS
Day3 Day4
8
Webアプリケーションの
処理の仕組み
1
“http://www.yahoo.co.jp/index.php”の
ページ内容をリクエスト
リクエストを元に処理をする
(データの登録、編集、閲覧、削除)
Webサーバ
2
処理の結果をindex.phpとして
レスポンスとして返す
3
Day3 Day4
“index.php”ファイルを
整形(レンダリング)して
表示
9
PHP
Webアプリケーションの処理の部分
を書くことができるプログラム言語
の1つ。
Day3 Day4
10
Webアプリケーションを作成するには
リクエストとレンダリングはブラウザが担当
します。
レスポンスはWebサーバが担当します。
処理をプログラムとして書く必要があります。
今回は
プログラミング言語としてPHPを選択し、
実際にWebアプリケーションを作成しています。
Day3 Day4
11
データを保存するには
 データベースサーバと呼ばれるデータを格納す
ることに特化したシステムを使用します。

今回はMySQLを使用しています。
 データベースサーバを管理するデータベース管
理システム(DBMS)へ命令するための言語がSQL
です。
データベースサーバ
データベースmydb
の中のテーブル
booksの中からカラ
ムisbnが
98284795825の
データを取得せよ。
SQL
DBMS
データベース
Day3 Day4
12
CakePHPとは
CakePHPとはPHPで書かれたWebフ
レームワークです。
CakePHPのようなWebフレームワー
クを使いこなせると、より高速に、
より直感的に、より抽象的に、Web
アプリケーションの開発ができます。
Day3 Day4
13
Coffee Break:プログラマの特性
プログラマは大抵面倒くさがり。
 開発中、同じコードを何度も書きたく
ない。
 (さらに)開発中、同じようなコードを何
度も書きたくない。
 (それどころか)同じようなコードは一生
書きたくない。
面白そうなコードだけ書いて暮らしたい!
Day3 Day4
14
Coffee Break:プログラマの特性
 じゃあどうする?

小さな同じ処理は関数化してしまおう。


わかりやすいように、意味的に近い処理をグループ
化してしまおう(文字に関する関数(メソッド)群、○○
を処理するための関数と変数(プロパティ)群)。


同じ処理は書かない。
ひとくくりにして意味的にもわかりやすく。呼び出しも楽に。
同じような処理も大体同じなのだから全体を継承し
て違う部分だけ上書きしよう。

同じようなコードも書かない。
構造化プログラミングやオブジェクト指
向プログラミングが誕生する理由
Day3 Day4
15
Webアプリケーションの特徴
データを登録して(Create)
データを参照して(Read)
データを編集して(Update)
データを削除して(Delete)
どんなアプリケーションも大抵こればかり
Day3 Day4
16
Webアプリケーションの特徴
他には、、、
 データベースに接続して
 SQLでデータベースを操作して
 HTMLを生成して
 画像を表示して
 formがあってデータを入力させて
どんなアプリケーションも大抵こればかり
Day3 Day4
17
最近のWebアプリケーション開発
「データベースに対するCRUD」の特性に
収まりやすいWebアプリケーションの特
徴
汎用的な処理はまとめてずっと使いたい
コーディングのルールに一定の制約を持
たせて連携開発をしやすくしたい
Webフレームワークを
使用して開発するのが主流
Day3 Day4
18
Webフレームワーク
Webアプリケーション開発をサポー
トするための枠組み(プログラム)
 データベースの操作
 汎用的処理のライブラリ
 HTMLページのテンプレート
 セッション管理
 セキュリティ
 etc.
Day3 Day4
19
Webフレームワーク
PHP

CakePHP、Zend Framework、symfony
Ruby

Ruby on Rails
Perl

Catalyst、Sledge、Jifty、Mojo
Java

SAStruts、Seasar、Spring、Grails
Day3 Day4
20
CakePHP
CakePHP enables PHP users at all
levels to rapidly develop robust web
applications.
最近のWebフレームワークの先駆け
であるRuby on Railsの影響を多分に
受けている。
Day3 Day4
21
Day4
 CakePHPを利用するにあたっての有用な情報源


cakebookの紹介と日本人翻訳チームの貢献について
CakePHP User Forumの紹介
 MVCの概念



Webアプリケーションにおけるデータの流れ。(MVC)
モデルという考え方とデータベースのテーブル(MC)
処理と表示をわけることの大切さ。楽さ。(VC)
 ブログチュートリアル


bakeを使った自動生成とソースレビュー(演習)
bakeだけでWebアプリケーションを作成(演習)


リレーションの大切さを理解する
debuglibによるデータ構造の理解(演習)
 Webアプリケーションの作成
 さらに機能を追加してみる(演習)
Day3 Day4
22
CakePHPを利用するにあたっての有用
な情報源
Day3 Day4
23
MVCの概念
MVCとはModel、View、Controllerの
頭文字をとったもの。
CRUDとは別の切り口でWebアプリ
ケーションを表している
 データを操作し(Model)
 ユーザの入力に応答し、処理をし
(Controller)
 表示し、ユーザの入力を受け取る(View)
Day3 Day4
24
MVCの概念
V
C
M
データベース
どんな画面を
表示するか。
Day3 Day4
受け取った入
力からどんな
処理をするか。
どのようにデー
タを処理するか。
25
MVCの概念(例:Blog)
V
C
M
データベース
Day3 Day4
26
MVCの概念(例:Blog)
V
アクセス
Day3 Day4
C
M
データベース
27
MVCの概念(例:Blog)
V
C
M
呼び出し
Day3 Day4
データベース
28
MVCの概念(例:Blog)
V
C
M
データ
取得
データベース
Day3 Day4
29
MVCの概念(例:Blog)
V
C
M
データ
渡し
Day3 Day4
データベース
30
MVCの概念(例:Blog)
V
C
データ
渡し
Day3 Day4
M
データベース
31
MVCの概念(例:Blog)
V
表示
Day3 Day4
C
M
データベース
32
MVCの概念(例:Blog)
V
入力
Day3 Day4
C
M
データベース
33
MVCの概念(例:Blog)
V
C
データ
渡し
Day3 Day4
M
データベース
34
MVCの概念(例:Blog)
V
C
M
データベース
処理
Day3 Day4
35
MVCの概念(例:Blog)
V
C
M
呼び出し
Day3 Day4
データベース
36
MVCの概念(例:Blog)
V
C
M
処理
Day3 Day4
データベース
37
MVCの概念(例:Blog)
V
C
M
データ
登録/取得
データベース
Day3 Day4
38
MVCの概念(例:Blog)
V
C
M
データ
渡し
Day3 Day4
データベース
39
MVCの概念(例:Blog)
V
C
データ
渡し
Day3 Day4
M
データベース
40
MVCの概念(例:Blog)
V
表示
Day3 Day4
C
M
データベース
41
Modelとデータベーステーブル
Modelはひとくくりのデータ群を扱う
ための処理のくくり。
データベースの1つテーブルは大抵ひ
とくくりのデータ群。
 例外もあります。
 2つのテーブルでひとくくりのデータ群に
扱えるものもあるし、1つのテーブルで複
数のデータ群になることもあります。
Day3 Day4
42
Modelとデータベーステーブル
Postモデル
Categoryモデル
Userモデル
M
M
M
postsテーブル categoriesテーブル usersテーブル
Day3 Day4
43