PhpStorm&Dockerで最強のphp開発環境を作ろう！（後半）

# 前回のおさらい
前回は、

* PHPのDocker環境を作る
* PhpStormでPHPをコマンドラインで実行＆デバッグ
* PhpStormでPHPをブラウザで実行＆デバッグ

までやりましたね！
次はテストコードの実行、タスク管理ツールとの連携という実践的な内容について学んでいきます。

# PhpStormでPHPUnitを実行してみよう

## テストコード実行
tests/フォルダ配下のテストしたいファイルやフォルダを右クリックしてRUNするとテストが実行されます。
PhpStormがソースコードを見てこれはテストコードだと判断したら、PHPUnitで実行してくれます。それもdocker上のPHPでですよ！（まぢStormは気が利くね～）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/356e2664-4497-84c1-5321-116f974b10df.png)

テスト結果はこんな感じです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/00ee0474-7437-7db9-a2c8-dbb5f69a8419.png)

## テストコードをステップ実行
テストコードにbreak pointをつけて、虫アイコンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/b9886b41-c420-ae0b-0c1b-697a72ecee1b.png)

break pointで無事止まってくれました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/81f3fe87-65ce-c19b-676f-fb82a07d520a.png)

ここでDebugのすごいとこを紹介！STEP実行で気になる行まで移動して、その時の変数をvar_export形式（ソースに貼り付けたらすぐ使えるね！）やjson_encode形式でコピーしてくれるんですよ！どんだけ気が利くヤツなんだ！！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/73986cbd-c057-167f-a82d-2463d1163334.png)

## カバレッジ計測
今度は虫のとなりのメッシュなアイコンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/a18a6ceb-ab77-2485-235d-2ff543d2ca97.png)

こんなんが表示されます。詳しくは使って実感してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/bf3a9415-9403-47e3-8e19-ab6209159e84.png)

## xdebugによるprofile
ちょっとしたprofileなら、xdebugを使ってこんな感じでやってくれます。XHProfみたいだったら最高なんだけど、そこまでじゃありません。。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/f8e513fd-af87-bb0b-4c31-82b4a76be4a6.png)

# PhpStormでDocker上のMySQLにアクセスしてみよう
こんな感じで接続をつくってやります。
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/507e81c8-3d01-d7d8-0ccd-5b5ecf63cfc9.png)
はじめての時は、mysqlドライバをダウンロードしてみたいなのがでるので、それをクリックしてインストールしてください。赤枠に注意して入力し終わったら[Test Connection]をクリックしてテストが通ったら、OKしてください。
passwordは``oneforallallinone``です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/c7e75ce6-f069-0d9a-8155-e123553e8e3f.png)

こんな感じでいろいろできます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/548ecf07-1577-9049-9a7a-ec668a7ee63f.png)

テーブル表示されたデータは、CSV・TSV・SQL形式はもちろんカスタマイズすれば[bulk-insertのSQLでダンプ](https://qiita.com/albyte/items/94cd18aaf693abfa0ce6)とか[PHPの配列形式でダンプ](https://qiita.com/albyte/items/1fbc361c50c768b22588)などいろんな形式で出力できてとっても便利です。

# PhpStormでGit＆Redmineの連携をしてみよう

## PhpStormの簡単なGit連携

まだGitと連携されていない場合は、VCSのEnable Version Control integrationでGitを選びます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/ee48e253-c69e-deef-eea9-1194b164b6a6.png)

するとこのようにGitをPhpStormで簡単に操作できるようになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/e7c7ea7a-57f1-01fe-b490-50a496cefc21.png)

## Redmineの準備
まず、RedmineのDockerをGitで取ってきましょう

```bash:githubからRedmieを取ってくる＆起動
$ cd /c/Users/your_account/PhpstormProjects
$ git clone https://github.com/albyte/docker-redmine.git
$ cd docker-redmine
$ docker-compose up -d
```

しばらく待って、下記にアクセスするとログイン画面が表示されますので、ID/PWを入れます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/deb48a74-d46b-4e9f-09d4-04b830c333de.png)

```
http://localhost:8888/
ID/PW  admin / admin
```
その後新しいパスワードがどうだこうだ聞かれますので、適当に入力して進めます。

チケットが発行できるようにロールとステータスとトラッカとワークフローや優先度とかいろいろをざっくり設定します。
なんか面倒なので、省略。。

適当なプロジェクトを作ってやります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/b256bbc6-fb58-6b58-dc2e-58d1e16f1cd4.png)

適当なチケットを発行します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/1ea4399d-f748-5ace-d206-7a55eb6d616b.png)

## PhpStormとRedmineを連携させる
PhpStormのtask設定をします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/e1dc2685-1e1c-e69c-a8bb-0953db8f27c1.png)

作成されるブランチ名を入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/75f571be-fefc-20c9-cf7c-26a77476b485.png)

こんな感じでチケットからtaskとbranchとchange listが作成されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/e79d23ac-fb16-1bb8-d176-910961aee8eb.png)

Git連携だけでも十分便利ですが、task連携するとなんというか火打ち石からライターのような感動が待ってます。

# 便利なplugin
## pluginインストール方法
SettingsのPluginsでいろいろあるので、探してみてください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/31aed959-39ad-41a8-6b3b-cbbe21904c45.png)

## おすすめplugin
### Grep Console
* logをtail -fできるぞ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/41f6988b-54d4-6791-7ead-6d4122fbc66c.png)

### BashSupport
* case ... esacとかファンキーな構文がムカつくけど、ちょっとしたプログラムはやっぱbashだよねってあなたへ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/80806440-f0ef-9c87-b061-d588293a7a61.png)

### PlantUML diagramming tool integration
* UIの設計や各種UMLまでmarkdownでかけちゃうYO!
* gitで差分も分かるし、ドキュメントはオールmarkdownだね～
![image.png](https://qiita-image-store.s3.amazonaws.com/0/68254/da828c9b-f17b-161a-9c4a-38b93adaab87.png)

# おわりに
いままでEclipseやNetBeansを使ってましたが、今年の春くらいにPhpStormに出会い、うわ！英語じゃんって毛嫌いしてましたが、思ったよりすぐ慣れてStormの虜になりました。
PhpStormとDockerとの連携については、まだまだ不満もありますが、この前docker-composeに対応してくれてますます便利になりました。
ほんとPhpStormさいこー！

## P.S.
ほんとはSlim3でも使ってちゃんとしたサンプルを用意したかったのですが、年末は何かと忙しいので、最後のほうは文章も含めかなりテキトウなことになってしまいました。。
全然最強じゃないじゃん！むしろ最弱じゃん！って思われたかた、期待させてごめんなさいm(_ _)m