
私が最初PHPの基礎について学んだあと、「実践ではフレームワークを使うのでCakePHPについて自分で勉強してみて!」と言われたことがあります。
色んなサイトを調べても、本を読んでも、専門用語やプログラムが書かれていることが多く、結局フレームワークって何なの!?と迷走したものです。
PHPを仕事にするうえで必ず必要になってくるPHPのフレームワークの一つ、CakePHPについてまだ勉強していない、もしくはしているけど理解できない完全な初心者向けに説明していきます。
PHPのフレームワークとは?

PHPを学仕事にするうえで必ず必要になってくるPHPのフレームワーク。
PHP初心者にとって、難しい専門用語を使ってそれらのフレームワークやCakePHPについて解説されても、よくわからないことが多いと思います。
まず最初は、PHPのフレームワークとは何なのか?について説明していきましょう。
フレームワークとは何か?
フレームワークとは最も簡潔に言うと、その名の通り、「枠」の中に自分の「プログラム」を書き込む、ということです。
それぞれ沢山あるフレームワークは、共通の「枠」を作り、その中に一つのプログラムを作ることで、その「枠」を呼び出すだけで繰り返し同じプログラムを使えるようになります。
例えば、「ログイン認証機能」であったり、「DB呼び出し機能」のためのプログラムをこの「枠」の中に書いていくことになります。フレームワークによっては、こういった様々な機能が使える「枠」がすでに準備されているものもあります。
もちろん、すでに内蔵されている機能が多いフレームワークほど、データの容量が多くなるため、使っている機能は少ないのに動作が重い…ということもあります。
フレームワークを使った具体的な一例

開発の際によくある具体例で、フレームワークを使う利点を説明してみましょう。
まず、HPを作る上で100ページのページ数が必要だったとします。そして、すべてのページにログインボタンを作りたいと思っています。
普通に作ると、100ページすべてにログインボタンを作るためのプログラムを書き込む必要があります。コピペしたとしても、もしそのプログラムに不備があった場合、100ページすべて書き直さなくてはいけません。頑張ったとしても、間違えて関係ない1行を消してしまった、なんてことになったら悲惨です。
しかし、一つの「枠」に「ログインボタン」のためのプログラムを作り、その「枠」を呼び出すようにしておけば、不備や追加があってもその「枠」の中身を編集すれば、100ページすべて修正されることになります。
フレームワークというのは、それらの「枠」を作るルールや、呼び出すためのルールを共通化させたもののことを言います。
フレームワークによっては、すでに「ログインボタン」のための「枠」が内蔵されているものもあります。そういったフレームワークを使う場合は、わざわざ自分でログインボタンの為のプログラムを書く必要すらなくなるわけです。
フレームワークはPHPとは全く別に覚えなければならないルールが沢山あります。しかしそれさえ覚えてしまえば、初めて一緒に仕事をする相手でもスムーズにコミュニケーションをとることが出来るのです。
CakePHPとは?

フレームワークが何なのかということは理解できたでしょうか?
CakePHPというのも、先ほど説明した「フレームワーク」の種類の一つです。
PHPのフレームワークの代表的なものは
- FuelPHP
- Symfony
- Codeigniter
- CakePHP
- Laravel
上記の5つが代表的なPHPのフレームワークです。
今回はその一つ、CakePHPとは何なのか?について、説明していきましょう。
MVCという考え方
まず、CakePHPを理解するためには、MVCの考え方を理解する必要があります。
情報を呼び出すModel。
HPに表示されるView。
Viewからの要求に対して、適した情報を取り出すようにModelに指示し、再度Viewに得られた情報を表示するように指示するのが、Controller。
これらをそれぞれ独立させてプログラムを作成していくことを、MVCといいます。
Model
まず、Modelです。
Modelとは、外部情報(DB)を呼び出し、適した形に変換する機能です。
DBとの連携方法などの知識は必要ですが、Modelで必要な動作は、「DBから情報を引き出す」という点と、「情報をControllerに送る」に限定します。
View
Viewは一番わかりやすいかもしれません。
ViewはPHPのプログラムよりも、HTMLの記述が多くなります。
Viewに必要な動作は、「どのように情報を表示するか。」ということと、「HPを見ている人がどのボタンをクリックしたのかControllerに送る」という2点になります。
場合によっては、Webデザイナーに委託することもあります。
Controller
Controllerは最もPHPプログラムを必要とする部分です。
MVCにおいて、もっとも処理が重要で、PHPのプログラマーの腕が鳴るところです。エラーが出ると、たいていControllerの影響になります。
Controllerは、Viewから出てきたリクエストに対して、Controllerは必要な情報をModelに要求します。そして、Modelから得た情報をもとにViewに表示させる情報を伝えます。
言葉で説明するのは少し難しいので、MVCの動きを会話でイメージしてみましょう。





きっとこんな会話がされていることでしょう。
CakePHPの特徴
MVCというのは、フレームワークでもよくつかわれているPHPの考え方です。
それでは、CakePHPの特徴とは、一体何なのでしょうか?
特徴その1:日本人にも易しい
まず、日本語の解説ページが沢山あります。
もともと日本の多くのシェアを占めていたこともあり、CakePHPは沢山の解説ページが存在しています。
これから学習する、または開発途中に悩んでしまった、という時も、多くの情報がネット上に存在しています。これから勉強しようという方にはうってつけのフレームワークです。
最初はその中から正しいものやより効率がいいものを選ぶのは難しくもありますが、色んな人の考え方を見ることが出来るのはとてもやりがいがあります。
特徴その2:bakeコマンド
bakeコマンドを利用することで、必要なプログラムのテンプレートが自動生成されます。
Cakeにbake。開発者のユーモアセンスを感じます。本当に、甘いケーキを焼く、という意味で作ったそうです。
bakeコマンドには最初の環境設定が必要ですが、環境設定もエラーコード通りに直していけばすぐに使用できるようになります。
特徴その3:エラーコードが分かりやすい
CakePHPは、とにかくエラーコードが分かりやすいのが特徴です。
始めて勉強する場合は、とにかくエラーが沢山出ます。熟練者であれば何が原因か推測も出来ますが、初心者にはとても難しいのがCakePHPです。
また、エラーコードをきちんと読み解ければ、今後もこのエラーはこのパターンかな?と推測も出来るようになります。
CakePHPと様々なフレームワーク

CakePHPは、今まで日本でもトップのシェア率を占めていました。
実は、現在は減少方向にあります。
それでは、なぜCakePHPを学ぶ必要があるんでしょうか?
それは、今まで作られてきた日本のHPの多くがCakePHPで作られているからです。
あなたが新規の開発に勤めていくのであれば、Laravelというフレームワークを学んだほうがいいかもしれません。昨今日本だけでなく、海外でもシェアを占めているフレームワークだからです。
しかし、多くの場合、初心者が最初に任される仕事は、新規の開発ではなく「改修」や「機能追加」作業です。これらはすでに開発されているプログラムを使うため、CakePHPの仕事が多いのが現状です。
Laravelほど勢いはありませんが、依然として案件はたくさんあります。現場に入ったら求められる可能性が高いので、少しずつ勉強しておくことをオススメします。
未経験からPHPを学びCakePHPでいつくかアプリを作っていたのですが、(簡単なメモ帳とグルメランキングサイト)ですが、
laravelに目写りてしまいlaravelで新しくアプリを作ろうと考えていましたが、こちらの記事を読んでしばらはまだLaravelに手を出さない方がいいなと思いました。
CakePHPが使えればLaravelも半分くらい同じなので理解は早いですよ。PHPエンジニアとして現場に入ったら、どのみち両方使うことになると思います。
ありがとうございます!
未経験から転職しついて相談少しだけ相談したいことがあるのです。
主にLaravelを募集している企業に応募する場合にCake以外に
laravelでポートフォリオを作った方がよいのでしょうか?
(Laravelのドキュメントを読んで簡単なチュートリアルまでは終わっています)
Laravelを募集している企業なら、Laravelでポートフォリオ作った方が有利ですね。
ただ、若くて条件が良ければ
「CakePHPでポートフォリオ作って、Laravelは基礎だけ勉強しました」
で採用されるので一概には言えません。とりあえず就活してみて、厳しそうだったらLaravelのポートフォリオ作る感じでいいと思います。
ありがとうございます。
年齢的に28なのですが、就活してみて厳しそうだったらLaravelで作ってみます!