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

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

Upload: hisateru-tanaka

Post on 19-May-2015

34.147 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

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

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

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

たなかひさてる@tanakahisateru

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

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

私のPHP IDEの歴史

• Eclipse PDT以前 (紀元前)

• Dreamweaver期

• Eclipse PDT期

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

• Coda / Aptana / NetBeans 混乱期

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

紀元前の話はさておき

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

Dreamweaver期

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

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

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

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

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

Eclipse PDT期

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

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

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

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

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

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

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

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

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

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

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

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

• これは長く続いた

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

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

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

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

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

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

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

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

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

Coda

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

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

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

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

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

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

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

Aptana

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

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

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

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

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

NetBeans

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ライセンスもらった

Licensed to Pinoco

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

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で使いやすく。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CSSの色がわかりやすい

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

クラス名を補完できる

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

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

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

zen-coding

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

[TAB]

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

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

a

[TAB]

<a href=””><a>

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

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

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

php.net

ここでF1キー

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

php.net さらに

ここをクリック

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

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

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

Docコメントの補完

/**[ENTER]

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

Docコメントの警告

PHPDoc comment does not match function or method signature

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

Docコメントの更新

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

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

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

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

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

Gitのステータス

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

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

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

コミットダイアログ

Reformat codeOptimize importsPerform code analysisCheck TODO

Before Commit

After CommitRun toolUpload file to: (test server)

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

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

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

問題レポート

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

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

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

PHPUnitのカバレッジ

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

77%...これを開く

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

プロファイラ

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

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

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

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

クラス図

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

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

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

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

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

ちょっと便利な ⌘+E

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

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

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

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

Doc comment reviewed (@2013-01-30)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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