web初心者がcakephp3を導入からやってみた

どうも
いつもはvvvvをいじっているキドです。
今年からはwebを触り始めた見習い初心者マンです。

コーディングやらjsやらは調べてコード読めばわかる程度になったので、じゃあ次はサーバ寄りでもやってみようと思ってphpを触り始めました。

最初はhtmlに書き込んでDBと連携させる簡単なものしか作れませんでしたが、フレームワークを使って実用的なものを作ってみようと思って今回はCakePHP3を入れてみました。
その導入までを自分用メモ代わりに投稿します！

<h1>フレームワークとは</h1>
枠組みとかそんな感じの意味です。

だいぶ投げやりですけど私も大まかにしか知らないので。
簡単に言うと、ある程度まで必要とされる機能やらが既に備わっていて決められたところを自分好みに書き加えていけばモノが作れます。
って感じのものだと思います。

PHPのフレームワークはいろいろあるらしいですが、初心者なので他のは詳しく知りません。
なので気になる人は調べてみてください。

参考：コード部「これでスッキリわかる！最新PHPのフレームワーク7選！」
https://blog.codecamp.jp/php_frameworks
（更新:2016/03/01）

<h1>CakePHPを選んだ理由</h1>
web初心者なりの考えでCakePHPを選んだ理由としては、

「<b>美味しそうだから</b>」

と、簡単な理由もあるんですが、
<b>設定より規約重視</b>って言うのに惹かれた感じです。
柔軟に動けるのって大事かなって思って。
（更新2016/7/2現在:柔軟というより、規約が定まっているからプロジェクトの場合に動きやすいイメージに変わった。）
Laravelも勉強しているのでどっちにしようか迷ったんですが、CakePHPの方がフォルダ構成を見て数が少ないから覚えやすいかなって思ったのも一つの理由ですね。

<h1>開発環境</h1>
Macのローカル環境でやります。

・MAMP
・Composer
・CakePHP3

な感じで、
何番煎じかわからないですけどやっていきます。

<h2>MAMP</h2>
MAMPをインストールします。
https://www.mamp.info

因みにMAMPって、
Macintosh + Apache + MySQL + PHP
の頭文字をとった略称らしいですね。
でもMAMP for windowsってあるんですよね。謎です。

インストールしたらデフォルトPHPを変更してあげましょう。
Macは元からPHPがインストールされているらしいので、
それをMAMPのPHPに変更させてあげる必要があるわけです。
何はともあれターミナルを叩いていきます。

```
$ which php
```

と実行してあげると、「/usr/bin/php」と返ってきますが、これが元からMacに入っているPHPですね。
確認したら、.bash_profileをvim開いて変更してあげましょう。

```
$ vim ~/.bash_profile
```

そしたら次の行を書き加えてください。

```
export PATH=/Applications/MAMP/bin/php/php7.0.0/bin:$PATH
```

追加できたらおｋ。
ちなみにphp7.0.0はphpのバージョンを指定できるようなのでやりたいバージョンでやってみてください。
それからvimの操作で閉じるときに「:q」では変更が保存されていないので気をつけて下さい。保存して終了は「:wq」です。
私みたいにならないように操作は覚えておきましょう( ತಎತ)
保存したら

```
$ source ~/.bash_profile
```

を実行すると設定を再読み込みしてくれます。
念のためもう一度

```
$ which php
```

を実行して「/Applications/MAMP/bin/php/php7.0.0/bin/php」と返って来れば設定完了です。
これでMAMPのPHPに変更ができました。

<h3>MAMPの設定</h3>
MAMPって日本語でのデフォルト文字エンコードはUTF-8じゃないみたいなので直してあげます。
その詳細を詳しく書いてくれてる記事がありますのでご参照ください。
http://qiita.com/redamoon/items/28e7bbe1ccbf58cbbd04

<h2>Composer</h2>
次にComposerです。

>ComposerはPHPの依存管理ツールです。 Composerはあなたのプロジェクトが必要とする依存ライブラリを定義できるようにして、インストールを行います。

と説明されていますが、わからない人もいるかもしれません。私もいまいちよくわかっていなかったり。
簡単に説明すると、必要なパッケージを自動でインストールして持ってきてくれる便利屋さんって感じのやつです。そんな感じのイメージで大丈夫だそうです。

では、インストールしていきます。
サイトからダウンロードも出来るのだと思いますが、今回はターミナルからcurlコマンドをつかってインストールしてみます。

まずComposerが入っているか確認します。念のためです。

```
$ composer -v
```

入っていなければ「command not found」とこんなコマンド知らんわって返ってきます。入ってなければ当然ですね。
なのでインストールしていくのですが、その前に適当なディレクトリに移動しておきましょう。今回は「~・/tmp」に移動します。移動したらComposerをダウンロードしましょう。

```
$ cd ~/tmp/
$ curl -sS https://getcomposer.org/installer | php
```

ダウンロードしたら、composer.pharをPATHの通った場所に置きます。

```
$ mv composer.phar /usr/local/bin/composer
```

パーミッションで失敗する場合は`sudo mv`を付けて実行してみてください。
この場所はグローバルインストールとかなんとか言うらしくて、これをすることで`php composer.phar`の代わりに`composer`だけで実行が出来るようになるそうです。
このあたり詳しく学んでおきたいですね、個人的に。

```
$ composer -v
```

を実行してcomposerのバージョンが表示されたらＯＫです！

<h2>CakePHP3</h2>
やっとCakePHPをインストールできます！
早速、プロジェクトを管理したいディレクトリへ`cd`で移動してコマンドを実行しましょう。

```
$ composer create-project --prefer-dict cakephp/app appname
```

最後の```appname```は好きな名前で書き込んでください。これがプロジェクト名になるようです。
実行したら少し時間がかかりますが、ログがズラーッと並んで最後に「Set Folder Permissions? (Default to Y) [Y,n]?」と聞かれます。
これはログとかを保存するディレクトリ(logsかtmpとか？)に書き込み権限を与えて良いか聞いているんですって。まぁパーミッションどうする？って聞いてるのでわかりますかね。
特に問題なければYと答えましょう。
これでディレクトリを確認するとappnameと好きな名前を付けたディレクトリがあると思います。

インストールはこれでOKです！
Composerが無かったらもっと時間がかかっているかもしれませんね…

<h1>確認してみる</h1>
ちゃんとMAMPで動くのか確認してみます。
MAMPの設定画面からApacheのドキュメントルートを先ほどのappnameディレクトリに変更したら、

http://localhost

にアクセスしてCakePHPのページ？が表示されたら導入成功です！

実はこれでCakePHP3のブログチュートリアルの「tmp と logs ディレクトリのパーミッション」までが完了しました。次回はこのブログチュートリアルを記事に出来れば良いなと思ってます。
参考に：
http://book.cakephp.org/3.0/ja/tutorials-and-examples/blog/blog.html

これでCakePHP3をMAMPで触れるようになりましたね！
私も勉強しながらアウトプットをしているので、同じように初心者の人にもとっつきやすいような記事を書いていきたいと思いますので。

では、お疲れ様でした～