【初心者用】CakePHPを学んでいこう①(基礎知識)

そもそも、PHPとは?

Cake「PHP」とあるように、そもそもPHPとは何かをまずは確認していきましょう。

PHPは、1995年に登場したWebページやWebアプリケーションを作成する際に使用するプログラム言語です。

静的なWebページを表示するHTMLとは違い、ユーザがアクセスしたタイミングによってページ内容が変化する、動的なWebページを開発することができます。

PHPを使用して作成された有名なWebサービスに、WikipediaやFacebook、ぐるなびなどがあります。

1. CakePHPとは?


CakePHP(ケイクピーエイチピー)は、PHP言語で使用されるフレームワークの一つです。

フレームワークを導入せずともPHPでの開発は可能ですが、フレームワークは開発の手助けをしてくれる機能を詰め込んでくれているツールなので、導入することでより効率的に開発を進めることができます。

PHPのフレームワークは「CakePHP」以外に、「Laravel(ララベル)」「CodeIgniter(コードイグナイター)」「FuelPHP(フューエルピーエイチピー)」などがあります。


CakePHPは2005年に登場し、初心者でも簡単に導入・開発ができるフレームワークで、日本では2009年頃から普及し始めました。

現在は「Laravel」が人気のフレームワークとして有名ですが、CakePHPは今でも根強い人気があるフレームワークです。


余談ですが名前にある「Cake」は、ロゴマークにあるようにお菓子の「ケーキ」を表しています。

公式サイトにもケーキにちなんだ説明が見られる他、CakePHPの機能に「bake」というのもあり、このようなユニークで印象に残る名称もCakePHPが広く普及していった理由の一つかもしれませんね。

2. CakePHPの特徴

ここでは主な特徴を6つ説明していきます。

2-1. MVCアーキテクチャ

CakePHPはM(Model)V(View)C(Controller)の3つで構築されているフレームワークです。


Model(モデル) ・・・ データ処理やデータベースとのやり取りを担当

View(ビュー) ・・・ ブラウザへの表示を担当

Controller(コントローラー)・・・ ModelとViewの仲介を担当


それぞれが独立して機能しているため、各機能を分担して開発することが可能となっています。


①ユーザーが画面表示や入力を行う。

②ControllerがViewからのリクエストを受け取り、Modelへ処理を行うよう指示。

③Modelは処理を実行し、必要であればデータベースからデータを取得または登録などを行う。

④処理した結果をControllerへ返却する。

⑤ControllerはModelで処理した内容をViewへ反映する。

⑥結果をユーザーの画面に表示する。

2-2. bake機能

CakePHPでは、上記で説明したMVCの土台を自動的に生成する「bake」コマンドがあります。

MVCそれぞれを生成するコマンドは以下の通りです。


 Model  ・・・ 「cake bake model [テーブル名]」

 View  ・・・ 「cake bake template [テーブル名]」※viewではなくtemplateのため注意!

 Controller  ・・・ 「cake bake controller [テーブル名]」


bakeコマンドの実行などの詳しい説明は改めて行いますが、これらのコマンドを実行することでソースコードを書かなくとも、コマンド一つで簡単にコードが作成されます。

その生成されたコードには「CRUD」機能があらかじめ用意された状態になっており、Cは「Create(生成)」Rは「Read(読み取り)」Uは「Update(更新)」Dは「Delete(削除)」を表しています。

2-3. O/Rマッピング


O/Rマッピングとは、PHP上のオブジェクトとデータベースを対応させる仕組みのことです。

このO/Rマッピングがあることで、開発者自身がマッピング作業を行う手間が省かれ、データベースの操作をSQLを書かなくとも、短い記述で簡単に参照・変更などの操作を行えます。

また、SQLを直接コードに記載しないため、視覚的にもわかりやすいソースとなり、より効率的に開発を進めることができます。

2-4. フォームバリデーション機能

バリデーションとは、ユーザーが入力した内容が適切な形式になっているかをチェックし、入力ミスなどを防ぐことができます。

例えば、必須項目にきちんと値が入力されているか、数字のみを入力する項目に数字以外の文字が入力されていないかなどのチェックを行うことができます。

よく使用されるバリデーションルールとして、以下のようなものがあります。


 notEmpty  ・・・未入力チェック

 numeric ・・・数字のみかチェック

 greaterThan・・・指定した値より大きいかをチェック

 maxLength ・・・指定した最大文字数以内かをチェック


これらのルールをModelに記載し、入力チェックを行います。


例)名前「name」の項目が必須の場合

$validator->notEmpty('name', ‘名前を入力してください’);

とすれば、エラーであればView側でエラー内容を表示することができます。

上記のルール以外にも、独自のバリデーションルールを自分で作成することもできます。

2-5. Composerへの標準対応


Composerとは、依存性のあるプログラムを管理するためのツールです。

例えば、データベースから取得したデータをExcelファイルで出力したいとなった時は、「phpspreadsheet」といったプラグインをComposeを使用して導入することができます。


▼コマンドで導入したいプラグインを実行します。

例)composer require phpoffice/phpspreadsheet

このように開発で必要なライブラリや便利なパッケージを取得することで、より開発の幅を広げることができます。

2-6. 日本語ドキュメントが豊富

CakePHPは公式サイトでも日本語訳されたドキュメントを閲覧することができます。

日本で広く普及しているフレームワークのため、公式サイト以外でも検索すればたくさんの情報を得ることができます。

またコミュニティも盛んで、CakePHPの公式サイトに記載があるようにgithubはもちろん、SlackやDiscordサーバー、YouTubeといった動画など幅広いコミュニティが用意されています。

3. CakePHPで出来ること


ここまでCakePHPの特徴を紹介してきました。

では、CakePHPを使って何が開発できるのか、どんな場面で使用されているのかについて説明します。

3-1. ECサイトの作成

PHP自体、動的な処理が必要な商品購入サービスや、会員登録サービスのECサイト作成に適しているため、CakePHPを用いてECサイトを作成することができます。

実際にCakePHPを使用しているサービスに、「ココナラ」というスキルマーケットがあります。

3-2. ブログの作成

有名なブログ作成ソフトである「WordPress」が、PHPを使用して開発しているようにCakePHPやHTML・Javascriptを使用してのブログ開発も可能です。

PHP全体で言えることですが、手軽に開発できるというメリットがある分、プログラムの処理速度が遅いというデメリットがあります。

小規模なブログ開発であれば問題なく処理できますが、データ処理の規模が大きいものには不向きだということに注意しておきましょう。

3-3. グループウェアの作成

社内で情報共有やスケジュール管理、コミュニケーションを行うための機能を揃えたシステムをグループウェアと言います。

社内掲示板や予約機能などを開発する際にPHPを使用する場合もあるため、フレームワークにCakePHPを使用して開発することも可能です。

4. まとめ


CakePHPについての基本的な内容や、特徴について紹介しました。

これまでPHPのフレームワークは「Codeigniter」しか使用経験がなかった身としては、CakePHPではbake機能を使ってMVCにかかわるコードを自動で作成してくれるという機能がとても便利だと感じました。

次回は実際にCakePHPをインストールし、実際に画面表示するところまでをご紹介したいと思います!

5. 次回使用環境

OS:Windows11
XAMPP:8.0.25 (PHP8.0.25)
Composer:2.5.1(インストール予定)
CakePHP:4.4.0(インストール予定)


CakePHP公式サイト:https://cakephp.org/