CakePHP - Build fast, grow solid  PHP Framework  Home


いやー、もうJavaでWEBアプリ作ること自体どうなのよ?

負の遺産であるStrutsに振り回されてから2年くらい経とうとしているが、今流行りのJavaによるWEBフレームワークって何なんだろう。


いや、Javaが嫌いなわけじゃないが、httpd動かしてtomcat動かして、それ連携させて(今はmod_proxy_ajpなの?mod_jkとかじゃないの?マジで?)、それぞれがログ吐いて、アプリもログ吐いて、俺はどれ見れば良いのよ?ってなるのはもう普通なんです諦めてください的に当たり前で、かつ昔誰か作ったWEBアプリはControllerがやたらと長くてそれも普通なんだろうと言い聞かせていたけれど。


違うんだろ?今は。


つ~か、もうWEBアプリ作って別にお客がそんなに付くわけもないんだからエンタープライズ志向とかなんとか、そんな話はどうでもいいんだよ、多分、俺達には。


つ~か、PHPでいいべ。今は。


まぁ、Railsって選択肢が今風なんだろうけど、PHPによる資産が周りにもあるので、そこは踏襲していこうかと。 ただ、ZendFramework Ver.1系なんだけど。どうしよう。


CakePHP3を試したい!

表題の通り。今更、だけど。 いや、PHPでWEBアプリ作ろうと思ったら、今時のフレームワークは何を選ぶのが良いのか、と考えていた。 一応ZendFrameworkのVer.1は触ったことがある。確か。

あと昨年にPHP7が出たのも知ってる。そしてPHP7は速い!という噂も聞いた。

とにかく、StrutsやらPHP7の使えないZendFrameworkやらから解放されて、というかそこから逃げて兎に角新しさにカマケテ当分はあんまりバージョンアップとか考えなくてもよいものを学習したいなぁ。あと年末だから少し時間あるから勉強してみようかな。 というのがキッカケのエントリーです。

で、PHPのフレームワーク選択だけんども、情報量の多さからCakePHP3とした。 手放しに「好き」だからという理由ではない。グーグル先生に聞けばそれなりの答えが返ってきそうだ、というのが理由だ。 あとZendFrameworkは未だにPHP7に対応しているのか?いないのか?で、疑心暗鬼になったので、この際諦めた。ってのもある。


開発環境(Windows)の構築、の前に

とりあえず、Windows7上で環境構築。

実は最近Windows7の入っていたレッツノートが壊れまして壊れました壊れたんだ。(ノД`)・゜・。。
そこで、マウスコンピューターのノートパソコンを買ってしまいました。出費痛い。でもCOREi7!メモリー16GB!Firefoxタブ50個開いてても余裕!(追記:いや少し微妙。タブ50個は開きすぎw)

で、壊れたレッツノートのWindows7をライセンスが余るので、Windows10上でVmwarePlayer使用してWindows7VM作ってそれを開発環境としちゃおうか!そうしよう!ということにしました。

だってホストOS(Windows10)汚したくないから。

で、以下Windows7VM上でのお話となります。


やっと開発環境(Windows)の構築

XAMPPのインストール

もう、お手軽にXAMPP使います。あんまり好きじゃないけど。 本来ならApache入れて、PHP入れて、MySQL入れて・・・って個別にやっていましたが、よくよく自分のブログ読むと環境構築して終わり、ってのが多いよ!イカンよ、俺!

今回はすぐにでもCakePHP3を触りたいので、XAMPP使います。

で、XAMPPは以下から「7.0.13/PHP7.0.13」を選択してダウンロードしてInstaller叩いてデフォのままインストールしてOK。

01

XAMPPダウンロード


PHP.iniの変更

php.iniを一部変更する必要があるみたいです。884行目あたり。セミコロンをとります。何でだ?

;extension=php_intl.dll
extension=php_intl.dll

スタートメニューからXAMPP Control Panelを起動してApacheの「Start」ボタンクリックでhttpd起動。 ついでにMySQLの「Start」ボタンもクリックでMySQL起動。

http.conf探してDocumentRoot探したらC:\xampp\htdocsとなっていたので、そこにphpinfo.phpってファイル作って中身は

<?php phpinfo(); ?>

ってしてブラウザーでhttp://localhost/phpinfo.php開いて以下の画面が出ることを確認。うわぁっ、やっぱXAMPPお手軽ぅ。

03


Composerのインストール

Composerって何すか?

調べてみるとQiitaでこんな風に書いてくれてる人がいた。感謝。

composerとは

で、何でこれ入れなアカンかって言うと、CakePHP3はこのcomposerを使ってインストールするらしい。へー。 ダウンロードしてきてlibに突っ込んでphp.iniでincludeにlib書いてあげる、とかではないのだ。

というわけで、以下からインストーラーをダウンロード&インストール。

compaser download

インストール時、phpのパス(C:\xampp\php\php.exe)やproxy配下の場合はproxyサーバーのURLを聞かれたりするので、逐次答えながらインストール。

インストール後にコマンドプロンプト開いて

> composer -V
Composer version 1.2.4 2016-12-06 22:00:51
 
>

となればOK。


CakePHP3入りプロジェクトの作成

CakePHP3を導入する場合、プロジェクト作成時にCakePHP3もダウンロードしてきて(ある程度)自動的に設定されるっぽい。

で、プロジェクト作成はcomposerを使ってやるっぽい。
一番手っ取り早いのはApacheのDocumentRootの下でプロジェクト作成するのが良いっぽいのね。
なので、以下を実行。

> cd c:\xampp\htdocs
> composer create-project --prefer-dist cakephp/app CakeTest
 
Installing cakephp/app (3.3.4)
  - Installing cakephp/app (3.3.4)
    Downloading: 100%
 
Created project in CakeTest
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing aura/installer-default (1.0.0)
    Downloading: 100%
 
(中略)
 
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump
> App\Console\Installer::postInstall
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]?Y
Updated Security.salt value in config/app.php
 
>

これだけでCakePHP3を含んだWebアプリのひな型プロジェクトが作成されるみたい。 実際、フォルダの中に色々出来てた。なにこれすごい。


WebアプリからDBへの接続設定

このままだとWebアプリのひな型からDBへの接続時にエラーになるので、MySQLにSampleDB作ってgrant文でユーザー作って、WebアプリからそのDBへの接続設定を実施しちゃう。

DB作成

コマンドプロンプトから以下を実行。

> cd c:\xampp\mysql\bin
> mysql -u root
 
MariaDB [(none)]> create database cake_test;
MariaDB [(none)]> grant all privileges on cake_test.* to dev_user@'localhost' identified by 'Password!' with grant option;
MariaDB [(none)]> flush privileges;
 
MariaDB [(none)]> exit;
 
> mysql -u dev_user -p cake_test
Enter password: *********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 23
Server version: 10.1.19-MariaDB mariadb.org binary distribution
 
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [cake_test]> show databases;
+--------------------+
| Database           |
+--------------------+
| cake_test          |
| information_schema |
| test               |
+--------------------+
 
MariaDB [(none)]> exit;

これでDBとDB接続ユーザーの作成が完了。


DB接続設定

あとはひな型プロジェクト(CakeTest)の下のconfig\app.phpを開いて232行目付近を以下のように修正する。

(修正前)
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
 
(修正後)
'username' => 'dev_user',
'password' => 'Password!',
'database' => 'cake_test',

じゃあ、とりあえずブラウザーからWebアプリのひな型を見てみる。

http://localhost/CakeTest

そしたら以下の画面が表示される。うまく行ってるっぽい。

04

これでひとまずWindows7上でApacheとPHP7とMySQL動かしてさらにCakePHP3の導入が出来たわけだが、これで終わっちゃいかん。


CakePHP3を学習するために

CakePHP3に関するいろいろなチュートリアルや情報サイトを読んでみた。まとめてみる。

1. CakePHP3 クイックスタートガイド

http://book.cakephp.org/3.0/ja/quickstart.html

公式ページ。
ブックマークアプリ作成のチュートリアルを通してCakePHP3での開発を学べるみたい。
やっぱ最初に見て実際にやるべきはここのページからなのか?
でも最初がこのサイトってのは敷居が少し高い気もする。。。


2. 「初心者のためのCakePHP3 プログラミング入門」グループ

http://libro.tuyano.com/index2?id=4536003

色々な言語のプログラミング入門本を書いてる掌田津耶乃さんによるチュートリアルページ。
CakePHP3以外のMVCフレームワークを触ったことがある人ならスーっと入ってくる感じ。
そこらへんが分かってないと、ちと辛いかもしれんが、でも調べながら進めていければ多分ここが一番初心者寄りかな。


3. CakePHP3入門・開発チュートリアル

http://easyramble.com/cakephp-develop-tutorial.html

公式ページの「CakePHP3 クイックスタートガイド」チュートリアルを実際にやってみたことを記録してくれている人のページ。
但し、いくつか公式とは異なる部分もあって、例えばDBのテーブル作成部分はマイグレーション機能を使用していたり、あと触りではあるけどプロジェクト作成後にgit管理下にしてみたりと、わりかし実務でやっていることに直結していて、良いよ!このサイト。
公式と見比べながら、また自分でも調べながら実施できるようであれば、かなりCakePHP3を理解できるのではなかろうか。
つ~か、マイグレ使ったことないので参考になったわ。


まとめ

今回はCakePHP3開発環境のセットアップといくつかのチュートリアルサイトを読んでみて、開発方法についてフワッとではあるけど妄想することが出来ました。
もう少し実務に直結させようとするならgitのセットアップと構成(バージョン)管理方法にも言及したり、さらにはユニットテスト、EtoEテストへ繋げなきゃいけないんだけど、まずはWebアプリ作ることが先決だわな。

つ~わけで、ちと勉強してみるべ。