Transcript day3day4
Day3 Day4
Day3 Day4
1
Day3
第1回の宿題の発表
前回のおさらい
CakePHPについて
最近のWebアプリケーションの開発方
法
Webアプリケーションフレームワーク
(以下Webフレームワーク)とは
Day3 Day4
2
第1回宿題発表
Day3 Day4
3
第1回宿題
複数のテーブルに対するSQL言語の
演習(ものまね)を行ってください
複数のテーブルを使ったWebアプ
リケーションをペアで作成してくだ
さい
Day3 Day4
4
前回おさらい
Day3 Day4
5
前回のおさらい
WebとWebアプリケーション
HTML
PHP
データベースとSQL
Day3 Day4
6
World Wide Webとは
ブラウザから「http://www.~」と入
力することでいろいろなWebページ
を見せているしくみ。
World Wide Web
Day3 Day4
7
Webページの表示の仕組み
1
“http://www.yahoo.co.jp/index.html”で
指定されるファイルをリクエスト
index.html
Webサーバ
2
“index.html”ファイルを
レスポンスとして返す
3
“index.html”ファイルを
整形(レンダリング)して
表示
Day3 Day4
8
HTML
Webページを作成するためのマーク
アップ言語。
index.htmlはHTMLで書かれたテキス
トファイル。
Day3 Day4
9
Webアプリケーションとは
(Webページをただ表示するだけでな
い)Webの機能や特徴を利用したアプリ
ケーション。
例えば、、、
データを登録していつでも参照できるように
できる。
Blog
ログイン機能を持たせて会員しか表示しない
ようにする。
SNS
Day3 Day4
10
Webアプリケーションの
処理の仕組み
1
“http://www.yahoo.co.jp/index.php”の
ページ内容をリクエスト
リクエストを元に処理をする
(データの登録、編集、閲覧、削除)
Webサーバ
2
処理の結果をindex.phpとして
レスポンスとして返す
3
Day3 Day4
“index.php”ファイルを
整形(レンダリング)して
表示
11
PHP
Webアプリケーションの処理の部分
を書くことができるプログラム言語
の1つ。
Day3 Day4
12
Webアプリケーションを作成するには
リクエストとレンダリングはブラウザが担当
します。
レスポンスはWebサーバが担当します。
処理をプログラムとして書く必要があります。
今回は
プログラミング言語としてPHPを選択し、
実際にWebアプリケーションを作成しています。
Day3 Day4
13
データを保存するには
データベースサーバと呼ばれるデータを格納す
ることに特化したシステムを使用します。
今回はMySQLを使用しています。
データベースサーバを管理するデータベース管
理システム(DBMS)へ命令するための言語がSQL
です。
データベースサーバ
データベースmydb
の中のテーブル
booksの中からカラ
ムisbnが
98284795825の
データを取得せよ。
SQL
DBMS
データベース
Day3 Day4
14
CakePHPについて
Day3 Day4
15
CakePHPとは
CakePHPとはPHPで書かれたWebフ
レームワークです。
CakePHPのようなWebフレームワー
クを使いこなせると、より高速に、
より直感的に、より抽象的に、Web
アプリケーションの開発ができます。
Day3 Day4
16
ハンズオン
「実際にCakePHPでブログを作成して
みましょう」
Day3 Day4
17
CakePHPチュートリアル
The Cookbookにあるブログチュート
リアルをbakeを使用して実際にこな
してみる。
bake:データベーステーブルを利用した
ソースコード自動生成スクリプト
Day3 Day4
18
ブログシステム仕様 [10.1]
エントリーを投稿できて(Create)表示
できて(Read)編集できて(Update)削
除できる(Delete)システム。
使用言語:PHP
フレームワーク:CakePHP
データベースサーバ:MySQL
Webサーバ:Apache
Day3 Day4
19
Cakeをダウンロード[10.1.1]
あらかじめ各アカウントのディレク
トリにファイルは展開してあります。
WinSCPで実際にディレクトリが作成
されているか確認してください。
以下のURLにアクセスしてみましょ
う。
http://rd.lib.kyushu-u.ac.jp/~アカウント
/cakephp/
Day3 Day4
20
ブログデータベースの作成[10.1.2]
自分のアカウント名でデータベース
を作成します。
チュートリアルと同じテーブルと
データを作成/登録します。
Day3 Day4
21
Cakeのデータベース設定[10.1.3]
チュートリアルにしたがって設定し
てみましょう。
再度ブラウザで見てみましょう。
http://rd.lib.kyushu-u.ac.jp/~アカウント
/cakephp/
Day3 Day4
22
追加の設定[10.1.4]
チュートリアルにしたがって設定し
てみましょう。
再度ブラウザで見てみましょう。
http://rd.lib.kyushu-u.ac.jp/~アカウント
/cakephp/
オールグリーンになっていたら成功で
す。
Day3 Day4
23
Bakeでコードを生成する[9.1]
ここからチュートリアルから離れて一気
に進みます。
PuTTYで接続しcake/console/ディレクト
リまで移動してください。
MCVの順でソースコードを生成して行き
ます。
再度ブラウザで見てみましょう。
http://rd.lib.kyushu-u.ac.jp/~アカウント
/cakephp/posts/
Day3 Day4
24
Coffee Break
Day3 Day4
25
Coffee Break:プログラマの特性
プログラマは大抵面倒くさがり。
開発中、同じコードを何度も書きたく
ない。
(さらに)開発中、同じようなコードを何
度も書きたくない。
(それどころか)同じようなコードは一生
書きたくない。
面白そうなコードだけ書いて暮らしたい!
Day3 Day4
26
Coffee Break:プログラマの特性
じゃあどうする?
小さな同じ処理は関数化してしまおう。
わかりやすいように、意味的に近い処理をグループ
化してしまおう(文字に関する関数(メソッド)群、○○
を処理するための関数と変数(プロパティ)群)。
同じ処理は書かない。
ひとくくりにして意味的にもわかりやすく。呼び出しも楽に。
同じような処理も大体同じなのだから全体を継承し
て違う部分だけ上書きしよう。
同じようなコードも書かない。
構造化プログラミングやオブジェクト指
向プログラミングが誕生する理由
Day3 Day4
27
CakePHPについて(続き)
Day3 Day4
28
Webアプリケーションの特徴
データを登録して(Create)
データを参照して(Read)
データを編集して(Update)
データを削除して(Delete)
どんなアプリケーションも大抵こればかり
Day3 Day4
29
Webアプリケーションの特徴
他には、、、
データベースに接続して
SQLでデータベースを操作して
HTMLを生成して
画像を表示して
formがあってデータを入力させて
どんなアプリケーションも大抵こればかり
Day3 Day4
30
最近のWebアプリケーション開発
「データベースに対するCRUD」の特性に
収まりやすいWebアプリケーションの特
徴
汎用的な処理はまとめてずっと使いたい
コーディングのルールに一定の制約を持
たせて連携開発をしやすくしたい
Webフレームワークを
使用して開発するのが主流
Day3 Day4
31
Webフレームワーク
Webアプリケーション開発をサポー
トするための枠組み(プログラム)
データベースの操作
汎用的処理のライブラリ
HTMLページのテンプレート
セッション管理
セキュリティ
etc.
Day3 Day4
32
Webフレームワーク
PHP
CakePHP、Zend Framework、symfony
Ruby
Ruby on Rails
Perl
Catalyst、Sledge、Jifty、Mojo
Java
SAStruts、Seasar、Spring、Grails
Day3 Day4
33
CakePHP
CakePHP enables PHP users at all
levels to rapidly develop robust web
applications.
最近のWebフレームワークの先駆け
であるRuby on Railsの影響を多分に
受けている。
Day3 Day4
34
Day4
CakePHPを利用するにあたっての有用な情報源
the cookbookの紹介と日本人翻訳チームの貢献について
CakePHP User Forumの紹介
MVCの概念
Webアプリケーションにおけるデータの流れ。(MVC)
モデルという考え方とデータベースのテーブル(MC)
処理と表示をわけることの大切さ。楽さ。(VC)
ブログチュートリアル
ソースレビュー
bakeだけでWebアプリケーションを作成(演習)
リレーションの大切さを理解する
debuglibによるデータ構造の理解(演習)
Webアプリケーションの作成
さらに機能を追加してみる(演習)
Day3 Day4
35
CakePHPを利用するにあたっての有用
な情報源
Day3 Day4
36
The Cookbook
http://book.cakephp.org/ja/
CakePHPのマニュアルサイト/システ
ム
マニュアルサイトであると同時にマ
ニュアル作成システム+多言語翻訳シス
テムでもあります。
日本語翻訳チームの貢献が全世界で1
位!
Day3 Day4
37
CakePHP Users in Japan
http://cakephp.jp/modules/newbb/
CakePHPに関する情報を収集したサ
イト/フォーラム
CakePHPの日本語情報が最も集まって
いるサイト
フォーラムの交流も非常に活発です。
検索すれば大抵の問題は解消します。
Day3 Day4
38
MVCの概念
Day3 Day4
39
MVCの概念
MVCとはModel、View、Controllerの
頭文字をとったもの。
CRUDとは別の切り口でWebアプリ
ケーションを表している
データを操作し(Model)
ユーザの入力に応答し、処理をし
(Controller)
表示し、ユーザの入力を受け取る(View)
Day3 Day4
40
MVCの概念
V
C
M
データベース
どんな画面を
表示するか。
Day3 Day4
受け取った入
力からどんな
処理をするか。
どのようにデー
タを処理するか。
41
MVCの概念(例:Blog)
V
C
M
データベース
Day3 Day4
42
MVCの概念(例:Blog)
V
アクセス
Day3 Day4
C
M
データベース
43
MVCの概念(例:Blog)
V
C
M
呼び出し
Day3 Day4
データベース
44
MVCの概念(例:Blog)
V
C
M
データ
取得
データベース
Day3 Day4
45
MVCの概念(例:Blog)
V
C
M
データ
渡し
Day3 Day4
データベース
46
MVCの概念(例:Blog)
V
C
データ
渡し
Day3 Day4
M
データベース
47
MVCの概念(例:Blog)
V
表示
Day3 Day4
C
M
データベース
48
MVCの概念(例:Blog)
V
入力
Day3 Day4
C
M
データベース
49
MVCの概念(例:Blog)
V
C
データ
渡し
Day3 Day4
M
データベース
50
MVCの概念(例:Blog)
V
C
M
データベース
処理
Day3 Day4
51
MVCの概念(例:Blog)
V
C
M
呼び出し
Day3 Day4
データベース
52
MVCの概念(例:Blog)
V
C
M
処理
Day3 Day4
データベース
53
MVCの概念(例:Blog)
V
C
M
データ
登録/取得
データベース
Day3 Day4
54
MVCの概念(例:Blog)
V
C
M
データ
渡し
Day3 Day4
データベース
55
MVCの概念(例:Blog)
V
C
データ
渡し
Day3 Day4
M
データベース
56
MVCの概念(例:Blog)
V
表示
Day3 Day4
C
M
データベース
57
Modelとデータベーステーブル
Modelはひとくくりのデータ群を扱う
ための処理のくくり。
データベースの1つテーブルは大抵ひ
とくくりのデータ群。
例外もあります。
2つのテーブルでひとくくりのデータ群に
扱えるものもあるし、1つのテーブルで複
数のデータ群になることもあります。
Day3 Day4
58
Modelとデータベーステーブル
Postモデル
Categoryモデル
Userモデル
M
M
M
postsテーブル categoriesテーブル usersテーブル
Day3 Day4
59
ロジック(処理)とビュー(表示)
データの処理は主にPHP、データの表示
は主にHTML。
処理のコーディングのときはできるだけ
処理のことだけ考えていたいはず。
HTMLタグやCSSのことは頭から離したい。
表示のコーディングのときはできるだけ
表示のことだけ考えていたいはず。
データベースへの接続や操作などは頭から離
したい。
Day3 Day4
60
ロジック(処理)とビュー(表示)
HTMLヘッダー
データベース接続
<h1>タイトル</h1>
データ取得
データ加工
データ表示処理
</html>
Day3 Day4
61
ロジック(処理)とビュー(表示)
HTMLヘッダー
データベース接続
<h1>タイトル</h1>
データ取得
データ表示処理
データ加工
</html>
データセット
Day3 Day4
62
MVC
データベース接続
HTMLヘッダー
<h1>タイトル</h1>
Model呼び出し
データ取得
データ表示処理
データセット
データ加工
</html>
V
Day3 Day4
C
M
63
ソースレビュー
Day3 Day4
64
ソースレビュー
Day3で実際に生成したソースをレ
ビューします。
app/models/post.php
app/controllers/posts_controller.php
app/views/posts/*.ctp
cake/lib/views/layouts/default.ctp
Day3 Day4
65
CakePHPのMVC(posts/index)
V
C
M
データベース
Day3 Day4
66
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
67
ブログチュートリアル+
Day3 Day4
68
ブログシステムのバージョンアップ
bakeを使ってDay3で作成したブログ
システムをさらにバージョンアップ
させます。
投稿エントリーにカテゴリという属
性をつけてみましょう。
投稿エントリーに投稿ユーザという
属性をつけてみましょう。
Day3 Day4
69
ハンズオン
さらにバージョンアップするための
演習
今まで作成したBlogをさらにバー
ジョンアップさせてください。
bakeを使ってでもいいですし、直に書
き加えても構いません。
Day3 Day4
70
宿題(案)
CakePHPでアプリケーションを作成
しましょう。
Day3 Day4
71