サーバーサイドのスクリプト言語として高い人気を誇るPHPには、数多くのフレームワークが存在しますが、そのなかでも人気の高いCakePHPについて解説します。
CakePHPとは
Railsの高速開発とPHPの機動性を兼ね備えたCakePHP
CakePHPは、Webアプリを素早く開発できるPHPのフレームワークです。
CakePHPは、Ruby のフレームワークである Ruby on Rails の影響を大きく受けているので、開発を短期間で開発するためのサポート機能がたくさん備わっています。
オープンソースで、MITライセンスのもとで配布されているので、無料で自由に利用でき、多くの企業やサービスで利用されています。
Laravelが登場して以降はPHPのフレームワークのシェアにおいて首位を譲ってしまいましたが依然として人気があります。
CakePHPと聞くとあの食べる「ケーキ」を思い浮かべてしまいますが、まさしく、「ケーキを焼くように簡単に開発できる」ことから名付けられています。CakePHP の公式サイトでも、ケーキのデザインが多く使われていたり、ケーキにちなんで「bake(焼く)」という機能も備わっていたりと制作者のユーモアが溢れたフレームワークです。
PHPとは
PHPとは、Web開発に特化したスクリプト言語です。
PHPは、HTML に直接コードを書き込めるので、サーバーサイドでプログラムを実行でき、HTML と組み合わせることで Webアプリを開発できます。
フレームワークとは
システム開発における「フレームワーク」とは、システムやアプリを開発するのに頻繁に使う機能の動作や処理をひとまとめにしたものです。基本的な骨組みがある分、必要最低限のプログラムのみで開発を進められるので、業務を効率化でき、開発にかかる期間を大幅に短縮できるだけでなく、誰にでもわかりやすいコードを書くことができるので、開発メンバー間で情報共有でき、簡単な仕様変更やコードの再利用が可能になります。
CakePHPでできること
ここからは、CakePHPで開発できるWebアプリで代表的なものを3つご紹介します。
ブログ/掲示板サイト
ブログ作成ソフトは、PHP で開発されているものが多くあります。世界的に使われている WordPress などもその一つです。これも、CakePHP を使えば簡単にブログを作れます。プログラムの処理速度は遅めですが、ブログなどの小規模なものであれば問題ありません。
ECサイト
会員情報の登録や商品の購入などの動的なページが必要なECサイトもCakePHPを使えば簡単に作成可能です。
グループウェア
グループウェアとは、社内で情報共有するための便利な機能が多く備わった業務管理システムで、スケジュール調整やドキュメント管理、設備予約にも使用されます。機能のほとんどは、PHP で作成できるため、CakePHP で作られることも多くあります。
必要なスキルや環境
CakePHPを活用するにはいくつかのスキルや環境が必要です。その代表的なものをご紹介します。
必要な環境
- OS環境(Windows、Mac、Linux等)
- Webサーバー
- データベース環境(推奨:MySQL)
- PHP 5.6.0 以降
※バージョンは可能な組み合わせであれば、なんでも構いません。
必要なスキル
- PHP
- HTML /HTML5
- CSS
PHP だけでなく、Webアプリ開発で必要になる HTML や CSS のスキルも必要です。また、動きをつけるには JavaScript のスキルも必要になってくるでしょう。
CakePHPの特徴
CakePHPには、効率的で高速な開発をサポートする機能が多く搭載されています。
MVCアーキテクチャ
設計に MVC モデルというアーキテクチャを採用しています。
これは、役割ごとにプログラムの処理を分けて開発するという考え方で、CakePHP 以外にもさまざまなフレームワークに用いられています。
MVC とはModel(モデル)、View(ビュー)、Controller(コントローラー)の略称です。
Model(モデル):データベースに対してデータの登録・取得・更新・削除などを行う。
View(ビュー):ブラウザに表示される画面の作成を行う。ユーザーが直接目にする箇所であり、Webページや Web サービスの見た目を決める際に欠かせない。
Controller(コントローラー):ユーザーからの要求に対して、Model と View の連携を行う。Model や Viewはそれらに対して Controller が命令を与えることで初めて実行される。
開発現場において、フロントエンドとバックエンドで分けて開発を進めるのが一般的ですが、PHP はバックエンド言語でありながら、HTML に直接記述していく言語であるため、ユーザーの目に触れるフロントエンド部分と、裏側で動くバックエンド部分の開発が混同しやすい傾向があります。
このとき、MVCモデルでは、ユーザーの目に触れる部分をView、データベースとのやり取りなどのユーザーに触れない部分をModel、Viewと Model が仲介する部分を Controller と3つに分担します。
例えば、会員登録をする入力フォームを作成するとしましょう。
このとき、まずユーザーの画面には入力フォームが表示され、ユーザーはユーザー情報を入力したのちに、登録ボタンを押します。そして、入力された値に問題なければデータベースにデータが登録され、登録完了ページに移ります。
しかし、この一連の流れを1つのファイルに書くこともできますが、複雑で読みにくいコードになってしまいます。
そこで、MVCモデルでは以下のような役割ごとに分け、①と④のようなユーザーの目に触れる部分をView、③のようなユーザーの目に触れない部分をModel、②のようなデータの受け渡しや確認といった仲介部分を Controller というように分担して開発します。
①ユーザー情報の登録ページ
②入力データの確認
③データベースへの登録
④登録完了ページへの移行
3つの機能ごとに役割分担をすることで、アプリ開発を効率的に分業できるのでエンジニアが得意分野に専念でき、アプリの質を高められます。
また、ファイルが別々になっているので、コードが整理されて見やすく、仕様の変更や再利用にも柔軟に対応できます。
O/Rマッピング
O/Rマッピングとは、PHPのオブジェクトとデータベースを対応させる仕組みです。O/Rマッピングの導入により、SQL文をソースコードに書き込む必要がなくなり、簡単かつ正確にデータベースを利用できます。
scaffolding機能
簡単なコントローラーを一つ用意するだけで、テーブルレコードの一覧・追加・削除・編集を行う画面を簡単に作成できます。
CoC(Convention over Configuration)
これは「設定より規約」を優先するという考え方です。設定を大量に書き連ねるのではなく、規約に沿ってプログラムを書くことで、余計なプログラムや設定を省けます。
例えば、商品クラスを「product」とすれば、商品情報を格納するデータベースは複数形の「products」という名前になります。
FormHelper
テキストボックスやラジオボタンといったフォーム関連のタグを自動で生成する機能です。Webページ上でユーザー・サーバー間でのデータやり取りにはフォームを用いるケースが多いですが、フォームヘルパーを使えば、同処理のコードを共通化してくれるので、少ないコード量で実行できます。これによって変更時に修正箇所も最小限に抑えられます。
bakeコマンド
Webアプリの土台であるプログラムを自動で生成する機能です。
bakeコマンドを実行すると、対話形式で入力を求められ、それに答えていくことにより、コマンドのパラメータによってプログラムを生成します。
これにより、MVC の基礎部分においては、ソースコードを書かずに作成できます。
フォームバリデーションチェック
バリテーションとは、入力されたデータが適切な形式であるかどうかをチェックする機能です。
CakePHP では、元からフォームバリテーションチェックのための仕組みが備わっているので、チェック機能を簡単に実装できます。バリデーションルールを定義すれば、フォームの扱いが楽になります。
初心者にやさしい
PHP自体、習得が容易な言語ですが、CakePHP もシンプルで、難易度は低めでしょう。
また、日本語の学習サイトも豊富にあるため、わからないことがあっても参考文献も多く、学習のしやすいフレームワークといえます。
活発なコミュニティ
CakePHPには、公式ページから参加できるコミュニティがあります。このコミュニティには、世界中からエンジニアが参加しており、情報交換や不具合の報告などが盛んに行われています。
CakePHPのデメリット
CakePHPには、手軽さや高速開発といった魅力がある一方で、デメリットも存在します。
処理速度が遅い
プログラムの処理速度が比較的遅いので小規模な Webサイトや Webアプリの作成には適していますが、大規模なデータを扱う場合には不向きです。
カスタマイズ性が低い
規約が厳しいと、誰がコーディングしても一貫性が出るため、読みやすくなりますが、その反面で、カスタマイズ性に欠けてしまいます。