こんにちは!インストラクターの須田です。
「PHP」でWEBアプリを開発する際に必ずと言っていいほど使われるモノがあります。それは「WEBフレームワーク」です。いくつか種類がありますが、その中でも人気があるのは「CakePHP」というWEBフレームワークです。
初心者の方は
CakePHPっていったい何?
など、わからないことだらけでしょう。
そこで今回は、PHPで注目されているWEBフレームワーク「CakePHP」についてどこよりもわかりやすくご紹介します。
この記事を読んでいただければ、5分でWEBフレームワークやCakePHPについてざっくりとした概要や特徴がつかめるでしょう。
- CakePHPは開発を高速化できるフレームワーク
- CakePHPを使うとSQL文が省略できる
- CakePHPを使えば一部のコードが自動生成できる
本記事の解説内容に関する補足事項
本記事はプログラミングやWebデザインなど、100種類以上の教材を制作・提供する「侍テラコヤ」、4万5,000名以上の累計指導実績を持つプログラミングスクール「侍エンジニア」を運営する株式会社SAMURAIが制作しています。
また、当メディア「侍エンジニアブログ」を運営する株式会社SAMURAIは「DX認定取得事業者」に、提供コースは「教育訓練給付制度の指定講座」に選定されており、プログラミングを中心としたITに関する正確な情報提供に努めております。
記事制作の詳しい流れは「SAMURAI ENGINEER Blogのコンテンツ制作フロー」をご確認ください。
はじめに
PHPでの開発時にはcakePHPってよく聞きますよね。
cakePHPなんて、おいしそうな名前ですよね。ケイクピーエイチピーって呼びます。実は、cakeは食べる「ケーキ」のことなんです。
bake(ベーク)という焼くなんて名前が付いた機能はPHPプログラムを自動生成します。ユーモアあふれる先輩方がつくられたWebフレームワークなのです。
しかしcakePHPはわかりやすいのでこの記事を読めば5分で特徴と概要がわかります。
PHPとは
PHPはHTMLに埋め込むことができるため、Web開発でよく使用されるスクリプト言語です。PHPはサーバーサイドで実行した結果のHTMLを返却します。
同様な言語ではMicrosoftのClassic ASP(Active Server Page)などがあります。現在はオブジェクト指向を取り入れられており大きな規模のシステムにも対応可能な言語へ成長しております。
WEBフレームワークとは
「フレームワーク」という言葉、よく聞くのですが結局どういうもの?
ごく普通に使われているキーワードですよね。このフレームワークを使えば簡単にプログラムが作成することができます。
平たく言えば、画面遷移やDBアクセスの部品化やログ出力など便利な部品が準備され、決められた手順に沿ってコーディングを行っていけば簡単に開発できるのです。
開発効率と品質を確保するためにフレームワーク利用は当たり前になっているのです。WEBフレームワークについて詳しく知りたい方はこちらの記事をご覧ください。
現代の開発では、他社との競争が激しくなってきておりスピードが求められます。開発効率が重要視されているため、さらに関連付け(アソシエーション)を記述することで,関連したテーブルの情報を自動的に取得できます。
CakePHPを利用するにあたって必要なスキルとは
HTMLを作成するスキルとPHP言語が分かっていれば、難しいことではありません。
必要なスキルを列記すると以下になります。
- PHP言語
- HTML/HTML5
- Javascript
- css
CakePHPとは
なぜ、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:レコード一覧画面】
【図2:レコード登録画面】
PHPを勉強した気になってはいませんか?
もしあなたが順調にPHPの学習を進められていて、CakePHPの学習も順調に取り組むことができているなら問題は何もありません。
しかし、あなたがもし
と少しでも思っているのであれば、すでにあなたの学習効率は落ちてしまっています。
そんな現状を打開するには、学習課題を解決できるスペシャリストに相談するのが一番です。
もしかしたら、あなたは「周りにそんな人がいない」と思っているかもしれませんね。
そんな時こそ、弊社の無料カウンセリングをご活用ください、もっとご気軽に…!
さらに、オンラインでの無料カウンセリングも受講可能な上に、参加者全員に豪華3大特典もプレゼント中!
きっとあなたのプログラミング学習が2時間で変わりますよ。
お急ぎの方はこちらからお問い合わせください。
読み込みに失敗しました。
大変お手数ですが、本ページを再度読み込んでください。
再度読み込んでも、読み込み失敗が起こる場合は
こちらからお問い合わせください。
カウンセリングはオンラインにて実施しております。
※予約完了後に、カウンセリングのためのURLやIDなどをメールにてご案内します
1.ご希望の日時を選択してください
2.必須事項を入力してください
ご予約ありがとうございます!
予約が完了しました。ご予約情報とご参加前の準備をご確認ください。
【ご予約情報】○月○日(△) ○○:○○〜
カウンセリング参加に向けてのご準備
※記入いただいたメールアドレスに確認用メールをお送りしておりますのでご確認ください。
※オンラインカウンセリングはGoogle Meetにて実施します。URLが発行したら別途ご案内いたします。
※メールが届かない場合は、SAMURAI ENGINEERサポート(support@sejuku.net)までご連絡ください。
まとめ
cakePHPは世界規模で最も多くのWebアプリケーションに導入されているPHPフレームワークです。O/Rマッピング(ActiveRecordパターン)やscaffolding機能やbakeコマンドより初心者でも敷居が低く、生産性が高いフレームワークなのです。
またPHPのオブジェクト指向化より高いレベルでのユーザ要求にも応える事ができるようになってきました。
どうですか?使ってみたくなったのではないでしょうか。
是非、この機会にPHP+cakePHPフレームワークに取り組んでみてはいかがでしょうか。