【5分でわかる】PHPのWEBフレームワーク「CakePHP」とは?

こんにちは!インストラクターの須田です。

「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とは

images

PHPHTMLに埋め込むことができるため、Web開発でよく使用されるスクリプト言語です。PHPはサーバーサイドで実行した結果のHTMLを返却します。

同様な言語ではMicrosoftのClassic ASP(Active Server Page)などがあります。現在はオブジェクト指向を取り入れられており大きな規模のシステムにも対応可能な言語へ成長しております。

WEBフレームワークとは

「フレームワーク」という言葉、よく聞くのですが結局どういうもの?

ごく普通に使われているキーワードですよね。このフレームワークを使えば簡単にプログラムが作成することができます。

平たく言えば、画面遷移やDBアクセスの部品化やログ出力など便利な部品が準備され、決められた手順に沿ってコーディングを行っていけば簡単に開発できるのです。

開発効率と品質を確保するためにフレームワーク利用は当たり前になっているのです。WEBフレームワークについて詳しく知りたい方はこちらの記事をご覧ください。

これで決まり!最強おすすめフレームワーク5選【Java/Ruby/PHP/JS/CSS】

現代の開発では、他社との競争が激しくなってきておりスピードが求められます。開発効率が重要視されているため、さらに関連付け(アソシエーション)を記述することで,関連したテーブルの情報を自動的に取得できます。

CakePHPを利用するにあたって必要なスキルとは

HTMLを作成するスキルとPHP言語が分かっていれば、難しいことではありません。

必要なスキルを列記すると以下になります。

  • PHP言語
  • HTML/HTML5
  • Javascript
  • css

CakePHPとは

screenshot-2016-11-26-23-47-11

引用元: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:レコード一覧画面】

cakephp%e4%b8%80%e8%a6%a7

【図2:レコード登録画面】

cakephp%e8%bf%bd%e5%8a%a0

PHPを勉強した気になってはいませんか?

もしあなたが順調にPHPの学習を進められていて、CakePHPの学習も順調に取り組むことができているなら問題は何もありません。

しかし、あなたがもし

本当にスキルが身についているのか不安がある…

と少しでも思っているのであれば、すでにあなたの学習効率は落ちてしまっています。

そんな現状を打開するには、学習課題を解決できるスペシャリストに相談するのが一番です。

もしかしたら、あなたは「周りにそんな人がいない」と思っているかもしれませんね。

そんな時こそ、弊社の無料体験レッスンをご活用ください、もっとご気軽に…!

さらに、オンラインでの無料体験レッスンも受講可能な上に、参加者全員に豪華3大特典もプレゼント中!

きっとあなたのプログラミング学習が2時間で変わりますよ。

まとめ

cakePHPは世界規模で最も多くのWebアプリケーションに導入されているPHPフレームワークです。O/Rマッピング(ActiveRecordパターン)やscaffolding機能やbakeコマンドより初心者でも敷居が低く、生産性が高いフレームワークなのです。

またPHPのオブジェクト指向化より高いレベルでのユーザ要求にも応える事ができるようになってきました。

どうですか?使ってみたくなったのではないでしょうか。

是非、この機会にPHP+cakePHPフレームワークに取り組んでみてはいかがでしょうか。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

須田 博

SEキャリアは34年以上、開発言語は多彩だがJavaは私の基本言語であり、 メジャーになる前の1999年より実務開発。開発実績は大手企業様が多いが製品開発経験やインフラ構築経験もあり。言語は大工のカンナなど大工道具のようなものであり、使う人の技量によって速さ(生産性)と品質は変わるものというスタンスでやってきました。
趣味は「車の電飾系改造」と「バドミントン」と「アニメ」と「猫のわかちゃん」です。
ビデオ溜めしたアニメは2倍速で一気に鑑賞という特技あります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説