PHPのIDE「PhpStorm」使い始めのアシアト


[PHPカンファレンス2015 - #phpcon2015](http://phpcon.php.gr.jp/2015/) でのデモを見て、使いやすそうかもと思ったので30日間のお試し期間で試してみる。
お試し中の悩んだことや設定／変更したこと、所感などを日ごとにメモっておくことにする。
使ってみて良かったらライセンス購入しようと思う。

* [PHP IDE :: JetBrains PhpStorm](https://www.jetbrains.com/phpstorm/)
* [PhpStorm | サムライズム](http://samuraism.com/products/jetbrains/phpstorm)

## 環境
開発は VMware 上で行っている。
ホストとゲストとでsamba共有している。
参加してる案件自体はSVN管理だが、自身のローカル作業内容はGit管理しちゃってる。
なのでローカル環境は`.svn`と`.git`が混在してるゾ！

* ホスト情報
    * Windows 7 Professional 64ビット
    * VMware Player 7.1.0
    * PhpStorm 9.0.2
* ゲスト情報
    * CentOS 6.5
    * PHP 5.4

## ショートカット
調べたショートカット（Kyemap）は別途 [PhpStorm Keymap](http://qiita.com/nanoco/items/b2c02b166463215f9183) に残すことにする

# 1日目＠20151005
* まずはここ（[PHP IDE :: JetBrains PhpStorm](https://www.jetbrains.com/phpstorm/)）からDLしてインストール
* Eclipseをメインに使用しつつ傍らでPhpStormの設定とか触ってみたり、実際にこっちで開発してみたり...

## 悩んだこと
* プロジェクトの追加方法（いや、ほら、全部英語だからさ...(汗))

## 設定したこと
各項目の「Find Action keyword」をメニューの「Help > Find Action（Ctrl + Shift + A）」出てくる検索ボックスにいれると簡単に設定画面に飛べて便利。

### 1. 行表示
Find Action keyword: Show line number
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > General > Appearance
3. 「Show line numbers」にチェックを入れる

### 2. タブとスペースを可視化
Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > General > Appearance
3. 「Show whitespaces」にチェックを入れる

### 3. エディタのcollorSchemeを変更
Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > Colors&Fonts
3. 元になるcollorSchemeを別名で保存して、自分用に好きに設定した。Eclipseで使用していたRecognEyesに近い感じに設定。

### 4. エディタのフォントを変更
Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > Colors&Fonts > Font
3. Primary font：Migu 1M／size：14

### 5. キーマップの変更
Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Keymap
3. Keymaps：Eclipse

### 6. エディタで表示しているファイルとプロジェクトのツリーの選択ファイルを同期
1. プロジェクトを開いている状態で、projectの歯車をクリック
2. 「Auto Scroll from Source」にチェック

### 7. プロジェクトのツリーで選択したファイルをダブルクリックでエディタに表示
1. プロジェクトを開いている状態で、projectの歯車をクリック
2. 「Auto Scroll to Source」のチェックを外す 
※チェックがついた状態になると、ファイル選択でエディタに表示されるようになる

# 2日目＠20151006

* 確かに、起動がEclipseより速いかもしれないと思い始める2日目

## 悩んだこと
* SVN周りの見方が良くわからんちん。
    * git連携記事はわんさか出てくるんだが、SVN記事がみつからん。
    * まーひとまず、ターミナルからのコマンドでなんとかなるし、放置しておこう。

## 設定したこと
各項目の「Find Action keyword」をメニューの「Help > Find Action（Ctrl + Shift + A）」出てくる検索ボックスにいれると簡単に設定画面に飛べて便利。

### 1. typo warningの制御
Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > Inspections
3. Speling -> Typo のチェックを外す

上記対応でwarningは出なくなるが、同時に本当のTypoに気付きにくくなるため、辞書登録して制御した方がよいらしい。

#### 1-2. Spelling Dictionaries
Find Action keyword：dictionaries
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > Spelling
3. 「Dictionaries」タブを選択
4. ここに辞書ファイル（単語が羅列されたテキストファイル）があるディレクトリを登録すればOK...らしいがまだ試してない

### 2. Ctrl(Command) + マウスホイールでエディタの拡大縮小をさせる
Find Action keyword：Change font size(Zoom)
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > General
3. 「Change font size(Zoom) with Ctrl+Mouse Wheel 」にチェック
4. Apply

# 3日目＠20151007
* SVN周りが分からんチンなのは、ターミナルからのコマンドでなんとかなるとはいえ、Eclipseから移行させる意味がないよなーと思い始める3日目
    * あー、なんとなく掴めてきたけど、`svn status -u` 的なものってないのかなー

## 設定したこと
各項目の「Find Action keyword」をメニューの「Help > Find Action（Ctrl + Shift + A）」出てくる検索ボックスにいれると簡単に設定画面に飛べて便利。

### 1. Default Settings
今更感満載だけど、メニューのFile配下に「Default Settings」なるものを見つけたので触ってみる。

#### 1-1. Editor の CodeStyle 設定
1. メニューの「File > Default Settings」で設定画面を開く
2. Editor > Code Style

##### 1-1-1. CodeStyle: PHP
* Tabs and Indents：タブとインデント設定
    * 特に変更なし
* Spaces：スペース設定
    * 自分好みに変更
    * 変更前後の状態がpreview表示されるので設定しやすい
* Wrapping and Braces
    * 特に変更なし
* Blank Lines
    * 特に変更なし
* PHPDoc
    * 自分好みに変更
    * 変更前後の状態がpreview表示されるので設定しやすい
* Other
    1. 「Convert True/False constants to: 」にチェック
        1. 「Upper case」を選択
    2. 「Convert Null constants to: 」にチェック
        1. 「Lower case」を選択
    3. 「Blank line before return statement」にチェック
        * ここにチェックを入れることで、functionのreturn値を書く際、空行が一行上に入るようになる
    4. 「Align Key-value pairs」にチェック
        * ここにチェックを入れることで、配列のkey, value の頭位置を揃えてくれる
    5. Apply
* Arrangement
    * 特に変更なし

# 4日目＠20151008

丸一日ほぼコード書けなかったYO。
打合せに体力けずられまくったので、昨日対応した内容の確認とって反映してゴーホームした。

# 5日目＠20151009

作業の合間にプロジェクトの追加周りを少し掘り下げてみようと試みる

## 設定したこと
各項目の「Find Action keyword」をメニューの「Help > Find Action（Ctrl + Shift + A）」出てくる検索ボックスにいれると簡単に設定画面に飛べて便利。

### 1. Folding (折り畳み)
Find Action keyword：Show code folding outline
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > General > Code Folding
3. 「Show code folding outline 」にチェックを入れると折り畳み有効になる
4. 「 Collapse by default（デフォルトの折り畳み）」を設定
5. Apply

＜Collapse by default の項目＞

| 表示項目 | 意味 |
| :-------- | :---- |
| File header | ファイルヘッダー |
| Imports | インポート |
| Documentation comments | ドキュメントコメント |
| Method bodies | メソッド本体 |
| Custom folding regions | カスタム折りたたみ地域 |
| -------- | -------- |
| XML tags | XMLタグ |
| HTML 'style' attribute | HTMLの「スタイル」属性 |
| -------- | -------- |
| CSS Data URL | CSSデータのURL |
| -------- | -------- |
| Object Literals | オブジェクトリテラル |
| Array Literals | 配列リテラル |
| XML Literals | XMLリテラル |
| -------- | -------- |
| PHP class body | PHPのクラス本体 |
| PHP imports | PHPのインポート |
| PHP method body | PHPのメソッド本体 |
| PHP function body | PHPの関数本体 |
| PHP tag | PHPタグ |
| PHP HEREDOC￥NOWDOC | PHPのヒアドキュメント |

### 2. TODOのカスタマイズ
デフォルトの設定でもPHPStormが「todo」を自動解釈してくれるが、既存のコードにtodoが残っている場合、どれが自分が残したtodoなのかがわからなくなるので自分用のTODOを作ってフィルター掛ければOK。

Find Action keyword：
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Editor > Colors & Fonts > TODO
3. 「Patterns」に自分用のTODOパターンを追加 
    * Pattern：`@TODO: ` 
    * Case Sensitive（大文字と小文字を区別）：チェック入れた
4. 「Filters」に自分用のTODOフィルターを追加
    * Name：my todo
    * Patterns：手順3で追加したパターンにチェック
5. Apply

前準備は上記手順で完了。次はTODO viewでの作業。
TODO view（って呼び方であってるのかな？）は下記方法で表示。

* デフォルトのKeymapでAlt+6（Eclipseでも同じだった）でTODO view が表示される。
* Tool Bottunsを表示させてたらそこにある「6: TODO」で表示される。

1. 「Filter TODO Items」アイコンをポチる
2. 上記設定4で追加したフィルター名を選択
3. 自分が追加した TODO のみが表示される！！素晴らしい！！

ちなみに、 TODO view の上部タブの内容は下記な感じ

* Project：プロジェクト全体の TODO を表示
* Current File：選択しているファイルの TODO のみを表示
* Scope Based：？なんだろこれ
* Default Changelist：？なんだろこれ


## プロジェクトの追加周り
1. PhpStorm を起動すると、「Welcome to PhpStorm」ダイアログが開く
2. 「Create New Project from Existing Files」を選択
3. 「Create New Project: Choose Your Scenario」画面が開く

### 「welcome to PhpStorm」画面の表示内容

| 表示項目 | 意味 |
| :-------- | :-- |
| Create New Project| 新しいプロジェクトを作成 |
| Open | 開く |
| Create New Project from Existing Files | 既存のファイルから新規プロジェクトを作成 |
| Check out from Version Controll |  VCSからチェックアウト |

### 「Create New Project: Choose Your Scenario」画面
下記5項目から自分にあった物を選択

> This wizard helps you create a project from existing sources.
> Select scenario:
> 1. Web server is installed locally, source files are located under its document root.
>     * You are ready to go without copying anything.
> 2. Web server is installed locally, source files are located elsewhere locally.
>     * Source files are copied to project root, then synchronized with server when necessary.
> 3. Web server is on remote host, files are accessible via network share or mounted drive.
>     * Source files are downloaded to project root, then synchronized with server when necessary.
> 4. Web server is on remote host, file are accessible via FTP/SFTP/FTPS.
>     * Source file are downloaded to project root, then synchronized with server when necessary.
> 5. Source files are in a local directory, no Web server is yet configured.
>     * A folder with source files is added to project, server synchronization can be set up later.

↓↓↓ google先生、タノンマス↓↓↓

> このウィザードでは、既存のソースからプロジェクトを作成するのに役立ちます。
> 
> 選択シナリオ：
> 
> 1. Webサーバーがローカルにインストールされ、ソースファイルは、そのドキュメントルートの下にあります。
> 	* あなたは何をコピーせずに移動する準備が整いました。
> 2. Webサーバーがローカルにインストールされ、ソースファイルが他の場所でローカルに位置しています。
> 	* ソースファイルは必要なときに、サーバーとの同期、ルートを投影するコピーされます。
> 3. Webサーバーは、リモートホスト上で、ファイルがネットワーク共有またはマウントされたドライブを介してアクセスします。
> 	*ソースファイルは必要なときに、サーバーとの同期、ルートを投影するダウンロードされます。
> 4. Webサーバーは、リモートホスト上で、ファイルはFTP/ SFTP/ FTPSを介してアクセスします。
> 	* ソースファイルは、ルートを投影するダウンロードされ、その後、ときに、サーバーに必要な同期。
> 5. ソースファイルはローカルディレクトリに、何のWebサーバーがまだ設定されていませんされています。
> 	* ソースファイルとフォルダは、プロジェクトに追加されたサーバの同期は、後で設定することができます。

# 6日目～9日目＠20151010～20151013
* 土日祝日はお休みじゃん
* 火曜も丸一日ほぼコード書けなかった

# 10日目＠20151014

* `svn status -u` 的なものがマジで欲しい

## Version Control周り
Version Control Veiw

| タブ項目 | 意味 |
| :-------- | :-- |
| Local Changes | ローカルの変更 |
| Repository | 現在のリポジトリのコミットログ（と思われる） |
| Incoming | Updateされるファイル一覧 |
| Subversion Working Copies Information |  |
| Update Info: YYYY/MM/DD hh:ii | Update後の更新情報が表示されてるっぽい |

## TODO viewをエディタ部分と切り離す
これ、地味にうれしい

1. TODO viewの右角らへんにある歯車をクリック
2. 「Floating Mode」を選択
3. エディタから切り離されるので、好きな場所に配置！！

# 11日目～18日目＠20151015～20151022

かぁーっ！設定とか使い勝手とかいじったりする時間とかなかったわー。かぁーっ！


# 19日目＠20151023

## 検索機能あれやこれ
検索機能が豊富でやりたいことができぬ。できぬぞJOJO状態なのでまとめる。

### 通常検索（Keymaps：Eclipse の挙動）
_2015/1027 追記：ここに書いた通常検索、KeymapsをEclipseに設定してる時の挙動だったわ…_

Keymap: Ctrl + F

現在開いていて選択状態になっているファイル内に対して検索が可能。
出てきたダイアログの右側にあるオプションを選択することで下記条件を付けることができる。

| 表記内容 | 意味 | チェックあり | チェックなし |
| :-------- | :-- | :-- | :-- |
| Match Case | 大文字／小文字 完全一致させるか | 一致させる | 一致させない | 
| Regex | 正規表現使うか | 使う | 使わない |
| Words | 単語として認識させるか | させる | させない |
| Preserve Case | ケースを保持 | 未調査 | 未調査 |
| In Selection | 選択範囲内 | 未調査 | 未調査 |

検索文字列が入力されている状態で検索バーの「Find All（Ctrl + G）」押下で「Find view」が開き、そこに検索一覧結果を出してくれる。

## 設定したこと

### 1. キーマップを変更
1日目＠20151005に設定した内容の「5. キーマップの変更」で「Eclipse」に設定したのだが、検索機能のkeymapがグダグダだったので、一旦「Default」に戻すことにした。

Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Keymap
3. Keymaps：Default

## [PhpStorm Keymap](http://qiita.com/nanoco/items/b2c02b166463215f9183) へ追記した項目一覧

* 対応する括弧へ移動

# 20日目～21日目＠20151024～20151025
休日は全力で体力気力回復してた。首の痛みが増してきてるまずい。

# 22日目＠20151026

## 設定したこと

### 1. キーマップを変更
19日目＠20151023に再設定した「5. キーマップの変更」の「Default」に対して個人用に使いやすい設定に変更。

Find Action keyword:
1. メニューの「File > Settings（Ctrl + Alt + S）」で設定画面を開く
2. Keymap

| 大項目 | 項目 | Default設定 | 個人設定 |
|:------- | :--- | :------------ | :-------- |
| Editor Actions | Delete Line | Ctrl + Y | Ctrl + D |
| Editor Actions | Duplicate Line or Block | Ctrl + D | Ctrl + Y |

# 23日目＠20151027
* Eclipseと起動具合が変わらなくなっている気がする...のだが...。いや、むしろEclipseより重くね？何か変に触ってしまったかしら。
    * 一旦閉じて再度起動したらそんなことなかった。すんなり開いた。たまたまか。

## Version Control周り

### エディタに開いているファイルがリポジトリと差分が出た場合

今まで自分が触ってるファイルに対して別の人が更新を掛けるという状態にならぬまま来ていたけど、ここにきてやっとその状態がやてきた。

---

開いているファイルにリポジトリと差分が発生した場合、開いているファイル上部に下記内容が示された帯が表示される。

> Outdated version. Modified by 更新者名 2 minutes ago: コミットメッセージ...　　　[Show Diff] [Update Project]

意味は
「古いバージョン。2分前 更新者名 によって変更されました：コミットメッセージ...」
みたいな感じ。
その文に続いて帯の右側に「Show Diff」と「Update Project」というリンク下線文字が続く。それぞれ、そのまんまの意味。

| 表示内容 | 意味 |
|:--------- | :--- |
| Show Diff | 差分エディタで差分を表示 |
| Update Project | 更新してくれる（...はず）|

「Version Control View」の「Incoming」タブで表示される更新ファイルをダブルクリックで開いても差分表示される。

# 24日目＠20151028

特になにもなし

# 25日目＠20151029
起動したら下記ダイアログが表示されて朝から「オイオイオイオイ、何なんだい？PhpStormさん？」という感じになったけど、なんてことない。ただのライセンス確認でした。
わざわざありがとうございます。訝しげな目で見てごめんなさい。
![Dialogbox_PhpStormEvaluation.PNG](https://qiita-image-store.s3.amazonaws.com/0/50632/9c6b1324-9416-46ae-14b5-5e827af5a642.png)
（ここに来て初の画像[^image]だよ！）

[^image]: kobitoから画像上げるの気になってはいたんだけど、使ってみてわかった。画像上げるの楽ちん便利だわ。最初からもっと画像撮っておけばよかったかな。

表示内容は上記画像にある通り。一応下記に文を載せておく。

> PhpStorm Evaluation
> Thank you for evaluating PhpStorm.
> Your evaluation license expires in 6 days.
> 
> For information on how to upgrade your evaluation software go to  https://www.jetbrains.com/phpstorm/buy/?fromIDE
> 
> ［Enter License］［Upgrade Online Now］［Continue Evaluation］
> 

↓↓↓ google先生（ry

> PhpStorm評価
> 
> PhpStormを評価いただき、ありがとうございます。
> あなたの評価ライセンスは、6日に失効します。
> 
> アップグレード方法の詳細については、あなたの評価ソフトウェアは https://www.jetbrains.com/phpstorm/buy/?fromIDE に行きます。
> 
> ［ライセンスを入力してください］［今すぐオンラインアップグレード］［評価を継続］
> 

つまり、
「今日を入れて残り6日で評価版のライセンス切れるけど、君、どうするん？もうライセンス持ってるん？持ってないんだったら今すぐ購入する？それともこのまま評価版で突っ走る？」
ってなことを聞かれていたわけですね。
今回はこのまま評価版で突っ走ることにするので「Continue Evaluation」を選択し、無事起動となりました。

# 26日目＠20151030

仕様変更対応とかしていた気がする。

# 27日目～30日目＠20151031～20151103
11/2の休みをGETして4連休をダラっと過ごした。

# 31日目＠20151104

## 評価版のライセンス切れ

評価版の使用期間は

> Free 30-day trial

と記載されている通り「30日間」になります。
昨日で評価版のライセンスが切れたため、起動したら起動したら下記内容のダイアログが表示されました。
![Dialogbox_PhpStormEvaluation_151104_01.PNG](https://qiita-image-store.s3.amazonaws.com/0/50632/109a87e2-1e35-ab80-0641-9bfceb50cd8e.png)

> Evaluation License Expired
>
> Your evaluation license has expired. PhpStoem will now exit.
>
> ［Upgrade Online Now］［OK］

↓↓↓ google（ry

> 評価ライセンスの有効期限が切れました
> 
> あなたの評価ライセンスの有効期限が切れています。 PhpStoemは現在終了します。
> 
> ［今すぐオンラインアップグレード］［OK］

まんまですね、はい。評価版使用期限切れたのでアップグレードorDieです。
今すぐオンラインアップグレードはしないので、ここでは「OK」を押して終了させました。

で、なんとなく再度起動とかさせてみたら下記内容のダイアログが表示されました。

![Dialogbox_PhpStormEvaluation_151104_02.PNG](https://qiita-image-store.s3.amazonaws.com/0/50632/89e791c5-f6d6-5eef-986f-e49288266c88.png)

> Evaluation License Expired
> 
> Your PhpStorm evaluation has expired. Your session will be limited to 30 minutes.
> For information on how to upgrade your evaluation software please go to https://www.jetbrains.com/phpstorm/buy/?fromIDE.
> 
> ［Enter Key］［Upgrade Online Now ］［OK］

↓↓↓ google（ry

> 評価ライセンスの有効期限が切れました。
> 
> あなたPhpStorm評価の有効期限が切れています。セッションは30分に制限されます。
> あなたの評価版ソフトウェアをアップグレードする方法については https://www.jetbrains.com/phpstorm/buy/?fromIDE にアクセスしてください。
> 
> ［キーを入力してください］［今すぐオンラインアップグレード］［OK］

30分間はなんとか使用可能みたいですね。
「30分経ったら閉じて再起動してそこから更に30分間使用可能」とかできるんでしょうか。少し気になりますが、そんな面倒な事する気もないし、そんな面倒な事をしながら仕事を進めるとか効率悪いにもほどがあるのでやらないですが、気にはなりますね。

・・・再度起動したままほっぽっていたら、最初の起動時に表示されたダイアログが再び表示されました。

![Dialogbox_PhpStormEvaluation_151104_01.PNG](https://qiita-image-store.s3.amazonaws.com/0/50632/109a87e2-1e35-ab80-0641-9bfceb50cd8e.png)

なるほど、この2つでLOOP LOOPされるわけですね。

## 評価版を30日間使用してみて

* 「今なら割と時間に余裕があるから評価版存分に触れるだろう」っていうタイミングを狙って試してみたつもりが「いつから時間に余裕があると錯覚していた？」状態だったのでそんなに深くは触れなかったのだけども、そこまで設定とかしてないけど特に問題なく開発ができるので、PhpStorm、とても良いIDEだと思います。軽いし。


* 何も設定しないでデフォルトのまま開発を進めることも可能なんだと思う[^1]けど、個人又はチームのコーディングスタイルに合わせた設定とかにしないと細かい部分で後々面倒そうだなーと思いました[^2]。 
    * なので、どういった設定が出来るのかとか、コードフォーマットが適応されるタイミングはいつか、など必要最低現の設定はあらかじめ調べたり設定しておいたりするのが良いのだろうと思いました。

[^1]: 私は最初からちょいちょい設定変更しているので実際デフォルト設定のままいけるのかどうかは不明です。
[^2]: まー別にこれはIDEだからとかじゃなくて当たり前だのクラッカーなことだと思うけど

* たまに起動がこれでもかってくらい遅いときがあるので、その原因が知りたいなぁ…。
私の設定ミスなのか、そういう仕様なのか、どこかにゴミが貯まっているのか…。

## で、ライセンス購入するの？どうすんの？ らへんについて

パーソナルライセンス（新規）で一万一千ちょい円なので、PHP開発が今後もずっと続くぜぃ！な状態だったら買っていたと思うのですが、ちょっと来月からPHPで開発かが微妙なので一旦おいておきます。
また、来月もPHPで開発だったとしてもパーソナルライセンスで買った（個人で買った）ライセンスを使用する前提でソフトウェア導入許可が下りるかも未確認[^3]なので、そこも踏まえて一旦待ちです。

ただ、今後のPHP開発のツールとしてPhpStormは有りだなとは思っています。


[^3]: 先に確認取っておくだろー普通、な部分ですが、関わる案件毎に異なるなど色々ありまして、先に聞いてないです。



<!--
## 悩んだこと

## 設定したこと

## Version Control周り

## [PhpStorm Keymap](http://qiita.com/nanoco/items/b2c02b166463215f9183) へ追記した項目一覧
-->