TwigとBladeテンプレートのデバッグ
ひどいバグを修正する場合や、アプリケーションの動作を掘り下げて調べたいとき、デバッグ機能は大変有効です。しかし複雑なテンプレートから機械的に生成されたコードをデバッグするのは悪夢です。PhpStormとXdebugを使えばポピュラーなテンプレートエンジンの.twig や .blade.php をコンパイル前のオリジナルのファイルにブレークポイントを配置してコンテクストの確認、ローカル/グローバル変数の確認、ウォッチ、ステップ実行といった一連のデバッグ機能を活用できます。
使われていないコードの検出
レガシーコードをクリーンアップする際、デッドコードを削除するところから始めるのがベストプラクティスです。PhpStormは不要なコードを検出し、使われていないであろうクラス、クラスメンバー、関数をハイライトしいます。Unused declaration インスペクションはマジックメソッドなど動的に使用されるコードも識別します。Code -> Inspect Code…プロジェクト全体のコード利用状況を確認できます。
リファクタリング、インテンションとクイックフィックス
文字列操作のサジェスチョン
文字列操作関連のインテンションを追加しました。文字列の連結を文字列補完(interpolation)にコンバートしたり、連結、または補完をsprintf呼び出しにコンバートしたり、連結した文字列をクリップボードにコピーしたりといった便利な操作を行えます。文字列でAlt+Enter を押すとどのような操作が可能なのか確認出来ます。
![String Concat To Strintf](https://www.jetbrains.com/phpstorm/whatsnew/img/2019.1/string-juggling.png)
使われていない変数の削除
PhpStorm 2019.1では代入やクロージャーで使われていない変数を削除するクイックフィックスを用意しました。代入による副作用があるケースも考慮します。
Move To Classリファクタリング
新しいMove to Classリファクタリングではファンクションや定数を論理的に所属するクラスへ移動し、利用している箇所も同時に修正します。Structureツールウィンドウでまとめて複数のファンクションを選択して移動することも可能です。
![Move To Class Refactoring](https://www.jetbrains.com/phpstorm/whatsnew/img/2019.1/move-refactoring.png)
static化できる可能性を提示
メソッドがインスタンスフィールドを参照していない場合、Alt + Enterのメニューからメソッドをスタティックにするクイックフックスをサジェストします。
Docker
コンテナの再利用
Docker Composeベースのインタプリタで、コンテナ実行する際にdocker-compose runかdocker-compose execどちらを使うか選べるようになりました。テスト毎に再実行するには重いコンテナを使っている場合’docker-compose exec’オプションを選んでください。’docker-compose run’は軽量なコンテナやデーモンモードで稼働しないコンテナ(起動して処理を終えたらすぐに終了するコンテナ)の場合選ぶことをおすすめします。
![Docker Reuse Containers](https://www.jetbrains.com/phpstorm/whatsnew/img/2019.1/docker-compose-lifecycle.png)
PHP
自動補完の改善
特別なファイル.phpstorm.meta.phpを使って引数や戻り値をより的確にサジェストできます。たとえば数値や文字列といった基本型ではなく特定の値セットを候補に挙げることが出来るようになります。またはある関数が特定の定数を戻すことを期待できるようになります。ご自分のライブラリに.phpstorm.meta.phpを追加しておくことでPhpStormの補完精度を向上させることが出来ます。
インポートの改善
インポートする際、FQNを使う際のインスペクション、インテンションを作り直しました。狙いはできる限りクオリファイアを省くことです。PhpStormは冗長なクオリファイアをできる限り取り除いたり、useステートメントを使ったりということがシンプルに行えるようになりました。またファイルにコードを貼り付けた際、既に存在するエイリアスを再利用するか尋ねます。
![Improved Imports](https://www.jetbrains.com/phpstorm/whatsnew/img/2019.1/import-on-paste.png)
コードクリーンアップ
PhpStorm 2019.1ではPHP向けのインテンションが実装されました。useステートメントを使うことでクラス名の登場箇所を最適化したり、不要であれば削除したりできます。また PHP CS FixerまたはPHP_CodeSnifferのphpcbfによりコードスタイルを自動的に修正することも可能です。VCSコミット前にクリーンアップをすることも、Code -> Code Cleanup…より手動でクリーンアップすることもできます。
Web 技術
いつも通り、WebStormの新機能は全てPhpStormでご利用いただけます。最初から備わっている場合とプラグインを入れることでご利用いただける機能とがあります。
最新ドキュメントの表示
CSS プロパティ、HTML タグや属性のためのドキュメント (F1) には、MDN からのブラウザサポートに関する最新の説明と情報および MDN の全記事へのリンクも表示されるようになりました。
CSSに関するブラウザ互換性チェックに対応
現在利用している CSS プロパティ全てがターゲットのブラウザバージョンでサポートされていることをチェックできるようになりました。環境設定の Inspactions で新しく追加された Browser compatibility を有効にしてください。
VueアプリケーションにおけるTypeScriptサポートを改善
WebStorm は .vue ファイル内の任意の TypeScript コードに対する独自のTypeScript サポートと共に TypeScript 言語サービスを使用するようになりました。より正確なタイプチェックやタイプ情報を得ることができます。また、サービスが提供するクイックフィックスを使えるようになります。さらには TypeScript ツールウィンドウにおいて現在のファイル内の TypeScript エラーをすべて参照できるようになりました。
Angularアプリ用の新しいインスペクションに対応
Angular アプリケーション用に WebStorm は17つの新しいインスペクションを追加しました。入力時にアプリ内の Angular 特有のエラーに気が付くことができ、さらにクイックフィックスを提案してくれます。これらのインスペクションは TypeScript でもテンプレートでも動作し、バインディングやディレクティブ、コンポーネントなど、そのほかにも多くの用途についてチェックしてくれます。
新しいデバッガーコンソール
JavaScript と Node.js のデバッグツールウィンドウにおいて、新しく改善されたインタラクティブなデバッガコンソールを利用できます!ツリービューを使用してオブジェクトが表示されるようになり、CSSのログメッセージのスタイルや、console.group()
とconsole.groupEnd()
を使ってそれらのグループ化をサポートします。 また、あらゆる種類のログメッセージの除外もできるようになりました。
Promiseを持つ関数をasync/awaitに変換
.then()
や.catch()
呼び出しをしている Promise を返す関数を、 async/await 構文を利用する async 関数に自動的に変更できるようになりました。関数名上で Alt-Enter を押し Convert to async function を選択してください。この機能は TypeScript ファイルだけではなく JavaScript や Flow でもご利用いただけます。
IDE
VCS の改善
Commit Changes ダイアログの Diff ペインに新しく “Uncheck all” チェックボックスを追加しました。1回ですべてのコードチャンクのチェックを簡単に外せます。またfixup、squash、cherry-pickをGitログから直接呼び出せるようになりました。
カスタムUIテーマ
新しい Dark Purple テーマにしたり、ご自分でカスタムテーマを作ったりできます。IDEのあらゆる要素、アイコンからラジオボタン、矢印までカスタマイズして新し意テーマプラグインとして保存出来ます!
データベースツール
DataGripの進化と共に、PhpStormのデータベースツールも強化されました:
- 新しいデータベースをサポート: Greenplum、VerticaとApache Hive
- CREATEとDROPを組み合わせた文のコード補完サポート
- MySQLとMariaDBのDEFINER属性サポート
- MariaDBのOracleモードサポート
- プロジェクトのデフォルトフォルダを設定可能
その他の改善:
- プリミティブ型とクラスメンバの可視性によるカラーリングオプションをPreferences | Editor | Color Scheme | PHPで指定できます
- またソフトラップを特定のファイルタイプに対して設定出来るようになりました。Preferences/Settings | Editor | General の‘Soft-wrap files’ でファイルタイプを指定出来ます
- PHPDocスタイル設定が改善され、Preferences | Editor | Code Style | PHP の PHPDoc タブでuseステートメントのソート、タグの順序の定義、スペース数のカスタマイズが行えるようになりました