PhpStorm 2022.1 の新機能

PhpStorm 2022.1 は、複数行およびネストした array shape のサポート、インプレースの Extract Method(メソッドの抽出)リファクタリング、また Blade テンプレート、WordPress、PHP のジェネリクスのサポート強化などを含むメジャーアップデートです。

複数行およびネストした array shape

PhpStorm は、バージョン 2021.2 より、PHPDoc ブロックでの array shape サポートに取り組んできました。 以前のリリースでは、単一行と単一レベルのアノテーションのみをサポートしていました。

PhpStorm 2022.1 では、PHPDoc と #[ArrayShape] アトリビュートの両方で複数行とネストした array shape が完全にサポートされるようになりました!

array shape アノテーションを追加すると、キーのコード補完を利用できるほか、単純な配列データ構造やオブジェクトのような配列における値の型を推論できます。 PhpStorm では、PHPDoc とアトリビュート構文のどちらでも好きなほうを使えます。 この構文は、戻り値の型とパラメーターの型でサポートされています。

インプレースの Extract Method(メソッドの抽出)リファクタリング

Extract Method(メソッドの抽出)は PhpStorm でよく使用されるリファクタリングの 1 つです。 コードを単純化して新しいメソッドを作成するには、対象となるコードを選択してから ⌘⌥M(Cmd+Alt+M / Ctrl+Alt+M)を押します。

以前は、この操作でリファクタリング構成用のダイアログが開いていました。 しかし、ポップアップが不評だったため、多くの場面でインプレースのリファクタリングを代わりに使ってメソッドを抽出できるようにしました。

今後はダイアログは表示されず、新しいメソッド(または関数)がすぐにエディター内で作成されます。 カーソルがアクティブになり、新しいメソッドの名前を編集できるようになります。

Laravel の Blade テンプレートのサポートを強化

従来の PhpStorm では、Blade テンプレートの各コードブロックが独立したスコープとして扱われていました。 そのため、コード補完とインサイトに問題が派生していました。

PhpStorm 2022.1 では、IDE による Blade テンプレートの処理方法を大幅に改良しました。 この結果、.blade.php ファイルのコード補完が大幅に改善されます。

他にも Blade テンプレートのコード補完と整形に関する多くの問題が解決されています。 詳細はこちらをご確認ください。

WordPress 関連の改善

`get_template_directory_uri()` を使った動的パスのサポート

PhpStorm では、ファイルパスにカーソルを合わせて ⌘+クリック(Ctrl+クリック)で対応するファイルをエディターで開くことができます。 ただし、WordPress のコードでは、動的パスが WordPress 関数と結合している場合には機能しませんでした。

このリリースでは、パスに含まれる get_template_directory_uri() 関数のサポートを追加しています。 次のアップデートでは、他の関数もサポートする予定です。

フックの呼び出しから登録箇所への移動

WordPress のフックシステムは強力な機能ですが、フックの呼び出し箇所からハンドラーの宣言箇所に移動することはできませんでした。

今回、呼び出しの左側にガターアイコンが設けられました。 そのアイコンをクリックすると、フックの使用箇所のリストが登録箇所や他の呼び出しと一緒に表示されます。

新しい高度な PHP メタデータ機能

ご存じかもしれませんが、PhpStorm は「コード認識」機能をビルトインで搭載しており、コードに関する外部知識も備えています。 この知識は、.phpstorm.meta.php ファイルに格納されています。 このファイルを使用して PhpStorm にコードベースに関する詳細情報を伝え、コード補完の質を改善できます。

マジックメソッド __call と __callStatic のサポート

マジックメソッドである _call または _callStatic は未定義のメソッドであるため、これらのメソッドに対するコード補完は行われません。

このリリースでは対応するメタデータのエントリを追加することにより、このような呼び出しの自動補完を利用できるようにしました。

特定のメソッド名をパラメーター値から受け取り、動的な呼び出しを自動的に処理することもできます。

共用体型のサポート

.phpstorm.meta.php で共用体型を @|MyClass として指定できるようになりました。そうすることで、モックのコーディング支援を改善できます。

他のメタデータ機能に関する詳細は、こちらのドキュメントをご覧ください。

アノテーションサポートとジェネリクスの改善

PhpStorm ではアノテーションベースのジェネリクスに対するサポートを継続的に改善しています。 このリリースでは、以下を含む他のケースにも対処しています。

  • @psalm-import-type, @phpstan-import-type
  • @psalm-trace, @phpstan-trace
  • @method タグのジェネリクス

新しい Composer プロジェクトウィザード

新しい空プロジェクトを作成する際に、composer.json ファイルを自動的に生成して必要な依存関係を指定できるようになりました。 プロジェクトを作成後、PhpStorm から依存関係のインストールが促されます。

ユーザーエクスペリエンス

新しい Notifications(通知)ツールウィンドウ

Event Log(イベントログ)インスタンスを新しい Notifications(通知)ツールウィンドウに入れ替えました。 IDE の通知が全体的に管理しやすくなり、重要な通知を見逃しにくくなります。 新しいツールウィンドウはデフォルトで IDE ウィンドウの右下隅に配置されています。 すべての通知は、提案とタイムラインという 2 つのカテゴリーに分けられます。

Structural Search and Replace(構造検索&置換)ダイアログの更新

Structural Search and Replace(構造検索 & 置換) は、メインメニューの Edit(編集)| Find(検索)| Search Structurally(構造検索)… から呼び出します。

Structural Search and Replace(構造検索&置換)ダイアログを改良し、全テンプレートをリスト表示するようにしました。これにより、テンプレート間をより簡単に移動できるようになりました。

また、Structural Search and Replace(構造検索&置換)ダイアログの右上隅に Pin Dialog(ダイアログのピン留め) アイコンを追加しています。

タブの均等分割

エディター内の作業スペースをすべて同じ幅のタブに分散できるようになりました。 Settings(設定)/ Preferences(環境設定)| Advanced Settings(高度な設定)| Editor Tabs(エディタータブ)| Equalize proportions in nested splits(ネストした分割の比率を揃える)で有効にできます。

UML ダイアグラムを別のフォーマットにエクスポート

UML ダイアグラムを yEd の .graphml、JGraph の .drawio、Graphviz の .dot、Mermaid の .md、Plantuml、および IntelliJ IDEA の .uml ファイルとしてエクスポートすることが可能になり、サードパーティツールとの互換性が確保されました。

Markdown 関連の改善

Markdown ファイルからのコマンド実行

一般的に、README ファイルにはアプリの実行に必要なステップや使う必要のあるコマンド一式が記載されています。 PhpStorm 2022.1 では、このようなコマンドを Markdown ファイルから直接実行することができます。コマンドの左にある Run(実行)アイコンをクリックするだけです。

Markdown のコードスニペットのコピー

また、Markdown ブロックに Copy code snippet(コードスニペットのコピー)アクションを追加したため、ブロックの内容を簡単にクリップボードにコピーできます。

Markdown エディターのフローティングツールバーの更新

テキスト選択時に表示されるフローティングツールバーを改良し、Markdown ファイルを簡単に整形できるようにしました。 ツールバーはデザインが新しくなっただけでなく、リスト作成機能とヘッダーのスタイルを選択できるメニューが追加されています。

ツールバーはカスタマイズ可能であるため、必要なオプションだけを配置しておけます。 カスタマイズするには、Settings(設定)/ Preferences(環境設定)| Appearance & Behavior(外観と動作)| Menus and Toolbars(メニューとツールバー)| Markdown Editor Floating Toolbar(Markdown エディターのフローティングツールバー)でカスタマイズできます。

VCS

Annotate with Git Blame(Git Blame で注釈を付ける)の更新

Annotate with Git Blame(Git Blame で注釈を付ける)機能を改善し、取り込まれた変更の調査をより簡単に行えるようにしました。 注釈にマウスポインターを合わせると、IDE が行間の差分をハイライト表示します。その注釈をクリックすると、Git Log(Git ログ)ツールウィンドウが開きます。

プルリクエストコメントでの変更案

IDE 内で直接ローカルに変更を適用したり、コミットしたりできるようになったため、PhpStorm で提案される変更内容に対応しやすくなりました。

Git ツールウィンドウの Commit Details(コミットの詳細)ペインの更新

Commit Details(コミットの詳細)ペインに、GPG 署名とビルドステータスに関する情報が表示されるようになりました。 従来、このデータは Git ログの列としてのみ表示されていました。

Git File History(Git ファイル履歴): インデックスを使用しない新しい UI

Git File History(Git ファイル履歴)ツールウィンドウの新しい UI は、インデックス作成プロセスとは無関係になりました。 新しいインターフェースでは、ログのインデックス作成がオフの場合でもデータが表示されます。

このリリースの特に重要な変更内容は以上です。 さらなる詳細やこのリリースに取り込まれたその他の機能強化については、PhpStorm ブログのリリース発表ページを参照してください。