イケてる SaaS を作りたい (koni blog)

SNS管理ツール「SocialDog」を運営する株式会社AutoScale代表 小西将史のブログです。イケてるSaaSを目指して日々奮闘しています。

PHP書いている人は、絶対にPhpStormを使うべき

こんにちは、小西です。

ここ5年ほど仕事でずっとPHPを書いてきたのですが、開発環境はPhpStormに落ち着きました。個人的にPhpStormが最強すぎて、「なんでみんなPhpStorm使わないんだろう」という感じですw

そこで今日はPhpStormの乗り換えるべき理由をお伝えします。

PhpStormとは?

Jetbrains社が出しているPHP用の統合開発環境(IDE)です。IntelliJとかWebStormとかAppCodeを出している会社です。

PhpStorm: The Lightning-Smart IDE for PHP Programming by JetBrains

PhpStormはエディタというよりは、IDEです。PHPでプログラミングする人が最高のパフォーマンスを出せるように作られてソフトって感じです。

主な機能としては、以下になります。

  • エディタ
    • 普通のエディタにある機能全部入り(正規表現つき検索・置換・矩形選択...)
    • ソースコードの静的解析による、強力な補完、エラー表示、ジャンプ
  • バージョン管理システムとの連携(gitやsubversion、mercurialクライアント)
  • デバッガ(xdebugと連携)
  • リモートのサーバーへのアップロード(SFTPクライアント的)
  • Databaseのクライアント

PHPで使えるIDEとして、他にはNetBeansやAptanaなんかがありますね。 SublimeTextとかCotEditorとかCodaなんかはIDEというよりエディタって感じですね。

PHP書くなら最強の環境、それがPhpStorm

PhpStormは、PHPでプログラムを書く人にとって、最強のIDEだと思います。賢い静的解析エンジンが積まれていて、それを活かして細かいところまで気を配って作られたエディタです。とにかくエンジニアの手間を減らそうという細かい機能の数々が素晴らしいです。

これを使わない理由が逆にわからないというくらいですw

そんなこと言うと、vimの方からは、「いや、vimでできないこと無いし!vimのプラグイン使ったことないっしょ!」と言われそうですが、もともと必要なものは大体入っていて、設定もGUIで自由にできる、ということで、大多数の人にとって、生産性が上がるのはPhpStorm >>>>> vim な気がします。

まあ確かにvimと違って、vimでツイッター見れたりメール見れたりはしませんが・・・w*1

もちろんPhpStormでも必要な機能はプラグインで追加できます。プラグインもGUIで追加できるので非常に簡単です。

乗り換えるべき理由① とても賢くて、コード書くのを強力にアシストしてくれる

PhpStorm、めちゃくちゃ賢い子です。 使っていると、「お、そこまでやってくれるの?ありがとー」ってなります。エンジニアをアシストしようとしてくれるのを強く感じます。いつもありがとうw

このあたりはEcripseでJava書いてた、とかXCodeでiOSアプリ書いてた人には当たり前だと思いますが、PHPは動的型付けの言語なので、そのあたりはやはり遅れている感があります。ソフトも、人も。

コードの静的解析がかなり強力です。クラスの継承関係、どの変数にどの型のデータが入るかの把握などかなり精度高いです。abstractとかtraitとかにも対応してます。

  • 基本的全部クリックできる。メソッドもクラスも変数もHTMLのidやclassすら、表示されているシンボルは基本全部クリックできます。本当に賢いです。 f:id:konisimple:20160108112037p:plain こういうのも全部押せちゃいます。フレームワークの内部のコード追うのって面倒ですよねw
  • シンタックスエラーがあったら!マークが表示される
  • タイプミスっぽいものも教えてくれる(波線がつきます)
  • 定義箇所でクリックするとその関数を呼んでいる先一覧が見られる(grepなんてしなくていいんですよ!w) f:id:konisimple:20160108110323p:plain
  • 定義してない変数呼ぶと教えてくれる f:id:konisimple:20160108110812p:plain
  • $this->とかselfまで打ったら継承元も含めて呼べる関数がすべてサジェストされる f:id:konisimple:20160108111819p:plain
  • $this->HogeClass->まで打ったら呼べる関数がすべてサジェストされる f:id:konisimple:20160108110257p:plain

あとは、細かいですけど、以下も大変よいですねー。

  • 関数を呼ぶ際に引数が足りてないと教えてくれる
  • function (array $hoge)で定義されている関数にarray以外入れると怒られる
  • exitすると、その先のコードは実行されないので色が変わる
  • abstractなclassで書くべきメソッドがないとき教えてくれる

そして、PHPから少し離れますが、

  • 画像, cssなどを移動したときの自動パス書き換え
  • HTML書くときのzen-coding対応
  • HTML書くときのimgタグのwidth, heightが自動で入る

あたりもweb開発をしているとありがたいですねー。

乗り換えるべき理由② 全部GUIなので使いはじめるのが楽

全部GUIなので、「設定ファイルのtypoで動かない」とか、「まずはドキュメント読まないといけない」とかないです! 適当に設定画面いじっていれば大体のことはできちゃいます!

設定画面もめちゃくちゃわかりやすいです。

ショートカットキーのカスタマイズ

メニューにある項目については、自由にカスタマイズできます。またいくつかプリセットがあり、windows風、Mac風、NetBeans風、Ecripse風などからカスタマイズしていくこともできます。

コーディングルール(コード規約)のカスタマイズ

以下のような感じでコードの書き方をものすごく細かくカスタマイズできます。右にライブプレビューなサンプル画面があるのでとても設定しやすいです。プロジェクトごとのコーディングルールがあると思いますが、すべて細かく調整できます。スペースの有無、{}の位置は改行するかどうか、メソッドのあと1行あけるか、連想配列のvalueを揃えるか、PHPDocの型と説明を整形するか、など。

f:id:konisimple:20160108113225p:plain

これの何がいいかというと、一度設定したら、あとはコードのスタイルをPhpStormが整形できるようになることです。

Command+option+p*2で、都度設計してもよし、全コード書き換えてもよし、コミットするときにReformat Codeにチェックを入れて、コミット前に自動整形する設定にしてもよし。

さらに、設定はプロジェクト内に.ideaというディレクトリが作られてそこに保存されるので、これをバージョン管理の対象に入れ、チームメンバーにもPhpStormを使ってもらえれば、プロジェクト内で共有できます。

乗り換えるべき理由③ まだgitで消耗してるの?

PhpStormにはgitのクライアントが組み込まれていて、コミットやファイルごとのhistory, blameを見る, ブランチを切り替える、git reset などが、すべて直感的な操作で行えます。

全部簡単に直感的に動くので、コマンド覚えなくてもいいし、見やすいので、ターミナルでgit操作してる人を見ると、「え、この人あんでわざわざコマンド叩いてるの・・・?」と思ってしまいます。

git操作については、SourceTree使っている人もいると思いますが、エディタからいちいち離れるのは気持ち悪いし、行ごとの履歴とか、1ファイルだけgit resetするとか、エディタと統合されているからこそ、圧倒的に使いやすいと思います。

ちなみにsubversion, CVS, mercurialにも対応していますが、使ったことはありません。

コミット(git add, git commit, git push)

例えばコミットするときは、CUIを使っているとわざわざエディタを離れてターミナルかなにかでgit addして、git commitして、と結構面倒ですよね。それがエディタとgitがGUIで組み込まれているPhpStormでは、Command+K*3押して、addするファイルをチェックボックスで選んでコミットメッセージ書いて、Commit+Pushボタン押すと、git add, git commit, git push まで自動でやってくれます。もうこの機能だけでも生産性の違いは明らかだと思います。

f:id:konisimple:20160108104005p:plain

ブランチの切り替え

右下のブランチ名が表示されているところを押すと簡単にブランチ作成・削除・切り替え・mergeができます。 f:id:konisimple:20160108122717p:plain

ファイルごとの変更履歴(history)

またファイルごとの履歴もGUIで見て、気になる履歴があればダブルクリックすれば差分をすぐに見られます。githubなどでも同じことができますが、いちいちブラウザ開くの面倒ですよね。f:id:konisimple:20160108104326p:plain

ファイルの行ごとの履歴(blame)

行ごとの履歴も、エディタで右クリックしてgit > annotateを押すだけでエディタの左端にコミットした日時と名前が見られます。ダブルクリックするとそのときのコミットしたファイル一覧が表示されて、さらにそこからも差分が見られます。とても直感的です。もちろんショートカットキーあてたり、ツールバーにアイコンも追加できます。

ファイルごとの履歴と行ごとの履歴が大変見やすいので、これだけで犯人探しが簡単になりますね!w

f:id:konisimple:20160108104556p:plain

乗り換えるべき理由④ まだprint debug で消耗してるの?

PHPの実行環境にxdebugが入っている場合は、デバッガが使えます。

↓こんな感じで、ステップイン・ステップオーバー・ステップアウトができて、変数も非常に見やすいです。 ブレークポイントもエディタの行番号のところをクリックするだけで設定できます。 コードや変数も実行中に変更できます。

f:id:konisimple:20160108115235p:plain

若干設定が面倒ですが、がっつり入るプロジェクトなら、絶対入れるべきですね。

PhpStorm+Xdebugでローカル環境のPHPをデバッグする方法 – karakaram-blog

乗り換えるべき理由⑤ かゆいところに手がとどく、細かい便利機能がたくさん

本当に細かいところが良く出来てますね。気に入っているものなどを少し紹介します。他にもいっぱいありますが。。

File Name launcher

f:id:konisimple:20160108121517p:plain

ファイル名から開くやつですね。こいつのおかげでマウス使わなくて済みます。機能名わからなかったので、勝手に命名しましたw ちなみにこれはファイル名からですが、クラス名から、シンボルから、全部から、などもあります。「全部から」は、Search Everywhere という機能なのですが、文字通りあらゆる箇所のテキストから探します。 これは全文検索ではなく、シンボルのみなので動作はさくさくです。全文検索ももちろんあります。

カーソルバック機能

1つ前にカーソルがあった場所に戻れます。ツールバーに「戻る」「進む」ボタンがあります。わかりやすすぎる。

Recent Files

最近編集したファイルの一覧が出ます。一度に触るファイルなんて、多くても10か20なので、ファイル名タイプする必要もないです。 f:id:konisimple:20160108122233p:plain

Local History

なんと、PhpStormでの編集ログが勝手に取られてます。間違ってファイル消しちゃった時、git操作を誤ってgitからも消えちゃったときなどでも、簡単に復旧できます。

たまにしか使わないですが。

SCSS/LESS対応

プラグイン入れておくと、.scssファイルを保存したときに勝手に.cssファイルが作られるように設定できます。リモートで開発している場合は、Automatic Uploadでファイルの転送までやってくれます。

DataBaseクライアント

DBのクライアントもついてます。MySQL, Oracle, PostgreSQL, sqliteのほか、SQL Server、DB2まで対応してますね*4

ついてますが、個人的にはSequel Proの方が100倍使いやすいので、使っていませんw

残念な点

  • 日本語対応がない!
  • 日本語の処理にバグがある・・。PHPDoc書いているときの日本語の処理でバグが微妙にある。。
  • フレームワークがくっつけるクラスなどはPHPDocちゃんと書かないと認識されない。* @property User_model User_modelみたいなのをちゃんと書けば認識します。

開発環境がローカルでなくリモートなのですが?

ありますよね。ローカルに立てるの面倒ですよねw

そんなときはコードを書くのとgit操作はローカルで行い、リモートにファイルを転送するだけにするスタイルが楽でおすすめです。 Automatic Uploadという機能を使えば、Command+Sを押した(保存した)瞬間にサーバーにファイルが転送されます。

上記のxdebugについても、リモートで、かつ複数人でやる方法があります。設定は面倒ですが・・

まずは30日無料トライアルから

30日間無料で試せるので、まずはためしてみることをおすすめします。最初、とっつきづらく感じるかもしれませんが、絶対に生産性が向上します。特にIDEではなくvimとかエディタを使ってた人は感動すると思いますw

個人ライセンスは年間89米ドルです。毎年10月頃にメジャーバージョンアップがあるのですが、このときはアップデート価格ということで53米ドルで買えます。

www.jetbrains.com

あとがき

全体的に煽りすぎてしまっている感がありますが、煽ったほうがしっかり読んでもらえる気がしたのでつい・・w

「◯◯で消耗してるの?」と言ってみたかったんですw

PhpStormの表記について(追記2016/1/18)

正式には、PHPStormではなく、PhpStormなんですね。 たぶん他の製品の命名ルールのためこうなってしまったんだと思いますが、PHP使っている身としては気持ち悪いですね。iPhoneじゃなくてIphoneって書かれていたら嫌ですよね、そういうことです。

まあJetBrainsさんも、命名規則を守るためやむを得なかったのでしょう。エンジニアとして名前は大事ですからねw

id:nekonekopanicさんからの以下のブコメで気付きました。ありがとうございます。

PHP書いている人は、絶対にPHPStorm使うべき - koni blog

PhpStorm好きなんだけど、表記が「Php」なところだけは少し気持ち悪いですw

2016/01/12 11:26
b.hatena.ne.jp

追記 (2017.11.30)

先日、最新版であるPhpStorm 2017.3 がリリースされました!! エディタベースのREST クライアントを搭載しています。 エディタベース、というのは結構新しいですが、意外と便利です。

ちなみにPhpStorm のバージョニングは、2017.3のような形式になっています。 2個目の数値は月ではなく、何個目のリリースか、という数字です。 なので、2番目の数値が1違うと、結構機能も増えたりします。 ここ最近は、3月, 7月, 11月の4ヶ月おきで年3回のリリースとなっています。

*1:それってエディタの仕事じゃないですよねw

*2:Code > Reformat Code

*3:これは人によりますね

*4:ODBCのおかげ?