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

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

「PHP」でWEBアプリを開発する際に必ずと言っていいほど使われるモノがあります。それは「WEBフレームワーク」です。いくつか種類がありますが、その中でも人気があるのは「CakePHP」というWEBフレームワークです。

初心者の方は

WEBフレームワークって何?
CakePHPっていったい何?

など、わからないことだらけでしょう。

そこで今回は、PHPで注目されているWEBフレームワーク「CakePHP」についてどこよりもわかりやすくご紹介します。

この記事を読んでいただければ、5分でWEBフレームワークやCakePHPについてざっくりとした概要や特徴がつかめるでしょう。

この記事の要約
  • CakePHPは開発を高速化できるフレームワーク
  • CakePHPを使うとSQL文が省略できる
  • CakePHPを使えば一部のコードが自動生成できる

なお、1人で学習が進められるか、途中で挫折しないか不安な人は「侍エンジニア」をお試しください。

侍エンジニアでは現役エンジニアと学習コーチの2名体制で学習をサポートするため、挫折しづらい環境で学習が進められます。

受講料が最大70%OFFになる「給付金コース」も提供中。未経験から効率よく学習を進めたい人は、ぜひ一度お試しください。

\ オンラインで相談可能 /

本記事の解説内容に関する補足事項

本記事はプログラミングやWebデザインなど、100種類以上の教材を制作・提供する「侍テラコヤ」、4万5,000名以上の累計指導実績を持つプログラミングスクール「侍エンジニア」を運営する株式会社SAMURAIが制作しています。

また、当メディア「侍エンジニアブログ」を運営する株式会社SAMURAIは「DX認定取得事業者」に選定されており、プログラミングを中心としたITに関する正確な情報提供に努めております。

記事制作の詳しい流れは「SAMURAI ENGINEER Blogのコンテンツ制作フロー」をご確認ください。

目次

はじめに

PHPでの開発時にはcakePHPってよく聞きますよね。

cakePHPなんて、おいしそうな名前ですよね。ケイクピーエイチピーって呼びます。実は、cakeは食べる「ケーキ」のことなんです。

bake(ベーク)という焼くなんて名前が付いた機能はPHPプログラムを自動生成します。ユーモアあふれる先輩方がつくられたWebフレームワークなのです。

cakePHPってcake(ケーキ)をbake(ベーク)するんだよ
って説明したら笑われちゃいますよね。

しかしcakePHPはわかりやすいのでこの記事を読めば5分で特徴と概要がわかります。

PHPとは

images

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

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

WEBフレームワークとは

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

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

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

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

あわせて読みたい
プログラミングのフレームワークとは?言語別におすすめも紹介 フレームワークって何?プログラミングと一緒にフレームワークも学んだほうがいい? プログラミング学習を進めるなかでたびたび登場する「フレームワーク」という言葉。...

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

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 “のコマンドを入力しプロジェクトを作成する。

⑤.”.Consolecake.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時間で変わりますよ。

お急ぎの方はこちらからお問い合わせください。

読み込みに失敗しました。
大変お手数ですが、本ページを再度読み込んでください。

再度読み込んでも、読み込み失敗が起こる場合は
こちらからお問い合わせください。

カウンセリングはオンラインにて実施しております。

※予約完了後に、カウンセリングのためのURLやIDなどをメールにてご案内します

1.ご希望の日時を選択してください

空きあり 満席
前週
次週

2.必須事項を入力してください

必須選択された日時

日時を選択してください

開催場所 オンライン

日時を選択する

必須お名前

必須電話番号

必須メールアドレス

    ご予約により、個人情報の取り扱いおよび利用規約に同意するものとします。

    まとめ

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

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

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

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

    この記事を書いた人

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

    目次