PhpStormを使おう --高槻からは快速急行が早くなります #jbugj

Preview:

DESCRIPTION

JetBrainsユーザーグループ in 大阪 の PHP セッション

Citation preview

PhpStormを使おう高槻からは快速急行が早くなります

たなかひさてる@tanakahisateru

Pinoco developerjs-markdown-extra maintainerPHPTAL contributorFirebug translation contributorYii framework user

私のPHP IDEの歴史

• Eclipse PDT以前 (紀元前)

• Dreamweaver期

• Eclipse PDT期

• テキストエディタでいいや期

• Coda / Aptana / NetBeans 混乱期

紀元前の話はさておき

Dreamweaver期

• テキストエディタのレスポンスが悪すぎ

• ビューを書ぐらいしか使う気が起きない

• 標準関数しか補完辞書にない

• これはエンジニアの使うツールじゃない

Eclipse PDT期

• ステップ実行できるデバッガが動いた

• 自分で書いたコードからでもそこそこ補完できた

• HTMLのバリデータに本当に必要なエラーが埋もれてわからない

• フロントエンド技術のサポートが古すぎるせいだ

• プラグインを増やさないと機能不足なのに、増やすと設定がカオス化

• プロジェクトの定義が難しすぎた

• 早すぎた Sublime Text = jEdit (ローカライズしました)

• わけわかんないぐらいなら単語レベルの補完で十分

• HTML/CSSなどのサポート機能が必要十分

• エディタのレスポンスもいいしカスタマイズもすごく効く

• プラグインでプロジェクト定義もできる

• これは長く続いた

テキストエディタでいいや期

蔓延する空気「...でいいや」

そして「...でいいや」からの脱出

「PHPはJavaの次に静的解析しやすい言語。これはRubyが気付いていないPHPの長所」

―PHPメンターズと朝まで過ごしたときの言葉

Coda

• フロントエンド技術はEclipseより少しはマシ

• コード解析がまるでない

• 所詮はテキストエディタ

• spl って打ったら split しか出ないとか、SPLなしっていつのPHPですかと

• それなのにエディタのカスタマイズがほとんどできないのはひどい

• これで有料なのを考えたらjEditのほうがずいぶんマシ

Aptana

• フロントエンド技術はPDTよりはるかに良かった

• Rubyのサポートの良さに比べてPHPがひどかった

• なぜPDTベースでないのかと小一時間

• ターミナルペインを開いてVimを立ち上げて作業するなど

NetBeans

• 最低必要なものが最初から揃っている

• 設定が簡単で操作系もシンプル

• フロントエンド技術はそこそこ

• プロジェクト外のテキストを開くとShift_JISで解釈されるで、どうやってファイル別にエンコーディグ変えるの??

• かゆいところに手が届かないあの感じ

で、次はPhpStormか... 有料だな...体験期間内に機能把握できそうにないぞ

おや? このFREEってなんだ?

「あのー、すみません、PinocoというプロジェクトがGitHubにあるんですが」

JetBRAINS「そなたにライセンスをさずけよう」

ライセンスもらった

Licensed to Pinoco

PhpStorm

• フロントエンド技術のサポートが最高

• HTML, JS, CSS + CoffeeScript, LESS, Sass, Haml, Twig, Smarty

• フレームワークサポート jQuery, Symfony2, Yii

• コード解析と補完が他のどれよりも現実的

• PHP事情の追従が速い (PHP5.4, PSR-1/2)バージョン6からは Composer, PHPMess, Yeoman

• NetBeansのように機能を減らさない。UIで使いやすく。

NetBeansに対するPhpStormのわかってらっしゃる感

PHPの変数モデルでは、出力引数の宣言とメモリ確保が不要

「Javaとは違うのだよ! Javaとは」

PhpStormを使って実際に良かったこと

• CSSの色がわかりやすいリンクしたクラス名を補完できるリンクリソースへのパスが補完できるzen-coding

• F1キーでphp.netのドキュメントが出てくる

• Docコメントのサポートが強い

• Gitのステータスがその場に見えてるコミット前後にいろいろやってくれる

• 問題レポートが分類されている

• PHPUnitのカバレッジレポートがエディタと連携

• プロファイラのデータを見るビューがエディタと連携

• クラス図も作れるけどER図がなにげに便利

CSSの色がわかりやすい

クラス名を補完できる

リンクリソースへのパスが補完できる

zen-coding

ul#nav.clearfix>li.item*3>a.big.red

[TAB]

これだけでも十分使える zen-coding

a

[TAB]

<a href=””><a>

PHPはWebのフロント用の言語だからブラウザ側の技術をおろそかにできない

php.net

ここでF1キー

php.net さらに

ここをクリック

php.net は生きているドキュメント更新/コメントされ続けてるからPHPerには必須

Docコメントの補完

/**[ENTER]

Docコメントの警告

PHPDoc comment does not match function or method signature

Docコメントの更新

PHPDocは非常に重要=事実上の型宣言。Javaのように静的解析するにはPHPは柔軟すぎ。

「Javaとは違うのだよ! Javaとは」

Gitのステータス

Gitのステータスからの⌘+D

コミットダイアログ

Reformat codeOptimize importsPerform code analysisCheck TODO

Before Commit

After CommitRun toolUpload file to: (test server)

変更したファイルのFTP/SFTPで済むのはある意味PHPのメリットとも言える。活かそう。

問題レポート

問題レポート(さらに分類)

PHPUnitのカバレッジ

通ったか通ってないかで色分け

77%...これを開く

プロファイラ

デバッガ/プロファイラのブックマークレット

http://www.jetbrains.com/phpstorm/marklets/

クラス図

ER図 (厳密にはERじゃないけど)

たまにDBの外部キー制約しかあてにならない長大SQL文字列結合コードが発掘される。

ちょっと便利な ⌘+E

最近アクセスしたファイルとパネル

Pinocoでは実際にPhpStormをコードレビューに使っています

Doc comment reviewed (@2013-01-30)

...でもせっかく (Eclipse|Vim|Emacs) を覚えたのに

「プラグインを作ればできるよ」「Jenkinsのタスクを作ればできるよ」

「だから慣れてるし、これでいいや」

もうやめにしようじゃないか

「...でいいや」と言うために、あなたは時間をどれだけ(Eclipse|Vim|Emacs)に費やしましたか

「...でいいや」と言い続けるために、あなたは今後どれほど(Eclipse|Vim|Emacs)に費やしますか

面倒が多い方を選んでおいて「で、いいや」とはどういうことだろう?

アンチパターン:「で、いいや」逆転の法則

時給換算でどっちが安い?

スキルがもったいないというのは幻想。僕も最初に早くコードを書くのは jEdit を使い、設定ファイルの編集には Vim を使います。

自分に合うIDEを探すことそのものが、自分の技術分野のニーズを知ることでもある。

乗り換えを駆使しよう「高槻からは快速急行が早くなります」

Recommended