PhpStorm 2023.3 の新機能

このメジャーアップデートのハイライトには以下が含まれています。

  • AI Assistant のプレビューが終了しました
  • Pest のサポート
  • PHP 8.3 のサポート
  • Symfony サポートの改善
  • 作業が楽になる UI の改善

AI Assistant のプレビューが終了しました 一般公開

JetBrains IDE の生産性を向上させる多数の新機能と改善が盛り込まれた JetBrains AI Assistant が一般公開されました。

LLM ベースのコード補完

LLM ベースのコード補完

AI Assistant が複数行のコードブロックを生成できるようになりました。 新しい行で入力を始めた際に LLM の候補がある場合、グレー表示のコードスニペットが現われます。 Tab を押すと候補を受け入れられます。

現時点では、このような候補はクラスコンテキスト内または関数定義内で提供されます。

テストコードの生成

テストコードの生成

AI Assistant はクラスメソッドのテストも生成できます。 ユニットテストでカバーしたいクラスメソッドにキャレットを配置して Alt+Enter を押し、AI AssistantGenerate Unit Tests(ユニットテストの生成)を続けて選択するだけです。

エディター内のコード生成

エディター内のコード生成

これまでは AI チャットを使用してコードスニペットを生成できていました。 このバージョンではプロンプトを直接エディター内に開く AI Assistant | Generate code…(コードの生成…)アクションが追加されています。 生成したいコードの説明を入力するように求められます。 入力を完了すると AI Assistant によって候補が提供され、その一部またはすべてを受け入れることができます。

コンソール内での AI ベースのエラーの説明

コンソール内での AI ベースのエラーの説明

PHP スクリプトや実行構成を実行する場合や Composer アクションを実行する場合に何らかの理由でジョブが失敗することがあります。 AI Assistant は問題の根本的原因を明らかにするのに役立ちます。 スタックトレースまたはエラーメッセージ内の Explain with AI(AI で説明)をクリックすると、AI が生成した説明を取得できます。

PhpStorm の AI Assistant は JetBrains AI Service サブスクリプションをご利用の場合に追加機能として使用できます。

Pest 関連の更新

PhpStorm now supports the Pest test framework out of the box. We recently agreed with the original author of the Pest plugin to take over its development and bundle it in PhpStorm. You can read the details in our recent blog post.

Pest テスト

Pest テストを PHPUnit テストと同様に PhpStorm から直接実行できるようになりました。 テスト内にキャレットを配置して実行ウィンドウをトリガーすると、その特定のテストの実行構成が作成されます。 ファイル内の特定のテスト内ではない場所にキャレットを配置すると、そのファイル内のすべてのテストをトリガーできます。

アサーション

この新しい Pest のサポートにより、$this で関数またはメソッドを呼び出してアサーションを記述できるようになっています。 テスト関数の自動補完も改善されているため、入力中に使用できるアサーションを確認できるようになっています。

カスタム期待値

Pest ではカスタム期待値を記述してテストのボイラープレートチェックを減らすことができます。 PhpStorm ではカスタム期待値の使用箇所を検索し、名前を変更することができます。

PHP 8.3 のサポート

PhpStorm 2023.3 では PHP 8.3 がフルサポートされています。 IDE のほとんどの変更は PhpStorm にオーガニックに統合されているため、ユーザーがそれらに気付くことはありません。そのため、ここでは変更によるメリットを享受するために知っておくべき新機能についてのみ言及しています。

Orverride アトリビュート

#[\Override] アトリビュート

PHP 8.3 では新しい #[\Override] アトリビュートが導入されています。 これはメソッドをオーバーライドする際の意図を明示的に示すために使用できます。 PHP エンジンは #[\Override] が指定されたメソッドが実際に親メソッドをオーバーライドしているかをチェックでき、そうでない場合に例外をスローします。 PhpStorm 2023.3 はこのような場合について事前に警告します。

Override アトリビュートの追加の提案

PhpStorm は適切な場合に #[\Override] アトリビュートの追加を提案します。

json_validate() 関数 json_validate() 関数

新しい json_validate() 関数

PHP 8.3 の標準ライブラリには新しい json_validate() 関数が追加されています。 従来は文字列が有効な JSON であるかを検証する場合、その JSON をデコードしてエラーがスローされるかどうかを検出するしかありませんでした。 PhpStorm ではこのようなパターンを検出し、json_validate() 関数呼び出しに置換することを提案できます。 文字列をデコードするよりもメモリ使用量が少なくなるため、入力が有効な JSON であるかを知りたいだけの場合に役立ちます。

型付きクラス定数

型付きクラス定数

PHP 8.3 ではクラス定数の型を宣言できます。 voidcallablenever を除くすべての型宣言を使用できます。

PhpStorm は型付きのクラス定数に対応した以下の機能を提供しています。

  • 適切な型を挿入するための候補
  • 型ヒントの補完
  • デフォルト値の型との互換性のチェック
  • 子クラスで定数をオーバーライドする際の型の再宣言チェック
非推奨機能 非推奨機能

非推奨機能

PHP 8.3 ではいくつかの機能が非推奨となりました。PhpStorm はこれを受け、それらの検出に対応したインスペクションを追加しました。

Symfony のサポート

PhpStorm 2023.3 には Symfony 開発者向けの更新がいくつか含まれています。

新規プロジェクトウィザード

New Project(新規プロジェクト)ウィザード

新しいビルトインの Symfony 用プロジェクトイニシャライザーでは、「ようこそ」画面から必要なタイプとバージョンを直接指定して新しい Symfony プロジェクトを作成できるようになっています。

QueryBuilder における Doctrine Query Language のサポート

QueryBuilder における Doctrine Query Language のサポート

IDE が QueryBuilder メソッド呼び出し内で DQL をフルサポートするようになりました。 ハイライト、フィールド補完、ターゲットモデルクラスへの解決機能などの機能が提供されています。

Symfony と Doctorine のアノテーションからアトリビュートへの変換

Symfony と Doctorine のアノテーションからアトリビュートへの変換

Following the introduction of attributes in PHP 8.0, Doctrine annotations are being deprecated and will soon be removed. この移行を支援するため、PhpStorm 2023.3 には Doctrine アノテーションをアトリビュートに変換する機能を搭載しています。

PhpStorm は Symfony のアノテーションから #[Required]#[Route] などの対応するアトリビュートへの変換もサポートしています。

PHP 関連のその他の更新

プロジェクトから外部ライブラリファイルを除外するオプション

プロジェクトから外部ライブラリファイルを除外するオプション

実験的な新機能として、インデックスが作成されたライブラリのディレクトリを除外する機能も追加しました。 このようなファイルをプロジェクトから除外することで、複数定義の問題を回避し、インデックス作成のパフォーマンスを改善できます。

ジェネリック型専用のスタイル設定

ジェネリック型専用のスタイル設定

ジェネリックを使いやすくするための改善に引き続き取り組んでいます。 PhpStorm 2023.3 ではジェネリックの色分けを設定できるようになり、ジェネリック型を識別しやすくなっています。

複数行 PHP アトリビュートの折りたたみ機能

複数行 PHP アトリビュートの折りたたみ機能

アトリビュートの採用が増えるにつれ、特定のフレームワークの複数行にまたがる長いアトリビュートが付いたコードを読み取るのが困難な場合が出てきています。 PhpStorm 2023.3 では複数行のアトリビュートを折りたためるため、これが問題になることはありません。

PHPDoc からアトリビュートへの PHPUnit メタデータ変換

PHPDoc からアトリビュートへの PHPUnit メタデータ変換

PHPUnit 10 introduced support for attributes for adding metadata to test classes and test methods, as well as tested code units. 以前の PHPDoc アノテーションからこの新しいスタイルに移行するのに役立つインスペクションとクイックフィックスを実装しました。

バージョン管理システム

オールインワンの差分ビューアー

PhpStorm 2023.3 では変更のレビュー方法を一新しています。 ファイルを 1 つずつ調査するのではなく、変更セットに含まれるすべての変更済みファイルを 1 つのスクロール可能なフレームで確認できるようになっています。 この新しい差分ビューアーは Git Log(Git ログ)ツールウィンドウからアクセス可能で、現時点では JetBrains Space レビューと連携します。 今は GitLab と GitHub への対応を進めているところです。

デバッガー

デバッガー

PhpStorm 2023.3 の新しい Run to Cursor(カーソル位置まで実行)インレイオプションを使うと、デバッグ中に特定のコード行までを素早く実行することができます。 プログラムが一時停止したら、実行を終了したいコード行にマウスポインターを合わせて Run to Cursor(カーソル位置まで実行)ポップアップを使用できます。 必要な行にキャレットを配置して Alt + F9 キーボードショートカットを呼び出しても同じ操作を行えます。

ユーザーインターフェース

デフォルト表示モードのメインツールバーを非表示にするオプション

デフォルト表示モードのメインツールバーを非表示にするオプション

新しい UI に関するフィードバックに応え、以前の UI と同様に IDE のデフォルト表示モードを使用しているときにメインツールバーを非表示にできるようにしました。 ツールバーを消すには、View(表示)| Appearance(外観)を選択し、Toolbar(ツールバー)オプションをオフにします。

デフォルトのツールウィンドウレイアウトに戻すオプション

デフォルトのツールウィンドウレイアウトに戻すオプション

PhpStorm 2023.1 のリリースでは複数のツールウィンドウレイアウトを保存して切り替えられる機能を導入し、ワークスペースのカスタマイズ性を強化しました。 PhpStorm 2023.3 ではこの機能を拡張し、ワークスペースの外観をデフォルトの状態に素早く戻す Default layout(デフォルトレイアウト)オプションを導入しました。 このレイアウトはカスタマイズできませんが、Window(ウィンドウ)| Layouts(レイアウト)からアクセスできます。

デフォルトで色分けされたエディタータブ

デフォルトで色分けされたエディタータブ

エディターでさまざまなファイルタイプを同時に操作しやすくするため、エディタータブをデフォルトで色分けし、Project(プロジェクト)ツールウィンドウにその外観を反映させるようにしました。

TypeScript 関連の改善

TypeScript 関連の改善

WebStorm の機能が満載の PhpStorm では import type ステートメントを追加する際に発生する不快な矛盾に関する問題がいくつか解決され、verbatimModuleSyntax をより簡単に扱えるようになりました。 TypeScript の import type ステートメントの種類を構成するオプションを追加し、 TypeScript ファイルの package.jsonexports フィールドの動作も改善しました。

HTML から JSX の変換で自己終了タグを閉じる

HTML 関連の更新

HTML コードを JSX ファイルに貼り付ける際、PhpStorm がアトリビュートを変換するだけでなく、自己終了タグを自動的に閉じるようになりました。 このオプションは、Settings(設定)| Editor(エディター)| General(一般)| Smart Keys(スマートキー)| JavaScript で構成できます。

CSS カスタム @property のサポート

CSS 関連の強化

To support the new @property API for creating custom CSS properties, PhpStorm 2023.3 now offers inspections and completion features for explicitly defining CSS custom properties, allowing you to check and restrict property types, establish default values, and determine inheritance possibilities for custom properties.

Vue 3 関連の改善

Vue 3 関連の改善

defineSlots のサポートを追加し、slot 名に対応した補完とナビゲーション、および Rename(名前の変更)リファクタリングを使用できるようにしました。 また、defineExpose を使用するプロパティの補完も導入されています。 PhpStorm 2023.3 では、コンポーネントに必要なインポートが defineOptions 関数で指定された名前に基づいて追加されます。