「PHP」でWEBアプリを開発する際に必ずと言っていいほど使われるモノがあります。それは「WEBフレームワーク」です。いくつか種類がありますが、その中でも人気があるのは「CakePHP」というWEBフレームワークです。
初心者の方はWEBフレームワークって何?
CakePHPっていったい何?
など、わからないことだらけでしょう。
そこで今回は、PHPで注目されているWEBフレームワーク「CakePHP」についてどこよりもわかりやすくご紹介します。
この記事を読んでいただければ、5分でWEBフレームワークやCakePHPについてざっくりとした概要や特徴がつかめるでしょう。
はじめに
PHPでの開発時にはcakePHPってよく聞きますよね。
cakePHPなんて、おいしそうな名前ですよね。ケイクピーエイチピーって呼びます。実は、cakeは食べる「ケーキ」のことなんです。
bake(ベーク)という焼くなんて名前が付いた機能はPHPプログラムを自動生成します。ユーモアあふれる先輩方がつくられたWebフレームワークなのです。cakePHPってcake(ケーキ)をbake(ベーク)するんだよって説明したら笑われちゃいますよね。
しかしcakePHPはわかりやすいのでこの記事を読めば5分で特徴と概要がわかります。
PHPとは
PHPはHTMLに埋め込むことができるため、Web開発でよく使用されるスクリプト言語です。PHPはサーバーサイドで実行した結果のHTMLを返却します。
同様な言語ではMicrosoftのClassic ASP(Active Server Page)などがあります。現在はオブジェクト指向を取り入れられており大きな規模のシステムにも対応可能な言語へ成長しております。
WEBフレームワークとは
「フレームワーク」という言葉、よく聞くのですが結局どういうもの?
ごく普通に使われているキーワードですよね。このフレームワークを使えば簡単にプログラムが作成することができます。
平たく言えば、画面遷移やDBアクセスの部品化やログ出力など便利な部品が準備され、決められた手順に沿ってコーディングを行っていけば簡単に開発できるのです。
現代の開発では、他社との競争が激しくなってきておりスピードが求められます。開発効率が重要視されているため、さらに関連付け(アソシエーション)を記述することで,関連したテーブルの情報を自動的に取得できます。
CakePHPを利用するにあたって必要なスキルとは
HTMLを作成するスキルとPHP言語が分かっていれば、難しいことではありません。
必要なスキルを列記すると以下になります。
- PHP言語
- HTML/HTML5
- Javascript
- css
CakePHPとは
引用元:CakePHP公式サイト https://cakephp.org/jp/
なぜ、CakePHPなのか?
より簡単に開発できるという点でRuby on Railsというフレームワークが先行して流行しました。
しかしこの概念の多くを取り入れ、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークのcakePHPを作り出したのです。
この「CakePHP」はウェブ開発を単純に簡単にできるように開発されました。また、高速に開発するための仕掛けが随所に盛り込まれています。
特徴
CakePHPは「PHP開発者が誰でも素早く快適に開発を行える事」を目標として産み出されたプロトタイピング型のフレームワークです。
たくさんの豊富な機能を備えておりますので以下に主な特徴をピックアップしてみますね。
統合された柔軟なO/Rマッピング(ActiveRecordパターン)
O/Rマッピング(PHP上のオブジェクトとデータベースを関連付けするための仕掛け)はSQL文を書くことなく非常に短い記述でレコードの抽出や書き換えが行えます。さらに関連付け(アソシエーション)を記述することで,関連したテーブルの情報を自動的に取得できます。
scaffolding機能
簡単なコントローラをひとつ用意するだけで、テーブルの一覧・追加・削除・編集(Create,Read,Update,Delete) の画面などを簡単に実装することができるといった機能を提供されております。デメリットはレイアウトなどのカスタマイズが難しい点があります。
主にカスタマイズが少ないマスタ画面などに用いることで工数削減が図れます。
bakeコマンドによるプログラム自動生成機能
bakeコマンドを実行すると対話的に次々と入力を求められ、それに答えていくことでMVCモデルに沿ってのモデル/ビュー/コントローラのPHPプログラムを自動生成する機能になります。
コマンドのパラメータによってテーブルの一覧・追加・削除・編集画面などのPHPプログラムが自動生成されるのです。
デメリットはテーブル変更時は個別対応が必要です。
日本語に翻訳された優れたドキュメント。
MVC(モデル/ビュー/コントロール)モデル採用
下記「CaskePHPで作る最適なアプリ」で説明します。
フォームバリデーション機能
数値チェックやパスワードの長さが8文字以上あることなどバリデーションルールを定義することができますので、フォームの扱いが非常に楽になります。
その他主な機能
- MySQL、PostgreSQL、SQLite、Microsoft SQL Serverの主なDB標準サポート。
- セキュリティ対策機能が充実(XSS対策・CSRF対策・フォーム改竄検知など)。
- カスタムURLを実現するためのリクエストディスパッチャー。
- 下位バージョンからのアップグレードをサポートする公式移行ガイド及びUpgrade shellが充実。
- PEAR等の外部ライブラリに依存しておらず、単体での利用が可能。
※PEAR (PHP Extension and Application Repository) はPHPでよく利用する機能がまとめられたPHP標準ライブラリ(パッケージ)です。 - プラグインによる機能拡張。
- 柔軟なビュー機構。
- テンプレートの継承や拡張。
- Composerへの標準対応(バージョン3以降)。
CakePHPを使って最速で作るサンプルプログラム
前提条件
- XAMPP(推奨:V3.2.2)がインストール済みであること。
- PHP (推奨:5.6.28)がインストール済みであること。
- cakePHPがダウンロードし展開済みであること。
MVCモデルとは
- M:Model[モデル]
主にデータベースをモデルへ対応させる(外部連携機能)。
- V:View[ビュー]
画面を表示するテンプレートの機能を実現。
- C:Controllerは[コントローラー]
簡単に言えばアプリケーションの司令塔のような役割を果たします。リクエストに対して処理(動作)を指示し処理結果をView[ビュー]へ渡す制御を行います。それぞれの機能に影響を及ぼさないよう、独立させて作るという考え方です。
基本的にはコントロールにすべての処理を書いて、そこから表示に関するものをビューへ、データベースに関するものをモデルへと切り離します。
また、CakePHPではディレクトリに合わせてそれぞれのプログラムを配置するだけで機能するようになっています。cakePHPではbakeコマンドで簡単にプログラムを作成できます。
過程を説明いたしますのでイメージだけでもつかんでください。
composerとbakeでプロジェクト作成
composerを使ってプロジェクトを作成してみます。
①.まずプロジェクトのフォルダーを作成してください。
②.その配下に下記の composer.json を作成します。
{
"name": "cakephp/cakephp",
"description": "The CakePHP framework",
"type": "library",
"keywords": ["framework"],
"homepage": "http://cakephp.org",
"license": "MIT",
"authors":
[
{
"name": "CakePHP Community",
"homepage": "https://github.com/cakephp/cakephp/graphs/contributors"
}
],
"support":
{
"issues": "https://github.com/cakephp/cakephp/issues",
"forum": "http://stackoverflow.com/tags/cakephp",
"irc": "irc://irc.freenode.org/cakephp",
"source": "https://github.com/cakephp/cakephp"
},
"require": {
"php": ">=5.2.8",
"ext-mcrypt": "*"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"cakephp/debug_kit" : "2.2.*"
},
"bin": [ "lib/Cake/Console/cake" ]
}
③.コマンドプロンプトを開き、cdコマンドでこの作成ディレクトリをカレントとします。
④.”composer install “のコマンドを入力しプロジェクトを作成する。
⑤.”.\Console\cake.bat bake all” を入力し各指示に答えてください。
テーブル名やキーなどをビュー形式など簡単な質問形式で指定していきます。
フォルダー構成
各フォルダー構成は決められております。基本的にはモデル/コントローラ/ビューは各フォルダーへ格納しないといけません。
SyouhinMastersはbakeコマンドで指定したテーブル名です。Controller/Model/Viewの各MVCフォルダー配下へphpと画面テンプレートのctpが自動生成されます。
動作結果
bakeコマンドより指定したテーブル名が起動のURLとなります。
URL → http://localhost/cakePhpBakeSample/SyouhinMasters
これだけで下記の図1のレコード一覧画面と図2のレコード登録画面、他にも削除画面と更新画面も自動的に生成されるのです。
この生成プログラムをベースに開発していけば開発スピードも格段にアップできるのです。
【図1:レコード一覧画面】
【図2:レコード登録画面】
まとめ
cakePHPは世界規模で最も多くのWebアプリケーションに導入されているPHPフレームワークです。O/Rマッピング(ActiveRecordパターン)やscaffolding機能やbakeコマンドより初心者でも敷居が低く、生産性が高いフレームワークなのです。
またPHPのオブジェクト指向化より高いレベルでのユーザ要求にも応える事ができるようになってきました。
どうですか?使ってみたくなったのではないでしょうか。
是非、この機会にPHP+cakePHPフレームワークに取り組んでみてはいかがでしょうか。
※当記事は、某オンラインスクールへ依頼されて作成されたものですが未報酬のままですので契約は成立しておりません。よって著作権は私にありますので掲示させていただいてます。