PHP初心者に贈る、まちがえない
PHPの始め方・学び方
株式会社ウィズテクノロジー
代表取締役 CEO兼CTO 杉本 展将
2015/5/30
プロフィール
氏名 杉本 展将 (すぎもと ひろゆき) ニックネーム:てんしょう
年齢 0x28歳
出身 南紀白浜
趣味 美味しいモノを食べる、お酒、カメラ、卓球、バイク
略歴 大学卒業後、独立系システム開発会社で開発や社員教育に携わる
数年のフリーランスを経て法人設立
お仕事 株式会社ウィズテクノロジー 代表取締役 CEO兼CTO
2001年~ デジタルハリウッド大阪校 プログラミング系講師
2011年~ デジタルハリウッド大学大学院 客員教授
2015年~ メディアサイエンス研究所 特任教授 杉本研究室
facebook facebook.com/hiroyuki.sugimoto
2
このセッションの目的
3
“時代遅れの情報がウェブ上にあふれている。”
“PHP: The Right Way は気軽に読めるクイックリ
ファレンスだ“
“PHPを使うための正式なお作法など存在しない ”
"いくつかの選択肢を示して、それぞれの違いや使
い道をできる限り紹介する。"
http://ja.phptherightway.com/
PHPで学ぶこと
4
標準関数
HTML + CSS + JS
開発環境
HTTP
データベース
オブジェクト指向
セキュリティ
フレームワーク
サーバ
DI(依存性の注入)
デプロイ
テンプレート
テスト
ライブラリ
基本文法
キャッシュ
バージョン管理
PHPをはじめる
• PHP (最新版5.6)
• homebrew, phpbrew(Mac)
• バイナリダウンロード(Win) ※ php.netのドキュメント参照
• Webサーバ
• ビルトインWebサーバ, Apache, nginx, IIS
• 全部入り
• XAMPP, MAMP(Mac)
• 仮想環境
• VirtualBox + Vagrant
5
コーディングスタイル
• プログラムは後から自分や他人が修正する
• 決まったフォーマットでプログラムを書く
• 標準規約に従う
• PSR-4 (オートローダーに関する規約)
• PSR-1 (基本的なコーディング規約)
• PSR-2 (コーディングスタイルガイド ※PSR-1準拠前提)
• フレームワークのコーディング規約
6
コーディングスタイルの具体例
• PSR-1
• PHPコードは「<?php ?>」及び「<?= ?>」タグを使用
• 文字コードはUTF-8, BOM無し
• PSR-2
• 改行コードはLF
• ファイルの最後に空行
• インデントは4スペース
• ifの後ろにスペースを空けて{ → if ($a < 3) {
7
依存関係の管理
• ライブラリやフレームワークの管理/インストール
• PEAR (システム全体)
• Composer (ひとつのプロジェクト)
8
データベース
• mysql → mysqli
• ネイティブドライバ → PDO
• SQLインジェクション対策
• バインド変数を使う
9
プログラムが行っていること
10
入力
処理
出力
・入力を受け取る
・ファイルを読み込む
・データベースを検索する
・計算をする
・表示形式を整える
・ファイルに書き込む
・画面に表示する
1ファイルで作る場合
11
<?php
// さまざまな処理をして、表示内容を変数や配列に代入しておく
?>
<html>
<head>
<title>PHPのプログラム</title>
</head>
<body>
結果: <?php echo $result; ?>
</body>
</html>
<Webブラウザ>
ロジックとデザインの分離
WebサーバクライアントPC
12
PHP
(ロジック)
テンプレート
(レイアウト)
HTML
テンプレート
• ロジックとデザインの分離
• 作業を分担できる
• コードの再利用
• テンプレートエンジン
• Smarty
• Twig
13
<Webブラウザ>
MVCモデル
WebサーバクライアントPC
14
Controller
(Model,View
の制御)
View
(レイアウト)
HTML
Model
(ロジック、
データ連携)
データ
ベース
フレームワーク
• コードの書き方や構造が統一
• 学習コストがかかる、慣れると早い
• オレオレフレームワーク
• CakePHP
• Symfony
• Laravel
• Yii Framework
15
セキュリティ問題
• 機能的に問題ない≠セキュリティに問題ない
• クロスサイトスクリプティング
• SQLインジェクション
• その他、いろいろ
• ECサイト クレジットカード情報漏洩事件 (2014.1)
• SQLインジェクションの対策漏れ
• システム開発会社の責任を認める判決
→ 約2262万円の損害賠償!
16
セキュリティ対策
• インターネットで公開前に必ずセキュリティ対策!
• パスワードをハッシュ化
• サニタイズ
• バリデーション
• エラーレポート設定
• 他にもいろいろあるよ!
17
セキュリティ対策をより知りたい
• IPA 「安全なウェブサイトの作り方」
• https://www.ipa.go.jp/security/vuln/websecurity.html
• 「体系的に学ぶ安全なWebアプリケーションの作り方」
• [著]徳丸浩 ¥3,456 / ¥2,520
• OWASP (Open Web Application Security Project)
• http://blog.owaspjapan.org/
18
テスト
• ユニットテスト
• 関数やクラスやメソッドの確認
• PHPUnit など
• 機能テスト
• アプリケーションの動きを確認
• Selenium など
19
書籍
20
コミュニティ
• 関西PHPユーザーズグループ
21
http://www.kphpug.jp
facebookグループ
Thank you!
22
Happy PHP
Programming Life!

PHP初心者に贈る、まちがえないPHPの始め方・学び方