1時間でまるわかり!
CakePHP概説&WordPress応用事例
2016年2月14日、2月27日
TECH GARDEN SCHOOL
1
目的
•フレームワークとは何か、その利点がわかる
• PHPの主要なWebフレームワークや、その1つであるCakePHPの特徴がわかる
• CakePHPとWordPressの違い、その組み合わせの考え方がわかる
2
フレームワークとは何か
•アプリケーションの土台
•プログラム言語(例:PHP)の上で動作させ、特定の種類のアプリケーション(例:Webサービス)を開発するために必要な構造や機能を補完するもの
プログラム言語(例:PHP)
フレームワーク(例:CakePHP)
Webアプリ(サイト / サービス)Web以外のアプリ
フレームワークは必須ではない
3
フレームワークを使用しない場合レイアウト
(全画面に同じ内容を書く)
ビュービュービュー
モデルモデル
(DB接続・切断も書く)
• 1つのファイルに様々な要素がごちゃ混ぜ• 並べ替え機能が必要になったら?• ページめくり機能が必要になったら?
4
フレームワークを使用した場合ModelView
Controller
• 各ファイルの役割が明確• 誰がどの画面を作るときでも同じ構成• レイアウトは共通で使用するものが1つある
並べ替えとページめくりは実装済並べ替えとページめくりは実装済
SQLを書かなくても良い
5
なぜフレームワークを使うのか
•設計・開発のベストプラクティスを活用できる• フレームワークには、主流の設計・開発手法、多くの開発者の経験が組み込まれているため、初心者が使ってもそれらのベストプラクティスを活用できる
• 構造の一貫性やセキュリティ対策など初心者が忘れがちなポイントをフレームワークがフォローしてくれる
•複数メンバーで開発する際に、設計・開発手法を標準化できる• フレームワークでは機能分担やクラス名・変数名などの命名が規則化されているものが多く、誰が見ても見通しの良いコードになる
•使い方を覚えれば、生産性が向上する• フレームワークを使わなければ、独自開発が必要になってしまう
6
MVCモデル~Webアプリ開発における設計のベストプラクティス
View
画面の表示
画面内で処理する機能の実装(JavaScript)
Controller
ビジネスロジックの実行(制御)
次画面で使用するデータの準備
Model
データベースからのデータ取得や保存
データの妥当性チェックや計算などのビジネスロジック
7
PHPのフレームワークのご紹介と特徴
• MVCモデルを採用するフレームワーク→この後、詳細をご説明します!• CakePHP
• Symfony
• Zend Framework
• WordPress• WordPressもある意味でフレームワークです。テーマやプラグインによって独自のプログラム(機能)を組み込むことができますし、カスタム投稿タイプによってブログ記事以外の情報を管理することも可能です。様々な情報を表示するようなサイトに向きます。
8
MVCモデルを採用するフレームワーク
フレームワーク MVCモデル 自動生成 規模適性 動作速度
CakePHP 採用 あり
データベース定義からスケルトンを作成可能
小~中規模向け 普通
Symfony 採用 あり
データベース定義からスケルトンを作成可能
大規模向け
プロジェクト・アプリケーション・モジュールの3層で大規模サイトを構成
遅い
拡張性のためにSymfony自体が大きな構造になっている
Zend Framework 採用
MVCの使用は必須ではない
なし 小~中規模向け
大規模サイトでZend
Frameworkの一部機能だけを使用することも可能
速い
独立性の高いコンポーネントの集合体のため
軽い
<参考>PHPプロ! http://www.phppro.jp/article/framework/comparison.php
9
CakePHPでできること
• MVCモデルに準拠したWebアプリ開発
•データベース定義を元にしたスケルトンの自動生成• データの追加・参照・変更・削除を行うアプリが自動生成できる
• SQLを書かなくてもデータベースアクセスが可能
•ルールを記述するだけで入力チェックの開発が可能
•セキュリティ対策(XSS / CSRF / フォーム改ざん)
•プラグインによる機能拡張
•柔軟なビュー構造• レイアウトやテンプレートの再利用が可能
10
PHP(ベタ書き)との比較
PHP(ベタ書き) CakePHP
MVC準拠のWeb開発 1画面を1ファイルで書くのが前提 MVCモデルの使用が前提
スケルトン生成 なし あり(Bakeコマンド)
データベースアクセス SQLを書く Modelの使用でSQL不要(SQLを書くことも出来る)
入力チェック 画面ごとにプログラムを書く(チェックを共通化することはできる)
Modelに定義するのみで可能(画面ごとの定義は不要)
セキュリティ対策 画面ごと、SQLの実行ごとにセキュリティ対策を考慮したプログラムを書く
XSS / CSRF /フォーム改ざんの対策はCakePHPで考慮されている
機能拡張 PEAR(ライブラリリポジトリ)等からインストール
CakePHP独自のプラグイン機能(PEARライブラリ等の使用も可能)
ビューの再利用 require / includeで再利用するPHPファイルを読み込む
画面全体はレイアウト、画面の一部はエレメントで、再利用可能
11
CakePHPとWordPress
CakePHP
• Webアプリフレームワーク
•柔軟な画面設計・遷移
•柔軟なデータベース設計
•柔軟なユーザ管理
•情報配信以外の目的ならCakePHPを使いたい
WordPress
•コンテンツ管理システム
•情報配信に向いた画面
•固定されたデータベース設計
•情報配信に向いたユーザ管理
•情報配信サイトの開発ならば、CakePHPより生産性が高い• 必ずしもブログである必要はなく、柔軟なカスタマイズ可能
12
CakePHPとWordPressの組み合わせ事例
CakePHPとWordPressを組み合わせて使うために、以下の2つの方法があります。
①WordPress meets CakePHP• WordPressサイトにCakePHPを組み込む
② CakePHP meets WordPress• CakePHPサイト(Webアプリ)にWordPressを組み込む
13
①WordPress meets CakePHP
WordPressで出来たサイト
• 企業サイト
• キャンペーンサイト
独自の機能を組み込む
• 自由な画面遷移が必要なWebアプリ
• 商品データベースなどの管理
• 他サイト等からの記事の連携
14
② CakePHP meets WordPress
CakePHPで開発した独自のWebサービス
ブログ機能を組み込む
• PR目的のブログ(開発者ブログなど)
• メディアギャラリー
• 管理画面で記事を管理するツールとして
15
WordPressの記事をCakePHPで参照する①WordPress meets CakePHPの例
16
完成形
WordPress CakePHP
WordPressのデータベースをCakePHPで参照(追加・更新・削除可)できる
17
database.php (CakePHP)
CakePHPからWordPressの
データベースを参照可能にする
18
MVC (CakePHP)
Model
View
Controller
これらのプログラムは、CakePHPのbakeコマンドで
自動生成可能
19
CakePHPアプリにWordPressブログを組み込む② CakePHP meets WordPress の例
20
WordPressの配置
CakePHPのwebrootにWordPressを配置
(ディレクトリ名をblogに変更)
21
.htaccessを編集する
編集内容はCakePHPのイン
ストールパスによって異なります
22
WordPressのインストール
見慣れたWordPressのインストール画面が表示される
23