第16回関西PHP勉強会


Twitter: @kphpug / #phpkansai
FB: Kansai PHP Users Group


## 大事な案内

PHPカンファレンス関西2014 2014/06/28(土) 大阪産業創造館

blog(Kobito)を書くまでが勉強会


### 自己紹介

氏名、TwitterIDなど、PHP歴とか。

## Herokuで作るスケーラブルなPHPアプリケーション

@shin1x1 さんの話

### Herokuとはなんぞや

- Heroku社（なのかな？）が運営するPaaS
- 2007 年 Service In.
- 300 万以上のアプリ動いてる
- 初めRuby が初め、Java、Nodeが動き…2014/04にPHP正式対応

#### Herokuの嬉しい所

- Git push で Deploy
- middlewareのインストールなどが不要
- 無料枠でわりと試せる。


#### 対応

- PHP 5.5.12/ 5.5.13
- hhvm 2.1.0
- mbstring, memcached 等有り
- using composer.


#### Add-On

- PostgreSQL/MySQL/KVS
- Mail
- Log
- 監視
- Queue
- とかとか…

### PHP アプリのデプロイ

```shell
$ ls 
index.php
$ cat index.php
<?php phpinfo();
$ git init
```

#### Deploy


#### サインアップ

どこも同じ

#### heroku toolbelt インストール

- 黒い画面で、Herokuを操作するためのコマンドラインを提供
- ブラウザであるけど、こちらも便利なのでおすすめ

#### アプリケーション作成

Heroku上でアプリケーションを作成する。

〜〜 でも 〜〜

index.php があれば、よしなにそれが動くが、composer.json がないとワーニングが出る

!! *Git は使わないといけないのが注意* !!

### スケーラブルな構成を作る

- 画像アップロードサイト
- ログイン認証
- Laravel 4.2

のサンプルアプリケーション。Githubにアップロード済み

#### Simple Architecture

サーバとか必要な構成: Apache/PHP, Log, DB, Session, File
これだと、

- 1台のサーバにあるので、サーバを増やすことができない（None Scalable）
- Apache+PHP / DB / Session / File →それぞれバラバラにする
- Apache+PHP = Dyno (Heroku用語)
- 他の DB / Session / File は Add-On を使う（外部サービスの連携）

#### スケーラブルな構成

- Dynoはスケートレスにする
- アプリケーションデータは Add-Ons におく

中のこと

- DB の環境設定は環境変数で受け取るので、parse_url 関数で展開させて、それに書かれているサーバに接続する
- 他の Add-Ons もこのようなやり方で使う
- というのが Qiita に記事が（ｒｙ
- ログイン認証はRedisでこれも記事がQiitaに（ｒｙ
- AWS S3 の接続キーとかは、heroku config:set で環境変数にセットする
- ログ stdout/stderr に書き出して、PaperTailとかの Add-ons にする

〜〜デモは飛ばします〜〜

#### 大事なこと（ハマった所）

- ファイルに保存したデータは消える
	1. Deploy や、環境変数の設定変更等の走査
	2. 一日一回の再起動
	3. 無料枠の時は、アクセスなけりゃ寝てる

1. アクセスするたびに、タイムスタンプをファイルに保存するアプリをDeploy
2. push したらタイムスタンプの内容が書き換わる

データは消える（ただし、ソースコードは消えない） = データは外部に逃す = 自然とスケーラブルな構成にせざるおえない

### まとめ

1. Heroku は無料枠で使える
2. Add-ons の活用が肝
3. スケーラブルアプリケーション矯正ギブス

参考:
- 公式ドキュメント(英語なのでGoogle翻訳などで。)
- 電書でHerokuの本がある（ただし、まだベータ版なので、章ごと白紙とかある）

## Yii2 ベータなのに実務に使ってる様子

@tanakahisateruさん

### YiiFramework (ィーフレームワーク)

- 1.1 ( PHP 5.1 >= ) CentOS5.0 のみ…
- 2.0 ( PHP 5.4 >= )


結構流行ってる

1.1 → 2.0 でPHPのいいところが取り込まれた

### beta で Q/A

- 使えるの？→納品近いならやめとけ
- リリース直近では？→メンテし続けれるならいいんじゃない

使ってみた

去年末からαを使っていた。

### いいところは？

やってみます。（デモ）

http://goo.gl/729eMq → https://github.com/tanakahisateru/yii2-sample

2,3時間ぐらいの作業ろぐ

### composer create-project でYii2の初期状態ができる

- お問い合わせフォームがある
- static ページもできている
- PHPinfo もある
という状態

- Gii のフラットジェネレータを使って webブラウザ上でモデルを作成すると、ActiveRecodeを作って、PHPコードも吐いてくれる


- Model の中にバリデーターがある

- IDE ( PHPStorm ) にフレンドリー
- DataProviderにPagingやFilterなどを取り回すので、それが良しなにやって、管理画面がサクサクつくれる
- これらが、管理側/表側、両方一度に作成できる

## Composer のお話

みかかね ( @mkkn_info ) さん.

### Composer 


依存管理ツール。

- 無い時
	- 同じコードが別々の箇所にあって、えらいことになる
	- バージョン管理したくねぇ
	- 構築とかとか

これらが解決する

### composer.json


ライブラリ依存が書かれているので、これがあればcomposerでインストールできる

1. composer.phar があればOK。
2. composer.json
	1. composer.phar init で作成される
	1. 他のプロジェクトからコピペ
3. ライブラリの調べ方： Packagist
4. composer.phar require <package> <version> でcomposer.json に追記される
4. composer.phar install でインストール
5. vendors/autoload.php を reuqire すれば、使えるようになる
6. composer.phar update でアップデートされる
7. composer.lock にバージョン情報はいってるので、git add しとくといいよ

require dev で入れた場合、requireエントリとは別に入るので、開発環境と本番を切り分けることができる

#### packagist にない

phar / github とかとかでも composer 経由でインストール可

repositories エントリーに書けばいい。

```
repositories: {
	type: vcs
	url: https://github.com/...
}
```

とか

#### Version 情報

tag がそのままバージョン情報になる

dev-master: Master ブランチ

基本的には tag のほうが良い。ブランチは開発中のが含まれる。

---- 気力尽きたのでたとたどでメモ -----


#### Satis

Composer のリポジトリビルダー



## PHPStorm

@msng さん

色々さわったらこれが一番いい

個人ライセンス $99

KeyRemap4MacBook : Mac のキーバインドをかなりいじる。 Space -> \ にしたり。

Qiita に　https://twitter.com/msng/status/479601166251094016