PhpStormの使えると便利な機能
ここ数年間は、PHPで開発する時はJetBrains社が提供する『PhpStorm』を使っています。以前からあちこちで使いやすいという話は聞いていたのですが、有料でそこそこお値段もするため使うのをためらっていました。
IDE(統合開発環境)は動作が遅かったり、プラグインをアレコレ入れないと使いものにならなかったり、そのプラグインもバージョンアップとともにサポートされなくなって代わりのプラグインを探したり、ワークフローを変えなきゃいけなくなったりと、結局何をしているのかわからなくなってしまうことがあって、あまり良いイメージがないというのもあります。
ところが、ある時ふと思い立って体験版をダウンロードして試してみると、これが控えめに言って「スゴクイイ」。
まずは個人で購入して半年ほどアレコレ使った後に、会社でも導入を勧めました。現在、当社の開発部署は希望すれば『PhpStorm』を使えることになっています。
今日はその『PhpStorm』の便利な機能をいくつか紹介します。
便利な機能
1 検索
『PhpStorm』は、ファイルを横断した全文検索が可能です。
可能なだけじゃなくて、”爆速”です。

プロジェクト内のターゲットを検索する
https://pleiades.io/help/phpstorm/finding-and-replacing-text-in-project.html#find_in_project
内部にインデックスを持っているようで、既存の大量のコードからプロジェクトを作成したり、大きなブランチを切り替えたりすると、インデックス作成までに少し時間がかかりますが、一度作成するとノンストレスで結果が出ます。
その他、クラス名・メソッド名・プロパティ名に特化して検索もできるので、状況に応じて使い分けると、結果がたくさん出過ぎて時間がかかる、といった事がかなり減ります。
2 ファイルを開く
『PhpStorm』を使っていて、とても楽になった事の一つにファイルを開く事があります。
例えば、以下のようなパスのファイルを開きたい場合、
controller/setup/store/edit.php
ファイル検索で
cont set edit.php
のように、ディレクトリ名を途中で切って指定しても検索結果候補に挙げてきてくれます。
コードが大きく、階層が深くて、パスを実行のルーティングに使うフレームワークだと、似たようなディレクトリ名やファイル名が多く迷いがちになりますが、これのおかげでかなり早く目的のファイルにたどり着けるようになりました。
3 search everywhere
上記のテキスト検索やファイルを開くアクションは、ショートカットで開く一つのダイアログで実行できます。
どこでも検索
https://pleiades.io/help/phpstorm/searching-everywhere.html
4 補完、ジャンプ、リファクタリング
『PhpStorm』の静的コード解析エンジンはかなり優秀で、コード補完、リファクタリング機能、(宣言や定義、実装への)ジャンプなんかがキビキビ動いて、コーディングが捗ります。
ソースコードが大きいプロジェクトでは、クラスやメソッドが多くなり、どうしても補完の候補が出てくるまで時間がかかるようになって「自分で打った方が速いじゃん!」になりがちでした。
よく使うメソッドが上位に来なくて、カーソルで選択しなくちゃならなくなると、どっちがタイプの数が少ないんだろう…って残念な気持ちになります。
『PhpStorm』は、補完候補を出すのも速いし、割と早い段階でよく使うものが上位に来るので、サクサク書けます。
またコードを書いていると、メソッドのコードを見てみたくなったりすることがありますが、これもかなり速く探し出してジャンプでき、他で使われているところへのジャンプもとても速いので、元のコードと自分の実装をスムーズに行き来して書くことができるようになります。
コード補完
https://pleiades.io/help/phpstorm/auto-completing-code.html


コードリファクタリング
https://pleiades.io/help/phpstorm/refactoring-source-code.html
宣言とその型に移動する
https://pleiades.io/help/phpstorm/navigating-through-the-source-code.html#go_to_declaration
実装に移動
https://pleiades.io/help/phpstorm/navigating-through-the-source-code.html#go_to_implementation
ライブテンプレート
https://pleiades.io/help/phpstorm/using-live-templates.html?keymap=primary_windows
補完的な機能として、 「Live Template」というものがあります。設定は、
設定 / 環境設定 > エディター > ライブテンプレート
から行います。
例えばリンク先の例にもありますが「pubsf」とタイプしてtabキーを押せば、
public static function ()
{
}
が挿入されます。
これを自分で任意のコードを任意のキーで登録できます。
例えばデバッグ時とかによく使う定形文を「logd」とかに設定しておくと、素早くデバッグ用のコードを埋め込みできたりします。
5 git関連
gitはとても便利な反面、コマンドやオプションが直感的でなく、オプションの指定が正しいかとか引数の順番とか確認しちゃいますよね。
私は、rebase時やcherry-pick、conflictが起こった時に『PhpStorm』使います。
5.1 conflict
複数人で開発していると、当然conflictは起こります。
数カ所程度なら問題ないですが、数百行を超えるコードでconflict箇所が多かったりトラブルシューティングする時などは、「お、おぅ」ってなります。
その点『PhpStorm』では、コンフリクトの箇所をマージ先、マージ元、解決結果の3者を見比べながらできます。

この競合解決Windowを出すには、merge等でconflictが発生したら、メニューバーから
VCS > Git > Resolve Conflict...

を選びます。
conflictしているファイルが一覧できるダイアログが出るので、解決したいファイルを選んで「Merge…」をクリックします。

そうすると先程の3ペインの画面が表示されます。
左ペインが現在のブランチのコード、右ペインがこれからマージしようとしているコード、真ん中が解決結果のコードです。つまり真ん中のペインが望むコードになるように適応させていきます。
「Accept Left」「Accept Right」ボタンで左右どちらかのコードを一括で適用できます。
また細かく適用していきたい時も「<<」や「>>」をクリックするだけで、コードの塊単位で適応できるのでとても楽です。
上の例だとあまり恩恵を感じられませんが、下記リンク先にある3ペインの画像を見ると、色分けされて解決がしやすいです。
Git の競合を解決する
https://pleiades.io/help/idea/resolve-conflicts.html
マージが終わったら「Apply」ボタンを押すと、以下のようなダイアログが出るので、他のconflictを解消するなら「Continue Merge」を選び、終わりなら変更を適用します。

あとは、普通にcommitすれば、マージコミットができます。
5.2 cherry-pick
調子良くサクサク開発ができて、コミットもガツガツやって、さあpushするかーと思って見返してみると、masterに直接コミットしてたってことないですか?
私は、わりとあります。
そういう時本来のブランチにcherry-pickしたりします。
コマンドラインでも複数個のcherry-pickを一気にできますが、一つ一つ適用していきたい時ってあるじゃないですか。
そうするとコマンドラインでは、ハッシュのコピペが面倒になります。
まずコミットしたかったブランチをcheck outして、『PhpStorm』ではメニューバーから
View > Tool Windows > Version Controle

を選ぶと、Version Control Windowが表示されます。

赤い四角のところをcherry-pickしたい、コミットがあるブランチ(今回はmaster)を選ぶと、その下にブランチのlogが表示されます。
cherry-pickしたいコミットを選ぶと黄色い四角のチェリーのアイコンがアクティブになるので、これをクリックするとcherry-pickできます。
まとめ
まだまだ紹介したい機能はたくさんあるのですが、書ききれないのでこれくらいにしておきます。
コードを書くソフトとしては、無料のVisual Studio Codeやサクラエディタ、Emacs、Vim等々それぞれ好みがあると思いますが、個人的にはそれぞれの使いどころがあると思っています。
私自身、複数のIDEやエディタをそれぞれ使いやすい場面で使い分けています。
『PhpStorm』は有料なのでなかなか手が出にくいと思いますが、それだからこそ紹介の記事を書いてみました。
色々なIDEやエディタを使ってみて、自分の手に馴染むものを見つけられれば良いかなと思います。
Happyなコードライフを!
ファブリカコミュニケーションズで働いてみませんか?
あったらいいな、をカタチに。人々を幸せにする革新的なサービスを、私たちと一緒に創っていくメンバーを募集しています。
ファブリカコミュニケーションズの社員は「全員がクリエイター」。アイデアの発信に社歴や部署の垣根はありません。
“自分から発信できる人に、どんどんチャンスが与えられる“そんな環境で活躍してみませんか?ご興味のある方は、以下の採用ページをご覧ください。