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を利用するにあたっての有用な情報源
the cookbookの紹介と日本人翻訳チームの貢献について
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
ロジック(処理)とビュー(表示)
データの処理は主にPHP、データの表示
は主にHTML。
処理のコーディングのときはできるだけ
処理のことだけ考えていたいはず。
HTMLタグやCSSのことは頭から離したい。
表示のコーディングのときはできるだけ
表示のことだけ考えていたいはず。
データベースへの接続や操作などは頭から離
したい。
Day3 Day4
44
ロジック(処理)とビュー(表示)
HTMLヘッダー
データベース接続
<h1>タイトル</h1>
データ取得
データ加工
データ表示処理
</html>
Day3 Day4
45
ロジック(処理)とビュー(表示)
HTMLヘッダー
データベース接続
<h1>タイトル</h1>
データ取得
データ表示処理
データ加工
</html>
データセット
Day3 Day4
46
MVC
データベース接続
HTMLヘッダー
<h1>タイトル</h1>
Model呼び出し
データ取得
データ表示処理
データセット
データ加工
</html>
V
Day3 Day4
C
M
47
チュートリアル
The Cookbookにあるブログチュート
リアルをbakeを使用して実際にこな
してみる。
bake:データベーステーブルを利用した
ソースコード自動生成スクリプト
Day3 Day4
48
ブログシステム仕様 [10.1]
エントリーを投稿できて(Create)表示
できて(Read)編集できて(Update)削
除できる(Delete)システム。
使用言語:PHP
フレームワーク:CakePHP
データベースサーバ:MySQL
Webサーバ:Apache
Day3 Day4
49
Cakeをダウンロード[10.1.1]
あらかじめ各アカウントのディレク
トリにファイルは展開してあります。
WinSCPで実際にディレクトリが作成
されているか確認してください。
以下のURLにアクセスしてみましょ
う。
http://
Day3 Day4
50
ブログデータベースの作成[10.1.2]
phpMyAdminで自分のアカウント名で
データベースを作成します。
チュートリアルと同じテーブルと
データを作成/登録します。
Day3 Day4
51
Cakeのデータベース設定[10.1.3]
チュートリアルにしたがって設定し
てみましょう。
再度ブラウザで見てみましょう。
Day3 Day4
52
追加の設定[10.1.4]
チュートリアルにしたがって設定し
てみましょう。
再度ブラウザで見てみましょう。
オールグリーンになっていたら成功で
す。
Day3 Day4
53
Bakeでコードを生成する[9.1]
ここからチュートリアルから離れて
一気に進みます。
PuTTYで接続しcake/console/ディレ
クトリまで移動してください。
MCVの順でソースコードを生成して
行きます。
再度ブラウザで見てみましょう。
Day3 Day4
54
ソースレビュー
実際に生成したソースをレビューし
ます。
app/models/post.php
app/controllers/posts_controller.php
app/views/posts/*.ctp
cake/lib/views/layouts/default.ctp
Day3 Day4
55
CakePHPのMVC(posts/index)
V
C
M
データベース
Day3 Day4
56
CakePHPのMVC(posts/index)
cake/lib/views
/layouts/default.ctp
V
C
データベース
app/views/index.ctp
app/controllers
/posts_controller.php
Day3 Day4
M
app/models
/post.php
57