このメジャーアップデートのハイライトには以下が含まれています。
JetBrains IDE の生産性を向上させる多数の新機能と改善が盛り込まれた JetBrains AI Assistant が一般公開されました。
AI Assistant が複数行のコードブロックを生成できるようになりました。 新しい行で入力を始めた際に LLM の候補がある場合、グレー表示のコードスニペットが現われます。 Tab を押すと候補を受け入れられます。
現時点では、このような候補はクラスコンテキスト内または関数定義内で提供されます。
AI Assistant はクラスメソッドのテストも生成できます。 ユニットテストでカバーしたいクラスメソッドにキャレットを配置して Alt+Enter を押し、AI Assistant と Generate Unit Tests(ユニットテストの生成)を続けて選択するだけです。
これまでは AI チャットを使用してコードスニペットを生成できていました。 このバージョンではプロンプトを直接エディター内に開く AI Assistant | Generate code…(コードの生成…)アクションが追加されています。 生成したいコードの説明を入力するように求められます。 入力を完了すると AI Assistant によって候補が提供され、その一部またはすべてを受け入れることができます。
PHP スクリプトや実行構成を実行する場合や Composer アクションを実行する場合に何らかの理由でジョブが失敗することがあります。 AI Assistant は問題の根本的原因を明らかにするのに役立ちます。 スタックトレースまたはエラーメッセージ内の Explain with AI(AI で説明)をクリックすると、AI が生成した説明を取得できます。
PhpStorm の AI Assistant は JetBrains AI Service サブスクリプションをご利用の場合に追加機能として使用できます。
PhpStorm は、Pest テストフレームワークを標準でサポートしています。 私たちは最近、Pest プラグインの元の著者と合意し、その開発を引き継ぎ、PhpStormにバンドルすることにしました。 詳細については、私たちの最近のブログ記事をお読みください。
Pest テストを PHPUnit テストと同様に PhpStorm から直接実行できるようになりました。 テスト内にキャレットを配置して実行ウィンドウをトリガーすると、その特定のテストの実行構成が作成されます。 ファイル内の特定のテスト内ではない場所にキャレットを配置すると、そのファイル内のすべてのテストをトリガーできます。
この新しい Pest のサポートにより、$this で関数またはメソッドを呼び出してアサーションを記述できるようになっています。 テスト関数の自動補完も改善されているため、入力中に使用できるアサーションを確認できるようになっています。
Pest ではカスタム期待値を記述してテストのボイラープレートチェックを減らすことができます。 PhpStorm ではカスタム期待値の使用箇所を検索し、名前を変更することができます。
PhpStorm 2023.3 では PHP 8.3 がフルサポートされています。 IDE のほとんどの変更は PhpStorm にオーガニックに統合されているため、ユーザーがそれらに気付くことはありません。そのため、ここでは変更によるメリットを享受するために知っておくべき新機能についてのみ言及しています。
#[\Override] アトリビュート PHP 8.3 では新しい #[\Override] アトリビュートが導入されています。 これはメソッドをオーバーライドする際の意図を明示的に示すために使用できます。 PHP エンジンは #[\Override] が指定されたメソッドが実際に親メソッドをオーバーライドしているかをチェックでき、そうでない場合に例外をスローします。 PhpStorm 2023.3 はこのような場合について事前に警告します。
PhpStorm は適切な場合に #[\Override] アトリビュートの追加を提案します。
json_validate() 関数 PHP 8.3 の標準ライブラリには新しい json_validate() 関数が追加されています。 従来は文字列が有効な JSON であるかを検証する場合、その JSON をデコードしてエラーがスローされるかどうかを検出するしかありませんでした。 PhpStorm ではこのようなパターンを検出し、json_validate() 関数呼び出しに置換することを提案できます。 文字列をデコードするよりもメモリ使用量が少なくなるため、入力が有効な JSON であるかを知りたいだけの場合に役立ちます。
PHP 8.3 ではクラス定数の型を宣言できます。 void、callable、never を除くすべての型宣言を使用できます。
PhpStorm は型付きのクラス定数に対応した以下の機能を提供しています。
PHP 8.3 ではいくつかの機能が非推奨となりました。PhpStorm はこれを受け、それらの検出に対応したインスペクションを追加しました。
PhpStorm 2023.3 には Symfony 開発者向けの更新がいくつか含まれています。
新しいビルトインの Symfony 用プロジェクトイニシャライザーでは、「ようこそ」画面から必要なタイプとバージョンを直接指定して新しい Symfony プロジェクトを作成できるようになっています。
IDE が QueryBuilder メソッド呼び出し内で DQL をフルサポートするようになりました。 ハイライト、フィールド補完、ターゲットモデルクラスへの解決機能などの機能が提供されています。
PHP 8.0で属性が導入されたことに伴い、Doctrine アノテーションは廃止され、まもなく削除される予定です。 この移行を支援するため、PhpStorm 2023.3 には Doctrine アノテーションをアトリビュートに変換する機能を搭載しています。
PhpStorm は Symfony のアノテーションから #[Required] や #[Route] などの対応するアトリビュートへの変換もサポートしています。
実験的な新機能として、インデックスが作成されたライブラリのディレクトリを除外する機能も追加しました。 このようなファイルをプロジェクトから除外することで、複数定義の問題を回避し、インデックス作成のパフォーマンスを改善できます。
ジェネリックを使いやすくするための改善に引き続き取り組んでいます。 PhpStorm 2023.3 ではジェネリックの色分けを設定できるようになり、ジェネリック型を識別しやすくなっています。
アトリビュートの採用が増えるにつれ、特定のフレームワークの複数行にまたがる長いアトリビュートが付いたコードを読み取るのが困難な場合が出てきています。 PhpStorm 2023.3 では複数行のアトリビュートを折りたためるため、これが問題になることはありません。
PHPUnit 10は、テストクラスやテストメソッド、テスト済みのコード単位にメタデータを追加するための属性のサポートを導入しました。 以前の 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(プロジェクト)ツールウィンドウにその外観を反映させるようにしました。
WebStorm の機能が満載の PhpStorm では import type ステートメントを追加する際に発生する不快な矛盾に関する問題がいくつか解決され、verbatimModuleSyntax をより簡単に扱えるようになりました。 TypeScript の import type ステートメントの種類を構成するオプションを追加し、 TypeScript ファイルの package.json の exports フィールドの動作も改善しました。
HTML コードを JSX ファイルに貼り付ける際、PhpStorm がアトリビュートを変換するだけでなく、自己終了タグを自動的に閉じるようになりました。 このオプションは、Settings(設定)| Editor(エディター)| General(一般)| Smart Keys(スマートキー)| JavaScript で構成できます。
@property のサポート
カスタム CSS プロパティを作成するための新しい @property API をサポートするため、PhpStorm 2023.3 では CSS カスタムプロパティを明示的に定義するためのインスペクションと補完を提供し、プロパティタイプのチェックと制限、デフォルト値の確立、カスタムプロパティの継承の可能性の判定を行えるようにしています。
defineSlots のサポートを追加し、slot 名に対応した補完とナビゲーション、および Rename(名前の変更)リファクタリングを使用できるようにしました。 また、defineExpose を使用するプロパティの補完も導入されています。 PhpStorm 2023.3 では、コンポーネントに必要なインポートが defineOptions 関数で指定された名前に基づいて追加されます。