PhpStorm 2024.3 の新機能

このバージョンのハイライトには以下が含まれています。

  • PHP 8.4 のサポート
  • AI Assistant の改善
  • xdebug_notify() のサポート
  • Laravel Herd の PHP インタープリター

PHP 8.4 のサポート

PhpStorm 2024.3 には、機能豊富な PHP 8.4 へのアップグレードを円滑に行うための新しいインスペクションやクイックフィックスが多数実装されています。 以下では、新しい PHP 8.4 の機能が PhpStorm のワークフローでどのようにサポートされているかを簡単に説明します。

プロパティフック

PHP の近年の歴史において最も大きな変更の 1 つであるプロパティフックは、プロパティに get フックと set フックを実装できるようにすることで、ボイラープレートな getter と setter を排除することを意図したものです。

プロパティフック(昇格されたプロパティ内のプロパティフックを含む)に対し、PhpStorm は以下を提供しています。

  • getter と setter を get および set プロパティフックに置換するためのクイックフィックス。
  • プロパティにプロパティフックを追加するためのインテンションアクション。
  • プロパティフックの本体の挿入を含む get および set キーワードのコード補完。
  • Generate(生成)| Getters and Setters(getter と setter)と同様に、Generate(生成)アクションによってプロパティの get および set フックを生成する機能。
  • 省略表記に変換できるプロパティフックの自動検出と、それを変換するためのクイックフィックス。
  • プロパティフックの構文とロジックの適切な使用方法を徹底するためのチェック。

非対称可視性

非対称可視性を使用すると、型付きプロパティに読み取り操作と書き込み操作で異なる可視性を定義できます。

PhpStorm 2024.3 は以下に対するチェックとクイックフィックスを提供することで、コード内で非対称可視性のスコープを適切に実装できるように支援します。

  • 冗長な非対称可視性修飾子。
  • プロパティの set の可視性をメイン(get)の可視性よりも広くする試み。
  • private (set) プロパティの冗長な final 修飾子。
  • 継承されたプロパティでプロパティの可視性を狭める試み。
  • set の可視性スコープ外で非対称可視性のプロパティを変更する試み。

新しい配列関数

PhpStorm 2024.3 では、foreach ループを新たに追加された PHP 8.4 関数の array_find()array_find_key()array_any()、および array_all() に変換できます。

丸括弧を使用しない new

PhpStorm 2024.3 では、(new MyClass())->method() 型の構築における new 式を囲む丸括弧の削除がサポートされています。

AI Assistant  プラグイン

JetBrains AI Assistant の機能は AI Pro サブスクリプションを契約している場合、または体験版でのみ使用できることに注意してください。

JetBrains の新しい PHP コード補完モデル

品質を大幅に改善し、AI による PHP のコード補完の遅延を減らしました。 この機能改善には JetBrains 独自の新しい大規模言語モデル(LLM)である Mellum が使用されており、より高速、スマート、かつコンテキストの認識精度が向上したクラウドコード補完が実現されています。

JetBrains の新しい LLM の詳細については、こちらのブログ記事をご覧ください。

提案されたコードの構文ハイライト

インラインコード補完の提案に構文ハイライトが追加され、読みやすくなりました。

コード提案の段階的な承認

複数行のコード提案をまとめて受け入れる(Tab を押す)ことも、単語ごと(Ctrl+→)または行ごと(End)に受け入れることもできるようになりました。

AI プロンプトのインライン入力

新しい AI プロンプトのインライン入力により、ユーザーがエディター内に直接入力した自然言語内のリクエストを AI Assistant が検出し、処理できるようになりました。 リクエストは即座に解釈され、特に追加の手順を踏まなくても提案コードが生成されます。

PhpStorm は AI Assistant が変更した行をその横のガター内に紫色で示すため、更新内容を簡単に確認できます。 提案が気に入らない場合は、ガターの紫色のブロックをクリックするか Ctrl+/ を押して最初のプロンプトを調整できます。

コンテキスト管理の改善

このアップデートでは、AI Assistant が提案時に考慮するコンテキストの管理をより透明化し、直感的にしました。 改良された UI ではコンテキストとして含まれるすべての要素を表示し、管理できるようにすることで、完全な可視性と制御を実現しています。 開いているファイルとその中で選択されたコードがコンテキストに自動的に追加されるようになったため、必要に応じてファイルの追加と除去を簡単に行い、ワークフローに合わせてコンテキストをカスタマイズできます。 また、プロジェクト全体の説明を添付し、コードベース全体にわたって AI Assistant の回答をガイドすることができます。

プルおよびマージリクエストのタイトルと説明の生成

AI Assistant を使用して IDE から直接プルリクエストとマージリクエストの正確なタイトルと説明を生成できるようになりました。これによってワークフローが合理化され、明確かつ簡潔な説明を得られます。

AI Assistant による SQL エラーの処理

AI Assistant によって SQL クエリの実行エラーを処理するための 2 つの新しい便利なアクションをエラーメッセージ領域で使用できるようになりました。 Explain with AI(AI で説明)は、自動的に送信されるプロンプトとエラーを説明する AI Assistant の回答を含む AI チャットを開きます。 Fix with AI(AI で修正)アクションは、クエリ実行エラーに対する修正をエディター内に生成します。

JetBrains AI Assistant に対するすべての更新についてお読みください。

デバッグ

xdebug_notify() のサポート

PHP のデバッグエクスペリエンスをさらに強化するため、PhpStorm に xdebug_notify() 関数から送信される出力を構造的に処理する方法を提供するようにしました。

Xdebug 3.1 で導入された xdebug_notify() を呼び出すと、PhpStorm のデバッグコンソールに変数を個別に出力できます。

Laravel エコシステム

PhpStorm における Laravel Herd の PHP インタープリター

Laravel Herd を使用している Laravel 開発者のために、PhpStorm 2024.3 ではマシン上で現在使用されている Laravel Herd の PHP 実行可能ファイルへのパスを自動的に検出するようにしました。 PhpStorm でこのインタープリターを使用するには、CLI インタープリター設定(PHP | CLI interpreter(CLI インタープリター)| に移動し、開いた CLI Interpreters(CLI インタープリター)ダイアログに表示されている事前構成済みオプションのリストの中から PHP 実行可能ファイルを選択してください。

Pest フレームワーク関連の機能強化

PhpStorm 2024.3 では、Pest テストフレームワークに関する Laravel 開発者のエクスペリエンスが大幅に改善されています。 Pest 3.0 の完全サポートを実装し、IDE から直接 Pest を使用して並列テストとミューテーションテストを実行できる機能を追加しました。

Pest 3.0 によるミューテーションテスト

最近リリースされた Pest 3.0 には、コードに小さな変更を適用し、その変更をテストで検出できるかどうかを追跡するミューテーションテストが導入されています。

PhpStorm 2024.3 では他のテストオプションと同様に、エディターの Project(プロジェクト)ツールウィンドウから直接、または実行/デバッグ構成を介して Pest の Run Tests (Pest) with Mutation(ミューテーションテストを実行(Pest))オプションを呼び出し、専用の Pest Mutation(Pest ミューテーション)ツールウィンドウでテスト結果を検査できます。

IDE で使用されている PHP インタープリターに Xdebug 3.0 以上 もインストールするようにしてください。

詳細については、PhpStorm のドキュメントをご覧ください。

Pest による並列テスト

PhpStorm 2024.3 では、並列モードで Pest テストを実行する際にターミナルへ切り替える必要がなくなりました。 テストファイルに移動し、エディター内のガターアイコン、Projoect(プロジェクト)ツールウィンドウ、または実行/デバッグ構成で Run Tests (Pest) in Parallel(テストを並列実行(Pest))を選択するだけで済みます。

バージョン管理システム

import ステートメント内のマージ競合の解決

PhpStorm で import ステートメント内のマージ競合を自動的に解決できるようになりました。 この機能を有効にするには、マージダイアログの歯車アイコンにある Resolve conflicts in import statements(import ステートメント内の競合を解決)を選択するか、Settings(設定)| Tools(ツール)| Diff & Merge(差分とマージ)に移動して Automatically resolve conflicts in import statements(import ステートメント内の競合を自動的に解決する)を選択してください。

Find in Files(ファイル内検索)の更新

Find in Files(ファイル内検索)機能が強化され、Project Files Excluding Git-Ignored(gitignore ファイルを除くプロジェクトファイル)という新しい検索範囲が追加されました。 このオプションを使用すると .gitignore ファイルで無視対象に指定されているすべてのファイルが検索結果から除外され、プロジェクト全体を検索する際に関連性のあるコードに専念しやすくなります。

バックグラウンドのコミット前チェックを無効化するオプション

Settings(設定)| Version Control(バージョン管理)| Commit(コミット)にある新しい Run advanced checks after a commit is done(コミット完了後に高度なチェックを実行する)オプションを使用することで、コミット処理中のバックグラウンドチェックを管理できるようになりました。 この設定により、コミット後にテストとインスペクションを実行するかどうかを決定できます。 コミットが行われる前にこれらのチェックを完了する場合は、このオプションを無効にしてください。

「ようこそ」画面のブランチ名

「ようこそ」画面にブランチ名が表示されるようになりました。複数のプロジェクトバージョンを扱う場合でも混乱することなく、作業ディレクトリを簡単に切り替えることができます。

データベースツール

MySQL と MariaDB の部分イントロスペクションとスマートリフレッシュ

PhpStorm で部分イントロスペクションがサポートされるようになりました。 従来のイントロスペクターは MySQL または MariaDB データベースのスキーマの完全イントロスペクションのみを実行可能で、単一オブジェクトのメタデータをリフレッシュできませんでした。 コンソール内で DDL ステートメントが実行されるたびにデータベーススキーマ内のオブジェクトが変更される可能性があったため、IDE はスキーマ全体の完全イントロスペクションを開始していました。 この動作には時間がかかるため、作業の流れが中断されることもしばしばでした。

このバージョンの PhpStorm は DDL ステートメントを解析し、その影響を受けた可能性があるオブジェクトを突き止め、そのオブジェクトをリフレッシュできるようになっています。 データベースエクスプローラー内で単一の項目を選択して Refresh(リフレッシュ)アクションを呼び出すと、以前のようにスキーマ全体ではなく、1 つのオブジェクトのみがリフレッシュされます。

過剰な数の JOIN 句に対するインスペクション

場合によっては、JOIN 句の数が過剰なクエリを実行することは推奨されません。それによってパフォーマンスが低下するためです。 エディターがそのようなクエリを特定し、ハイライトできるようになりました。 このインスペクションは IDE の設定で有効にできます。 Editor(エディター)| Inspections(インスペクション)に移動し、SQL セクションを展開して Excessive JOIN count(過剰な JOIN 数)を選択してください。

フローティングページネーションツールバー

データエディター内のグリッドのページングを認識しやすくするため、このコントロールをツールバーからデータエディターの下中央に移動しました。

フロントエンド

ディレクトリの検索結果を明確化

プロジェクトディレクトリで Find in Files(ファイル内検索)を使用する際、PhpStorm がデフォルトで node_modules の結果を除外するようになりました。 Settings(設定)| Advanced Settings(高度な設定)Search in library files when “Directory” is selected in Find in Files(ファイル内検索で "ディレクトリ" が選択されている場合はライブラリファイル内を検索する)オプションを有効にすると、以前の動作に戻ります。

フレームワークコンポーネントの移動操作と名前変更の改善

Vue、Svelte、および Astro コンポーネントのエディター内ヒントを強化しました。 Show component usages(コンポーネントの使用箇所を表示)アクションがインポートとマークアップテンプレートの両方で使用箇所を検索するようになりました。 また、通常のファイル参照を検索する際にコンポーネントの使用箇所を除外するための Show Component Usages(コンポーネントの使用箇所を表示)フィルターを追加しました。 Rename(名前の変更)リファクタリングも更新され、コンポーネントファイルの名前を変更する際に使用箇所を含めるオプションが追加されました。

Tailwind CSS クラスの色のプレビュー

Tailwind CSS クラスの色のプレビューがエディターでインライン表示されるようになったため、色を区別しやすくなりました。 言語サーバープロトコル(LSP)の textDocument/documentColor メソッドのサポートを追加したことで、すべての LSP ベースのプラグインでこの機能が初期状態で提供されるようになりました。

Angular 関連の改善

Angular 19 を使用するプロジェクトにおいて、PhpStorm がコンポーネント、ディレクティブ、およびパイプに対してスタンドアロンモードをデフォルトで使用するようになりました。 スタンドアロンコンポーネントと非スタンドアロンコンポーネントを相互に変換できるクイックフィックスが追加されました。 コードを整形する際や新しいインスペクションを使用する際に、未使用のスタンドアロンインポートを自動的に削除できます@let 構文のサポートも改善されました。

UI

選択したテキストのすべての出現箇所をハイライト

PhpStorm がデフォルトでファイル内に選択したテキストのすべての出現箇所を自動的にハイライトするようになりました。 これにより、コード全体で選択したテキストの出現箇所を追跡しやすくなります。 以前の動作を希望する場合は、Settings(設定)| Editor(エディター)| General(一般)| Appearance(外観)でこの機能を無効にできます。