狠狠撸

狠狠撸Share a Scribd company logo
WEBDevelopment Fundamental
ゼロから始めるWeb開発
1
About Me
? 熊谷卓也(@taukuma)
? 宮城県出身
? 工業高校を卒業して直ぐに4年間アメリカへ留学
? バイクの免許を取って2週間後に日本一周の旅に出る
? 2011年、コニカミノルタに入社
? Web屋(業務は生産現場で使うWebシステムの提案?開発?導入等)
? バイク2台(ハーレーXL1200L白とエストレヤ白)
? ねこ5匹
2
? HTMLの役割
Webページを作るための言語 (文章の構造や意味)
? CSSの役割
Webページを作るための言語 (見た目)
? JavaScriptの役割
ブラウザで表示しているものを動的にイジくったりするための言語
? PHPの役割
動的にWebページを表示するための言語(サーバー上で動く)
? Ajaxの役割
動的にページの一部を変更する枠組み
この資料でカバーする項目
3
アジェンダ
Session 1
? Webページをデザインする ( HTML , CSS )
Session 2
? Webページを操作する ( JavaScript , jQuery )
Session 3
? 動的にWebページを表示する ( PHP )
Session 4
? ダイナミックにページの一部を変更する ( Ajax )
4
目的
? HTML、CSS、JavaScript、PHPの基礎を理解する
? それぞれを組み合わせて、Webシステム(の一部)を構築
できる
? Twitter Bootstrap、jQueryを使って、今風のカッコイイWeb
ページを作る
? PHPとAjaxで通信し、データベースのデータをダイナミッ
クに表示できる
5
6
Session 1
Webページをデザインする
? HTML
? CSS
? Bootstrap
Hyper Text Markup Language
7
HTML
HTMLとは?
? HyperText Markup Languageの略
? Webページを作るための言語 (文章の構造や意味)
? 開発に必要なもの
? ブラウザ (Google Chrome)
? テキストエディタ
8
HTML
? 学習に役立つサイト
? HTMLクイックリファレンス (www.htmq.com/)
? W3C School - HTMLTutorials (http://www.w3schools.com/html/)
? 文法チェックサービス (Validation)
? W3C MarkupValidation Service (http://validator.w3.org/)
9
HTML基礎
html
タグと呼ばれる、コマンドを使う。
タグはDOM (Document Object Model)要素とも呼ばれる。
基本的にページの本文はbody.../bodyの中に書く。
10
本文bodyに使えるタグ
? Headingタグ
? Paragraph(文章)タグ
? リンク
? フォーム
? リスト
? テーブル
? ブロック要素
11
Heading要素( h1...h6 )
画面イメージhtml
12
Paragraph要素( p )
画面イメージ
html
13
リンク( a )
画面イメージ
html
14
リスト
15
html
画面イメージ
フォーム(form)
画面イメージhtml
16
テーブル要素( table, thead, tbody, tr, th, td )
画面イメージhtml 17
ブロック要素( div, span )
html
18
HTMLのまとめ
? Webページの構造を作る
? タグ名表示する内容/タグ名が基本
? タグはネストできる
? 文法に間違いがあっても、エラーが出るわけではなく、
ブラウザが勝手に解釈して勝手に表示する(レイアウト
が崩れる)
19
CSSCascading Style Sheets
20
CSSとは?
? Cascading Style Sheetsの略
? Webページを作るための言語 (見た目)
? 開発に必要なもの
? ブラウザ (Google Chrome)
? テキストエディタ
21
CSS
? 学習に役立つサイト
? CSS実践講座(http://css.uka-p.com/)
? W3C School - CSSTutorial (http://www.w3schools.com/css/)
? 文法チェックサービス (Validation)
? W3C CSSValidation Service (http://jigsaw.w3.org/css-validator/validator.html)
22
CSSを書く場所
? DOM要素のスタイル属性に直書き
? head/headの中のスタイル要素内



? 外部ファイル
外部CSSファイル
23
スタイル属性( style=... )
画面イメージhtml
ボーダーを赤くする
背景を水色にする
24
スタイル要素( style)
headの中に、
styleタグを書いて
その中にスタイルを記載
html
25 画面イメージ
外部ファイル(link)
外部CSSファイルをリンク
html
mycss.css (外部CSSファイル)
26
スタイルを外部CSSファイルに分割する
ことで、Webページの構造と見た目を
別々に管理できる(保守性向上)
CSSの書き方
セレクター
プロパティ 値
セレクターで指定したDOM要素のプロパティに
任意のスタイル(値)を設定する
mycss.css (外部CSSファイル)
コロン(:) セミコロン( ; )
27
セレクター
? すべての要素
? 同一の要素
? id (1つのドキュメント内に同じidは指定してはいけない)
? クラス
? ちょっと複雑なセレクター
28
セレクター:すべての要素
*(アスタリスク)で全要素
のセレクターになる
文字の色を水色に設定
画面イメージ
mycss.css (外部CSSファイル)
29
セレクター:同一の要素
要素名を指定するとWebページ上の
同じ要素全てにスタイルを適用する
画面イメージ
背景を水色に設定
mycss.css (外部CSSファイル)
30
html
セレクター:id
mycss.css (外部CSSファイル)
画面イメージhtml
31
idは#を付ける
セレクター:クラス
画面イメージ
html
mycss.css (外部CSSファイル)
32
クラスは . を付ける
セレクター:ちょっと複雑なセレクター
mycss.css (外部CSSファイル) 画面イメージ
33
html
いろいろ覚えると???
34
覚えておくと便利なプロパティ
? margin
? padding
? display
? position
? ?oat
? clear
? height
? width
? background
? border
? outline
? color
? font-family
? font-size
? font-weight
? content
? text-align
? vertical-align
? over?ow
35
CSSのまとめ
? Webページの「見た目」をデザイン
? スタイル属性、スタイルタグ、外部CSSに書く
? セレクター、プロパティ、値をセットで定義
? CSSを使いこなすにはデザインの知識が必要
(Webデザイナーという職業があるくらい奥が深い)
36
Twitter Bootstrap
37
Bootstrapとは?
? Twitterが開発したCSSフレームワーク
? 今時のカッコイイサイトを簡単に作れてしまう
? 開発に必要なもの
? ブラウザ (Google Chrome)
? テキストエディタ
38
Bootstrap
? 入手先
http://twitter.github.io/bootstrap/
? 公式サイト
http://twitter.github.io/bootstrap/
? 学習に役立つサイト
? 公式サイト(http://twitter.github.io/bootstrap/)
39
導入方法
40
公式サイトの
Download Bootstrapをクリックして
Zipファイルをダウンロード
1. ダウンロード
適当な場所に解冻
bootstrap内のcssにCSS、
imgにイメージ(画像)、
jsにJavaScriptが入っている
2. 解冻
はじめてのBootstrap:基本
41
はじめてのBootstrap:ナビゲーションバー
42
全体をdivで囲み、クラスに
navbarなどをセットする
メニューになるのはulの中
身。クラスにnavをセットする
と直下のliにメニューっぽい
レイアウトが適用される
はじめてのBootstrap:コンテンツ
43
実際のコンテンツとなる部分は
divで囲み、containerクラ
スをセットするとmarginや
paddingが丁度いい大きさで
入ってくれる
はじめてのBootstrap:グリッドレイアウト
44
グリッドレイアウトで表示するには、全体を
divで囲み、rowクラスやrow-?uidクラス
を指定する。またその中に一塊りごとに
divを書き、クラスにspan1~span12を指
定するとグリッドレイアウトを実現できる。
この時、rowクラスの中のspanクラスの数字
の合計が12を超えないように注意。
はじめてのBootstrap:フォーム(Input)
45
inputもクラスを指定するこ
とで、大きさを制御できる。
input-largeクラスの他、
span4なども使える
はじめてのBootstrap:フォーム(Select)
46
はじめてのBootstrap:フォーム(Checkbox)
47
はじめてのBootstrap:フォーム(Radio)
48
はじめてのBootstrap:ボタン
49
はじめてのBootstrap:テーブル
50
Bootstrapのまとめ
? アイディアを直ぐに形にすることができる
? CSSがかなり充実しているので、クラスの組み合わせ次
第で簡単に綺麗/カッコイイ、Webページをデザインで
きる
? jQueryや、jQuery UIなんかとも組み合わせて使える
51
52
Session 2
Webページを操作する
? JavaScript
? jQuery
JavaScript
53
JavaScriptとは?
? ブラウザ上で色々な動作をさせることができる言語
? 開発に必要なもの
? ブラウザ (Google Chrome)
? テキストエディタ
54
JavaScript
? 学習に役立つサイト
? Googleで検索してください。。。
55
初めてのJavaScript
画面イメージ
html
bodyの中に、
scriptタグを書いて
その中にJavaScriptを
記載
画面にアラートメッセージ
を表示する
56
JavaScriptを書く場所
? body要素の中のscript要素内


? 外部ファイル

html
myjs.js(外部ファイル)
html
57
変数とは?
画面イメージ
myjs.js(外部ファイル)
58
データ型
画面イメージ
myjs.js(外部ファイル)
JSON
59
演算子
画面イメージ
myjs.js(外部ファイル)
文字列の結合は +
a = a+1; と同じ意味
c = c+3; と同じ意味
60
条件分岐(if/else, switch)
画面イメージ
myjs.js(外部ファイル)
if/else if/elseの構文
switch/caseの構文
61
ループ処理(for, while)
画面イメージ
myjs.js(外部ファイル)
forループの構文
whileループの構文
62
ユーザー定義関数(function)
画面イメージ
myjs.js(外部ファイル)
ユーザー定義関数の構文
function 関数名(引数)
63
JavaScriptのまとめ
? ブラウザ上で動くスクリプト言語
? Javaに似ているけれど、別物
? Webページに「動き」をつけることができる
? ブラウザ間で若干挙動が違う
64
65
jQueryとは?
? JavaScriptを便利にしてくれるライブラリ
? 開発に必要なもの
? ブラウザ (Google Chrome)
? テキストエディタ
66
jQuery
? 入手先
http://jquery.com/download/
? 公式サイト
http://jquery.com/
? 学習に役立つサイト
? jQuery日本語リファレンス ( http://semooh.jp/jquery/)
? 本家 jQuery API Documentation (http://api.jquery.com)
67
書き方
jQueryを読み込む
セレクター
jQueryで操作する対象
API (色々な操作)
html
myjs.js(外部ファイル)
68
値を操作する
画面イメージmyjs.js(外部ファイル)
html
69
CSSを操作
画面イメージ
myjs.js(外部ファイル)
70
クリックイベント
画面イメージ
myjs.js(外部ファイル)
クリック時にinputの値を
取得して、アラートに表示
71
要素を動的に追加
画面イメージ
myjs.js(外部ファイル)
html
クリック時に動的に
tableにデータを追加
72
覚えておくと便利なAPI
? addClass()
? removeClass()
? animate()
? attr()
? css()
? width()
? height()
? eq()
? bind()
? click()
? toggle()
? dblclick()
? hover()
? hide()
? show()
? append()
? remove()
? empty()
? text()
? val()
? html()
? parent()
? parents()
? children()
? keydown()
? keypress()
? keyup()
? is()
? on()
? off()
? length
73
jQueryのまとめ
? JavaScriptのコーディングを強力に支援してくれるライブ
ラリ
? ほぼ、業界標準
? HTMLを横断的にいじくることができ、イベントハンド
リングやアニメーションなどもAPIを通して簡単に実装
できる
74
75
Session 3
動的にWebページを表示する
? PHP
? Smarty
PHPHypertext Preprocessor
76
PHPとは?
? Hypertext Preprocessor
? 動的にWebページを作る、サーバー側で動作するプロ
グラム
? 開発に必要なもの
? サーバー (Apache HTTP Server v2.2+)
? PHP (PHP v5.3+)
? ブラウザ (Google Chrome)
? テキストエディタ
77
PHP
? 入手先
? http://www.php.net のDownloadから
? 公式サイト
? http://www.php.net 
? 学習に役立つサイト
? http://www.php.net/manual/ja/index.php (公式ドキュメント)
? http://www.php.net/ja/introduction.php (公式チュートリアル)
78
PHPの保存場所
htdocsディレクトリの中にPHPファイルを置く。
ローカル環境で試す時は、ブラウザのアドレスバーに
http://localhostと入力。
79
初めてのPHP
画面イメージ
index.php
PHPは?php...?で囲う
クライアント側(ブラウザ)にデータを
送信するには、echoを使う
80
変数
画面イメージ
index.php
81
データ型
画面イメージ
index.php
文字列の中に{$変数名}を書くと
変数を文字列に埋め込んでくれる
82
演算子
画面イメージ
index.php
83
文字列の結合は .
条件分岐
画面イメージ
index.php
84
ループ処理
画面イメージ
index.php
85
関数
画面イメージ
index.php
関数渡しはcall_user_func()を使う。
引数は関数名とその関数の引数
86
クラス
画面イメージ
index.php
87
クラスの継承
画面イメージ
index.php
88
データベース
89
? データベースによって使うモジュールが異なる
? PHPがサポートしているのは、




? ADOやODBC等もサポートしている
1. MySQL
2. PostgreSQL
3. SQLite
4. Oracle OCI8
5. Microsoft SQL Server
6. IBM DB2
7. MongoDB
8. TokyoTyrant等
PostgreSQLの例
? データベースとの接続にpg_connect()を使う
? SQLの実行にpg_query()を使う
? 結果はpg_fetch_array()やpg_fetch_assoc()で取り出す
90
データベースに接続するWrapperクラスを作る
91
? DB_Accessというクラス名(db_access.php)
? コンストラクターでDBに接続
? setQuery()という関数を作り、引数にSQLを渡すと、
SQLを実行する
? getResult()という関数を作り、setQuery()で実行した
select文の結果を連想配列で取得
? インスタンスの寿命でDBを切断
データベースに接続するWrapperクラスを作る
92
db_access.php
データベースに接続するWrapperクラスを作る
93
db_access.php
データベースに接続するWrapperクラスを作る
94
db_access.php
データベースに接続するWrapperクラスを作る
95
db_access.php
データベースからデータを抽出する
96
index.php
仮にDBにtbl_usersというテーブルを作り、
このテーブルの中のデータを抽出する
PHPのまとめ
? Hypertext Preprocessorの略
? 汎用スクリプト言語
? サーバー側で動作し、動的にWebページを表示した
り、データベースと接続したり、いろいろできる
? ほとんどのOS?Webサーバーで動作でき、モジュール
としてもCGIとしても使える
97
SmartyPHP Template Engine
98
Smartyとは?
? PHPで使えるテンプレートエンジン
? テンプレートを使うとモジュール化し易くなる
? 開発に必要なもの
? サーバー (Apache HTTP Server v2.2+)
? PHP (PHP v5.3+)
? ブラウザ (Google Chrome)
? テキストエディタ
99
Smarty
? 入手先
? http://www.smarty.net/download 
? 公式サイト
? http://www.smarty.net 
? 学習に役立つサイト
? http://www.smarty.net/documentation のJapaneseを選択
100
Smartyのフォルダ構成
libsにそれぞれのModelとなるPHPを置く。
ユーザーは直接アクセスは出来ない。
?lesにSQLを記載したPHPを設置
publicには画像やJavaScript、CSSを設置
viewsのtemplatesにHTMLに変換されるtplを設置。
ユーザーは直接アクセスできない
どのViewを出力するかを判断するindex.phpや
Ajaxリクエストを扱うrequest_handler.phpは
htdocsの直下に置く
101
Bootstrap on Smarty
BootstrapのCSSやJavaScriptの
依存関係をSmartyにあわせて変更し、
publicに設置
Bootstrapを利用した
テンプレート(tplファイル)を
viewsのtemplatesに設置
index.php
で適切にRouteさせる
102
Smartyのまとめ
? ロジックとデザインを分離して開発できるテンプレー
トエンジン(MVCフレームワークの一種)
103
104
Session 4
ダイナミックにページの一部を変更する
? Ajax
Ajax
Asynchronous JavaScript + XML with jQuery and PHP
105
Ajaxとは?
? Asynchronous JavaScript + XMLの略
? クライアントとサーバーを非同期通信で接続し、
ダイナミックにページの一部を書き換える
? 開発に必要なもの
? サーバー (Apache HTTP Server v2.2+)
? PHP (PHP v5.3+)
? ブラウザ (Google Chrome)
? テキストエディタ
106
Ajax
? 学習に役立つサイト
? Googleで検索してください。。。
107
全体のフロー
108
この流れを理解して、自分で作れるように!
Demo System
109
初めてのAjax :概要(これを作りたい)
クリックをすると
サーバーと非同期通信を開始
サーバーと非同期通信して
メッセージを表示
画面イメージ
画面イメージ
110
初めてのAjax :概要(使うファイル)
111
View
views/templates/ajax.tpl
JavaScript
public/javascripts/myjs.js
PHP
request_handler.php
htdocs直下の
request_handler.phpは
Ajaxリクエスト(要求)の
全てをハンドリング。
JavaScriptはクリックイベント
をトリガーにAjaxでPHP側に
処理を要求する
Viewのテンプレートは
画面に表示される見た目
初めてのAjax:View (テンプレート)側
112
画面イメージ
views/templates/ajax.tpl
このボタンがクリックされたら
サーバーからメッセージを
取得してAlertボックスに表示したい。
初めてのAjax:JavaScript側 概要
ajax_post()関数の呼び出し方
public/javascripts/common.js
ajax_post()という関数を作ると便利。
category、target、opts、callback
の4つを引数に渡すと、はじめの3つを
request_handler.phpに送信する。
request_handler.phpから結果が
帰ってくるとcallback関数を実行する
ajax_post()をサーバーと
非同期通信したいところで
呼ぶ(ボタンクリック時等)
113
初めてのAjax:JavaScript側 詳細
public/javascripts/myjs.js
114
#btn-ajax-test01をクリックすると
ajax_post()を実行
送信するデータ
初めてのAjax:Request Handler側 概要
request_handler.php
115
htdocs直下の
request_handler.phpは
Ajaxリクエスト(要求)の
全てをハンドリング。
受信したcategoryによって
処理を変える。
受信したデータの
categoryにあわせて
この部分に処理を
書いていく
受信したデータ
初めてのAjax:Request Handler側 詳細
116
request_handler.php
結果として返信する
データを作る
受信した要求のカテゴリーが
ajax_test01だった場合
結果を返信
初めてのAjax:JavaScript側 詳細
public/javascripts/myjs.js
117
requuest_handler.phpから
返信があると実行される。
返信されたデータ
data:返信データ(JSON形式)
err:エラー情報(JSON形式)
status:ステータス(文字列)
成功したら、
Alertで返信結果
を表示
初めてのAjax :実行結果
クリックをすると
サーバーと非同期通信を開始
サーバーと非同期通信して
メッセージを表示
画面イメージ
画面イメージ
118
Ajax 演習2 :概要(これを作りたい)
クリックをすると
サーバーと非同期通信を開始
サーバーと非同期通信して
外部PHPに記載されている
メッセージを表示
画面イメージ
画面イメージ
119
Ajax演習2 :概要(使うファイル)
120
View
views/templates/
ajax.tpl
JavaScript
public/javascripts/
myjs.js
htdocs直下の
request_handler.php
から別のPHPを呼ぶ。
(インスタンスを作って
メンバ関数を実行)
PHP
request_handler.php
外部PHP
libs/ajax_test02.php
クラスが定義されてる。
外部PHPファイルに
処理を書くことで
モジュール化
Ajax演習2:View (テンプレート)側
121
画面イメージ
views/templates/ajax.tpl
このボタンがクリックされたら
サーバーからメッセージを
取得してAlertボックスに表示したい。
Ajax演習2:JavaScript側
public/javascripts/myjs.js
122
#btn-ajax-test01をクリックすると
ajax_post()を実行
送信するデータ
Ajax演習2:Request Handler側
123
request_handler.php
外部PHPファイルを読み込む
受信した要求のカテゴリーが
ajax_test02だった場合
結果を返信
外部PHPに記載されている
クラスのインスタンスを作成
結果として返信する
データを作る
(クラスのメソッドをコール)
Ajax演習2:外部PHP側
124
libs/ajax-test02.php getInfo()メソッドは単純に
文字列をリターンする
ActionWrapperクラスを継承
libs/actionwrapper.php
Ajax演習2:JavaScript側
public/javascripts/myjs.js
125
requuest_handler.phpから
返信があると実行される。
返信されたデータ
data:返信データ(JSON形式)
err:エラー情報(JSON形式)
status:ステータス(文字列)
成功したら、
Alertで返信結果
を表示
Ajax 演習2 :実行結果
クリックをすると
サーバーと非同期通信を開始
サーバーと非同期通信して
メッセージを表示
画面イメージ
画面イメージ
126
Ajax 演習4 :概要(これを作りたい)
期間を入力して
ボタンをクリック
非同期通信開始
サーバーと非同期通信して
データベースからデータを抽出。
結果をテーブルに表示
画面イメージ
画面イメージ
127
Ajax演習4 :概要(使うファイル)
128
View
views/templates/
ajax.tpl
JavaScript
public/javascripts/
myjs.js
PHP
request_handler.php
外部PHP
libs/ajax_test04.php
SQLを読み込んで
データベースを
検索し、結果を
返信する
SQL
libs/?les/sql.php
Ajax演習4:View (テンプレート)側
129
画面イメージ
views/templates/ajax.tpl
このボタンがクリックされたら
inputの値をサーバーに送信。
サーバーはデータベースを検索して
結果を返し、画面に表示
ここにテーブルを表示
Ajax演習4:JavaScript側
public/javascripts/myjs.js
130
送信するデータ
inputの値を取得
この値を検索条件に
データベースを検索したい
のでoptsに入れて送る
Ajax演習4:Request Handler側
131
request_handler.php
外部PHPファイルを読み込む
受信した要求のカテゴリーが
ajax_test04だった場合
結果を返信
外部PHPに記載されている
クラスのインスタンスを作成
結果として返信する
データを作る
(クラスのメソッドをコール)
Ajax演習4:外部PHP側
132
libs/ajax-test04.php
getInfo()メソッドは
optsの中身を取得して
sqlを読み込み
データベースを検索し、
結果を返す
libs/?les/sql.php
Ajax演習4:JavaScript側
public/javascripts/myjs.js
133
返信されたデータ
data:返信データ(JSON形式)
err:エラー情報(JSON形式)
status:ステータス(文字列)
データをtableに表示できるように
文字列に変換
表示区域にAppend
エラー発生時は
表示区域にエラーの
内容を表示
Ajax 演習4 :実行結果
期間を入力して
ボタンをクリック
非同期通信開始
サーバーと非同期通信して
データベースからデータを抽出。
結果をテーブルに表示
画面イメージ
画面イメージ
134
Ajaxのまとめ
? Asynchronous JavaScript +XMLのこと
? Webページにリロードを行わずにJavaScriptのHTTP通信
機能を使ってサーバーとXML形式でデータをやり取り
する事の総称
? jQueryの$.ajax()を使うと簡単にできる
135
END
136

More Related Content

Web development fundamental_v2