ノリでブログのタイトル変えてみたよ
どうかな。
「PhpStormで始める快適なWebアプリケーション開発」について話してきた #phpcon2013
先日のPHP Conference 2013でPhpStormの便利な機能とか、フレームワーク開発での小ネタとかについて話してきました。 限られた時間だったので矢継ぎ早になってしまって、こちらで詳細書いてみます。
PhpStorm × Framework
Symfony2
強力なコード補完をサポートしてくれるSymfony2用のプラグインです。 xml/yamlファイル内でのジャンプとかもサポートしてくれます。
こんな感じで、サービスコンテナから取得したクラスに対してもコード補完してくれたりします。
詳しい設定や使い方はこちらが参考になります。
PhpStromのSymfony2 Pluginによる入力補完が便利すぎる
CakePHP
私が個人的に作っているCakePHP用のプラグインです。1.3系、2系共に動きます。
Controller⇔View、View⇔Element、Model/Controller⇔TestCaseなどのファイル間ジャンプや$this->render()しているテンプレートファイルへのジャンプをサポートします。
詳細の使い方はこちらを参照してください。
PhpStormのCakePHPプラグイン、CakeStormを作ってみました
Laravel
一手間掛かりますが、上のHelperを設定しておくと各種クラスでのコード補完をしてくれます。
その他フレームワークなど
専用プラグインがないフレームワークでも、PhpDocをしっかり書けば特殊な呼び出し方をしているクラスからもコード補完してくれます。
例えば、CodeIgniterとかでは
@property Search_model $Search_model
のような形で、@propertyアノテーションを指定しておくと、
このように、$this->Search_modelのような呼び出しの形でもコード補完してくれます。
PhpStormで便利な機能
便利機能はめちゃくちゃ多いんですが、「高機能すぎて把握しきれない・・・」というような方は多いと思います。 そこで、個人的によく使うコマンドや、 マイナーだけど便利だなーって思う機能を幾つか紹介します。
また、機能は全てアクションの正式名称のまま表記しているので、 気になったショートカットなどは[Preferences]-[Keymap]から検索するとすぐ見つかると思います。
機能名の横の()はWindows環境でのデフォルトショートカットを表しています。
Find Action (Ctrl+Shift+A)
PHPエンジニア養成読本でいうところの「最強コマンド」です。 PhpStorm内で実行したいアクションをここで入力すると、それにマッチする or 近しいアクションを一覧で表示してくれます。 なので、各機能ごとのショートカットを覚えきれなくても、このコマンドのショートカットさえ覚えておけば一通りのことが可能になります。
例えば、GitにPUSHしたいときはCtrl+Shift+A → "push"と入力すると
このようになり、置換や一括置換を行いたいときはCtrl+Shift+A → "replace"と入力すると
このような形で、実行可能なアクションを一覧で表示してくれます。
Jump to Class (Ctrl+N) / Jump to File (Ctrl+Shift+N)
それぞれクラス名やファイル名を指定して直にファイルにジャンプ出来る機能です。 1文字入力毎にファイル一覧を高速でサジェストしてくれます。 個人的にはJetBrains系IDEの醍醐味と言っても過言ではないくらいの超有用機能だと思います。 ちなみにPhpStorm7からファイルのサジェストが超高速になってます。
それぞれ"Account"という単語を、上がJump to Class、下がJump to Fileで絞り込んだ状態です。 機能の名前の通り、Jump to Classはクラス名にAccountが含まれるファイル、 Jump to Fileはファイル名にAccountが含まれるファイルを一覧で表示してくれます。
Go to Decralation (Ctrl+B)
変数やクラス、メソッドの定義元にジャンプする機能です。Vim界でいうところの"gf"コマンドに相当します。
例えば、CakeEventクラス上のCtrl+Bを押すことにより、CakeEventクラスの定義箇所までジャンプすることが出来ます。 同様にメソッドや変数も、参照可能な範囲であればジャンプ出来ます。
Recent Files (Ctrl+E)
PhpStorm上で直近に開いたファイル履歴を表示してくれます。 普段開発をしていると同じようなファイルを何回も行き来することは多いので、使用頻度はかなり高めです。
類似コマンドでRecent Changed Filesというものもあり、こちらは「直近に編集したファイル」履歴を表示してくれるので、用途を分けて使い分けるといいです。
自動アップロード
私は「ローカルのMac上でPhpStormを立ちあげて開発」、「開発用のサーバにコードを置いて実行」のようなスタイルで開発していますが、 ファイルを編集する度に手動でアップロードしなければならないのは死ぬほど苦痛です。
PhpStorm上では、"ファイルに差分が発生したら自動的にアップロード"してくれる機能があるので、そちらを設定しておくと便利です。
上記なように、サーバに合わせた形でDeployment Serverを設定しておき、 [Tools]-[Deployment]-[Automatic Upload(always)]にチェックを入れておけばokです。
また、Git上でブランチを移動した際に、ブランチの差分ファイルのみを自動アップロードしてくれる機能もあります。 その際は、以下のように[Tools]-[Deployment]-[Options]から[Upload external changes]にチェックを入れておけば有効になります。
Local History
PhpStorm上で編集したファイルを、ファイル毎に時系列で編集履歴を閲覧することが出来ます。 「Gitにコミットしてなかったけど、今朝の時点に戻したい・・・」みたいなときにも便利です。 また、こういう機能があることを知っておくだけでもいざというときの保険になりますので是非押さえておきましょう。
リモートデバッグ
EclipseやNetbeansなどのIDEと同様、PhpStormでもリモートデバッグが可能です。 面倒な設定がほぼ不要なのと、コードの動的実行が可能な点が他より優れています。
リモートデバッグの設定についてはこちらが参考になります。
Zero-configuration Web Application Debugging with Xdebug and PhpStorm
コードの動的実行は、「ブレイクポイントで停止した箇所で任意のPHPコードを実行出来る」機能です。 どんな形式で返ってくるのか試したい関数や、複雑なコードでどういう途中結果が帰ってきてるのか知りたいような場合に便利です。 もちろん、停止箇所で保持している変数を参照して実行することも可能です。
例えば、CakePHPではfind()メソッドでDatabaseから任意のデータを取得出来ますが、「取得条件を変えた時にどんな値が返ってくるのか試したい」みたいなことは多々あります。 そのようなときは、任意の箇所をブレークポイントを貼って止めておき、実行中のプラグラムで
$this->Search->find('all', array( 'contain' => false, 'conditions' => array( 'Search.created <' => $today ) ));
のような箇所を選択し、[Evaluate Expression]のコマンドを実行すると
このような形で実行結果が見れます。
CakeStormのSmartJumpに「水平/垂直タブで開く」機能を追加しました
こんばんは。 早いもので、もう7月も終わりそうです。
最近自転車で500km/月を目標に走りこんでるんですが、5月、6月共に450km弱で未達。 7月から急激に暑くなったので距離もだいぶ落ちるなーとおもいきや、今日時点で既に490kmちょい走ってるのでめでたく達成出来そうです。
暑いの苦手だと思ってたけど、その分の爽快感があるからいいのかも、ってちょっと思ったりしてます。
さて、最近自分でも意外なくらいマメに更新しているCakeStormですが、 自分は割とエディタを分割して使うことが多いので、ファイルを開いていちいち分割したファイルに移動しなきゃいけなかったりがめんどくさかったので、 SmartJumpに「水平/垂直タブで開く」機能をつけてみました。
http://plugins.jetbrains.com/plugin/7277
CakeStormってなに?って方はこちらを。
PhpStormのCakePHPプラグイン、CakeStormを作ってみました http://nanapi.co.jp/blog/2013/07/02/phpstorm-cakestorm/
ファイルを開くときに、それぞれ「水平で開く」「垂直で開く」用のSmartJumpから開くことで、エディタを分割して新しいタブでファイルを開いてくれます。
キーマップはそれぞれ
- SmartJump→Ctrl+; S (既存のまま)
- 水平で開くSmartJump→Ctrl+; H
- 垂直で開くSmartJump→Ctrl+; V
VはVertical、HはHorizontalの略で覚えると良いです。 頻繁にエディタ分割をする人には結構役に立つと思います。
CakeStormに参照ジャンプ機能を追加しました
こんばんは。7月の頭くらいから急激に暑くなりましたね。 ボク元々インドアなので、例年夏でも日に焼けず真っ白なんですが、 今年は自転車にやたら乗っているので結構黒かったりします。
そんな暑い夏を吹っ飛ばすために、CakeStormに"参照ジャンプ"の機能を追加しました。
http://plugins.jetbrains.com/plugin/7277
いつもどおり、インストールするだけで他に設定は必要ないです。
参照ジャンプとはなにかというと、配列とか文字列を既存の解析して、ディレクトリ内の他のModelやView、Elementファイルに紐付けるような仕組みです。
それにより、各文字列の上でCtrl+B(Go to Decralation)でジャンプが出来るようになってます。
今まで以上にビュンビュン飛び回ってください。良いCakePHPライフを!
PhpStormのCakePHPプラグイン、CakeStormのver0.2にアップデートしました
PhpStormのCakePHPプラグイン、CakeStormを作ってみました http://nanapi.co.jp/blog/2013/07/02/phpstorm-cakestorm/
こちらの続きです。 CakePHPのコントリビューターの方からPull Requestを頂いたり、Facebookコミュニティでも好評だったりと中々良い評判を頂いており嬉しい限りです。
そんなわけで、CakeStorm 0.2を公開しました。
http://plugins.jetbrains.com/plugin/7277
変更点は以下のとおりです。
- SmartJumpをCakePHP SmartJumpに名称変更。これに伴い[Find Action]にて「Cake」と入力すればSmart Jumpがサジェストされます。
- View→Elementへのジャンプを追加(Smart Jumpにて実行可能)。
- SmartJumpを共通にし、どのファイルからでもポップアップが表示されるように変更。
- Jump to Viewを実行した際、自身のいるアクションをリストの最上部に表示されるように変更。
- SmartJumpにFixture⇔Model⇔ModelTestCaseへ相互にジャンプ機能を追加。
- renderに第二引数が含まれている場合に正しくジャンプ出来ない箇所を修正。
次のアップデートではオートコンプリートを追加出来るようにがんばります。
PhpStormの「Open in GitHub」っていうプラグインを作ってみた
エディタ上で表示しているソースコードをGitHub上で開けるようなプラグインを作ってみました。
http://plugins.jetbrains.com/plugin?pr=&pluginId=7190
IntelliJ IdeaとPhpStormで動作確認済。たぶんAppCodeとかPyCharmとかRubymineでも動くはず。
つかいかたはかんたん。上のプラグインをインストールするだけ。 あとは[Find Action]-[Open in GitHub]で実行すれば、デフォルトブラウザでGitHubが開く。
※Open in GitHubのデフォルトキーマップは[Ctrl+Shift+g]に設定してます。
複数行を選択した状態でOpen in GitHubを実行すると行が選択された状態で開きます。
ちなみにGitHub Enterpriseは未対応。要望があれば対応するかも。
そういえば、公式で公開されてる「GitHub」っていうプラグインにも[Open in browser]っていうコマンドがあるけど、こっちは自身のリポジトリ上のファイルしか開けないらしい。