PhpStorm 2022.3 の新機能

PhpStorm 2022.3 は新しい UI プレビュー、PHP 8.2 サポート、PHP 対応の Code Vision、クイックフィックスプレビュー、ParaTest のサポート、PHPDoc のレンダリングビュー、データベースツールでの Redis などを含むメジャーアップデートです。

新しい UI プレビュー

どなたでも最新の UI をお試しいただけます。この UI はまだベータ/プレビュー段階であるため、デフォルトではオフになっています。

新しい UI には、Settings/Preferences(設定/環境設定)| Appearance & Behavior(外観と動作)| New UI Preview(新しい UI のプレビュー)で切り替え可能です。

新しい UI はさらにすっきりし、集中の妨げとなる要素が少なくなっているため、大部分の作業をこれまでと同じやり方でより素早く行えるようになっています。

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

このリリースでは多くの項目が視覚的に改善されています。 以下では、特に重要な改善内容を説明しています。

Code Vision

エディター内では、PHP コードの横に PHP のシンボルであるクラス、トレイト、インターフェース、メソッド、または関数に関する追加情報が表示されます。

使用箇所の数が表示されるため、確認のためにシンボルをクリックする必要はありません。

クラスとインターフェースについては、継承と実装の数がそれぞれに表示されます。

また、特定のコードに最も多くの変更を加えた人に関しても Git の情報が表示されるため、そのコードを最もよく理解しているコードオーナーを簡単に確認できます。

クイックフィックスプレビュー

一部のコードの問題は、Alt+Enter を押して自動的に修正可能です。

提案されたクイックフィックスやインテンションを適用する前に結果をプレビューし、コードがどのように変更されるかをその場で確認できるようになりました。

PHPDoc のレンダリングビュー

レンダリングが改善された HTML 形式対応のオプションを使用することで、PhpStorm 2022.3 での PHPDoc ブロックの外観を変更できるようになりました。 このため、アノテーションの多いコードでも可読性が大幅に向上します。

新しいレンダリングビューを切り替えるには、PHPDoc ブロック付近にあるガターアイコン レンダリングビューのガターアイコン をクリックします。

すべての PHPDoc コメントに対してレンダリングをオンにするには、ガターアイコンを右クリックして、Render All Doc Comments(すべての Doc コメントをレンダリング)を選択します。

クイックドキュメントの改善

PhpStorm では任意の関数、クラス、またはメソッドで Ctrl+Q を押すと、エディター内にドキュメントが表示されます。

このポップアップが大きく改良されました。 このリリースではすべての情報が IDE 内に直接表示されるため、ブラウザーに切り替えてドキュメントを調べる必要はありません。

PHP 8.2

PhpStorm 2022.3 では、PHP 8.2 のフルサポートが提供されています。 IDE のほとんどの変更は組織的に PhpStorm のワークフローに取り込まれているため、ここではユーザーが知っておくべき新機能のみに触れたいと思います。

読み取り専用クラス

読み取り専用クラスは、読み取り専用プロパティのみを持つクラスを手軽に宣言するための手段です。 このクラスはデータの整合性を高める目的で使用できます。

PhpStorm では読み取り専用クラスに関する以下の機能を提供しています。

  • 読み取り専用プロパティを持つクラスを読み取り専用クラスに変換するクイックフィックス。
  • 読み取り専用クラスに読み取り専用の子要素のみがあることを確認するインスペクション。
  • 読み取り専用クラスにおける冗長な読み取り専用プロパティの検出。
  • 読み取り専用クラスで禁止されている静的および動的プロパティのチェック。

非推奨の動的プロパティ

PHP 8.2 では存在しないプロパティにアクセスしようとすると、非推奨の通知が表示されます。

PhpStorm はそのような使用箇所をハイライトし、プロパティを追加するか、#[AllowDynamicProperties] 属性を使用することでエラーに対処するクイックフィックスを提供します。

型システムの改善

PHP 8.2 では選言標準形型のサポートに加えて、スタンドアロンの nulltrue、および false 型のサポートが追加されています。 PhpStorm でもこれらすべてをサポートするようにしました。

その他の非推奨機能

PHP 8.2 では、さらにいくつかの機能が非推奨となりました。PhpStorm はこれを受け、それらを検出する対応のインスペクションとコードを更新するクイックフィックスを追加しました。

非推奨の ${} 文字列補間

文字列内で変数を使用する場合、これまでは 3 つの補間方法を選択できました。 そのうちの 1 つが非推奨になり、今後削除される予定です。

その出現箇所は PhpStorm によってハイライトされ、Alt+Enter クイックフィックスを使用してコードを更新できます。

非推奨の部分的にしかサポートされていない callable

PHP 8.2 では関数のいくつかの呼び出し方法が非推奨となりました。

無効なコードは PhpStorm によってハイライトされ、Alt+Enter クイックフィックスを使用してコードを更新できます。

PhpStorm はコードベース全体をまとめてスキャンし、問題の可能性がある箇所をすべて検出します。 Code(コード)| Analyze Code(コードの解析)| Run Inspection by Name(インスペクション名を指定して実行)に移動し、 “dynamic property” のように検索して PhpStorm に後の処理を任せることができます。

データベース: Redis のサポート

Redis のサポートが満を持して先行実装されました。

デバッグ

Xdebug の構成がうまくいかない場合は、PhpStorm で以下に示すいくつかの方法を実行することで問題を特定できます。

phpinfo() の出力を検証する

phpinfo() の呼び出しを PHP スクリプトかページに追加して、ブラウザーに表示される関数の出力をコピーします。 次に Run(実行) / Web Server Debug Validation(Web サーバーのデバッグ検証)を呼び出すと、前の手順でコピーした phpinfo() の出力を貼り付けるダイアログが表示されます。

PhpStorm がサーバー構成を解析し、最もよくある問題を検出します。

スクリプトでサーバー構成をチェックする

If the phpinfo() information didn’t help, you can use PhpStorm’s validation script on the server.

Xdebug で戻り値をデバッグする

Xdebug 3.2 には「return from function」という戻り値を検査できる追加のデバッグステップがあります。

PhpStorm 2022.3 はこの新機能をサポートしています。 この新機能を呼び出すには、関数の最後のステートメントで Step Into(ステップイン)を押します。 すると、Watches(ウォッチ)に追加の変数が表示されます。

PHP ツールの統合

ParaTest によるテストの並列実行

ついに PhpStorm が並列テストのサポートを開始しました!

テストを並列実行するには、テストの実行構成で Use ParaTest(ParaTest の使用)をオンにして、ParaTest バイナリへのパスが正しく設定されていることを確認します。 通常、ParaTest が composer.json に追加されている場合は ./vendor/bin/paratest_for_phpstorm のようにパスが設定されています。

PHP 用外部フォーマッターの使用

Preferences(環境設定)| PHP | Quality Tools(品質ツール)で外部フォーマッターを選択できるようになりました。 You can now use FriendsOfPHP/PHP-CS-Fixer or squizlabs/PHP_CodeSniffer for this purpose.

Robo の統合

A popular task runner for PHP, Robo, received the following extended support:

  • Robo クラスがプロジェクトに存在する場合、専用の Robo tasks(Robo タスク)ツールウィンドウを使用できます。
  • Robo タスク実行用の実行構成がコンテキストメニューに表示され、Robo メソッドから呼び出せるようになっています。
  • Robo クラス内の public メソッドに対応する構成のガターアイコンが表示されます。

Prophecy のサポート

If you use the Prophecy mocking framework in your tests, working with it in PhpStorm will now be easier.

PHP の追加機能

日時形式のプレビュー

もう date() の形式を覚える必要も探す必要もありません。 PhpStorm 2022.3 では、日付形式の文字列にカーソルを合わせると日付の表示例がツールチップに表示されるようになりました。

また、日付形式の文字列を編集する際には、形式のパラメーターとして認識されるすべての文字に対応するヒントが付いた自動補完を使用できます。

リストでの array shape の繰り返しをサポート

Support for array shape annotations was added in PhpStorm 2021.2, then in 2022.1, we added multiline and nested syntax support for array shapes.

PhpStorm 2022.3 では、このサポートに欠けていた最後のピースが追加されました。ループ内の array shape 項目が完全にコード補完されるようになります。

新しい Settings Sync(設定の同期)ソリューション

2 つの古い同期ソリューション(IDE Settings Sync(IDE 設定の同期)と Settings Repository(設定リポジトリ))を 1 つの新しい Settings Sync(設定の同期)にまとめました。 さまざまな IDE とマシン間で確実に設定を同期できます。

これまで設定の同期ソリューションを使用していなかった方でも、新しいソリューションを試してみたい場合は、Settings(設定)/ Preferences(環境設定)| Settings Sync(設定の同期)| Enable Settings Sync(設定の同期を有効にする)で有効にできます。

Docker

Docker Desktop なしで WSL の Docker 実行可能ファイルを使用する

Settings(設定)/ Preferences(環境設定)| Build, Execution, Deployment(構築、実行、デプロイ)| Docker で、この種の接続をセットアップできます。

新しいコンテキストアクション: Pull image(イメージのプル)

ハイライト中のイメージ名に対して(Alt-Enter で)呼び出したコンテキストアクションから Pull Docker image(Docker イメージのプル)を選択すると、Dockerfile、docker-compose.yml、または Testcontainers を使うテストを実行することなく必要なイメージをプルできます。

.dockerignore ファイル形式のサポート

.dockerignore ファイルでハイライトと補完を使用できます。

Dockerfile ファイルでの heredoc 形式のサポート

複数行のスクリプトを Dockerfile で使用できます。

Docker コンテキストからの Docker 接続

Set up additional Docker connections using Docker Contexts by calling the Add Service context menu in the Services view and selecting Docker Connections From Docker Contexts.

HTTP クライアント

HTTP クライアントで長いリクエストを整形

HTTP クライアントで URL が長いリクエストの整形オプションが改善されました。 Put query parameters on separate lines(クエリパラメーターを別々の行に配置)コンテキストアクションを使用してクエリを小さなフラグメントに分解し、それを別々の行に配置することも可能です。

リクエスト実行前スクリプト

HTTP クライアントで、リクエスト前に実行されるスクリプトブロックがサポートされました。 リクエスト実行の前にデータを生成し、それを変数を使用して後続のリクエストに渡すことができます。

JavaScript ハンドラー用の新しい API

PhpStorm に сrypto API が導入され、HTTP リクエストで md5 または sha1 ハッシュを計算できるようになりました。

よりランダムな関数も利用できるようになり、簡単な API テストに役立ちます。

ウェブ開発

Next.js と Vite 用の新規プロジェクトテンプレート

Next.js と Vite 用の新規プロジェクトテンプレート

PhpStorm の ウェルカム画面で使用できる New Project(新規プロジェクト)ウィザードに、Vite と Next.js 用のプロジェクトテンプレートが追加されました。 また、Vue 用のプロジェクトテンプレートも最新の標準に従って更新されました。

JavaScript と TypeScript 対応の Code Vision

JavaScript と TypeScript 対応の Code Vision

Code Vision のインレイヒントが JavaScript と TypeScript でも機能するようになりました。 このヒントにより、コード内にある各種のクラス、メソッド、型エイリアス、およびインターフェースの使用箇所が追跡しやすくなります。

Vue 関連の更新

Vue 関連の更新

PhpStorm が未解決のインポートを処理し、Vue コンポーネントのインポートに関する提案を示すようになりました。 また、props デストラクチャ構文のサポートの追加、Vue ライブラリコンポーネント props に対応したコード補完と型チェックの動作改善、および Nuxt 3 に関する複数の問題の修正も行われています。

Vitest のサポート

Vitest のサポート

PhpStorm now supports Vitest, a Vite-native unit test framework! ガターアイコンを含む期待されるすべての主な方法でテストの実行、再実行、およびデバッグを行えます。 また、すべてのテストシナリオに対してウォッチモードがデフォルトで有効になっています。 ウォッチモードではスナップショットテストとカバレッジもサポートされているため、コーディング中にカバレッジに関するフィードバックをほぼ瞬時に受けることができます。


上記はこのリリースで最も重要な変更ですが、もちろんこれだけではありません。 このリリースに含まれるすべての機能強化は、PhpStorm ブログのリリースのお知らせをご覧ください。