現時点の PHP では言語レベルのジェネリクス対応は行われていませんが、アノテーションを介したジェネリクスの使用はすでに人気になっています。 これは、コレクション、コンテナー、ファクトリ、および他のアプリケーションを処理する際にコードの安全性と予測可能性を高めるのに役立っています。
@template
アノテーションを介してジェネリクスに対応できるようにしました。 これによって補完候補に必要な型の要素が含まれるようになるため、多くの場合にコレクションの処理がより明確になります。
ファクトリパターンについては、class-string<T>
アノテーションを使用できるようになり、より適切なコード補完が行われるようになりました。
このジェネリクスへの暫定対応は不完全なものであり、既知の制限事項があります。 詳細については、このブログ記事を参照してください。
PHP インタープリターの新バージョンである 8.1 は、2021 年末にリリースされる見込みです。 ただし、JetBrains はこれまでと同様にこのバージョンへの先行対応を進めています。
PHP 8.1 でリリースされる新機能の中でも、列挙型は最も期待度の高いものの一つです。
PhpStorm 2021.2 では、すぐに列挙型を使い始めることができます。 この IDE はコード補完機能と、列挙型の不正な使用を防止する検証機能を提供します。
PHP の列挙型は case 一式を含み、メソッドを記述可能で、型ヒントとして使用可能です。PhpStorm はこれらすべてのケースでエラーをハイライトし、適切な候補を提供して時間を節約します。
列挙型の case にはスカラー値に相当するものを記述できます。 これは、列挙型をデータストアに保存する場合に便利です。 このような列挙型は Backed Enum と呼ばれます。
クイックフィックスを使用すると、スカラー型宣言を Backed Enum に追加できます。
列挙型は、条件や match 式のような他の機能とも相性が良いです。
コード内にオブジェクト状の配列がある場合、その構造を所定の PHPDoc アノテーション(array{key: type, key: type, ...}
)を使用して定義できるようになりました。
PhpStorm はこのようなアノテーション付き配列に対応したコード補完機能を提供し、定型的な入力に要する時間を削減し、ミスの発生を防ぎます。
サポート対象は、単一行 array shape の定義のみに限定されています。 より大きな構造に関しては、多くの場合は実際のオブジェクトとクラスを使用するほうが適切です。
最も使用頻度の高い PhpStorm のリファクタリングの一つ、Extract Method が改善されました。
大きなメソッドをより小さな単位に分割できるほか、重複コードの削減にも対応しています。
このリファクタリングを使用するには、任意のコードを選択してから ⌘⌥M(Cmd+Alt+M / Ctrl+Alt+M)を押してください。
PhpStorm には Duplicated code fragment インスペクションが用意されています。 このインスペクションは非常に似通ったコードチャンクをハイライトします。最終結果が同じである限り、書式、変数名、ステートメントの順序は異なる可能性があります。
このインスペクションは重複するコードフラグメントの先頭行をハイライトします。 ハイライトされている行で Alt+Enter を押して、重複コードのクイックフィックスから Extract Method リファクタリングを呼び出すだけで、このようなコードをすばやくリファクタリングできるようになりました。
PhpStorm はリファクタリング中に現在のスコープ(メソッド、クラス、ファイル)からより小規模な重複コードフラグメントを検出することもできます。 コードフラグメントを選択してから ⌘⌥M(Cmd+Alt+M / Ctrl+Alt+M)でリファクタリングを呼び出してください。 ダイアログの下に Review and replace duplicates チェックボックスが表示されます。
コードを一切選択することなく Extract Method リファクタリングを呼び出すこともできます。 この場合、PhpStorm は可能なコードの候補を提案します。 候補は絞り込まれており、リファクタリングする意味のある部分のみが表示されます。
Expand / Shrink selection アクション ⌥+Up / ⌥+Down(Ctrl+W / Ctrl+Shift+W)でコードを選択できることはご存じかと思います。 これは、リファクタリング対象コードを最もすばやく選択する方法の一つです。
このリリースでは、小さいながらも有益な改修を行い、波括弧を含まないブロックを選択できるようにしています。
Extract Method リファクタリングにはその他の改善も行われています。 詳細は、こちらのブログ記事をご覧ください。
各リリースでは、バグの発見と修正にかかる時間を削減するためのインスペクションが多数提供しています。 PhpStorm でハイライトされているコードに対して Alt+Enter を押すと、修正が適用されます。
不要な null チェックを PHP 8 の新しく安全な演算子に置換できます。 変換を行うには、Alt+Enter を押してください。
PhpStorm は定数の定義があるエンティティではなく、サブクラスまたはサブインターフェースを介してアクセスされている定数をハイライトします。 エンティティの名前を Alt+Enterクイックフィックスを使用して定数の定義があるエンティティに置換できます。
PhpStorm は複数の条件部を評価し、冗長であるかどうかを判断します。 これは、チェックが不明確で、見ただけではどのチェックが冗長なのかを判断できない場合に役に立ちます。
Settings / Preferences | Editor | Inspections の PHP セクションに新しいインスペクションのグループを追加しました。
このグループには、適切なリファクタリング候補を判断するのに役立つインスペクションも含まれています。 これらのインスペクションはデフォルトでは無効になっていますが、無効になっている場合であってもインスペクションが検出したコードの近くには追加のガターアイコン が表示されます。
ガターアイコンをクリックすると、提案されたリファクタリングが適用されます。
これらのインスペクションは、サイクロマティック複雑度、ネストの深さ、使用されている変数の数、合計行数など、数多くのコード品質メトリクスを組み合わせたものです。
使用されているメトリクスの一覧は、各インスペクションの説明を参照してください。
使用可能なコミット前アクションを拡充し、テストを実行できるようにしました。 Run Tests チェックボックスをオンにして、実行する構成を選択してください。 このアクションは、コードを VCS に格納する前に検証するのに便利です。
また、これらのアクションの横にある Choose profile をクリックして、Analyze code および Cleanup オプションをカスタマイズできるようになりました。
Preferences / Settings | Tools | Actions on Save に新しい構成ページを追加しました。
Ctrl+S または暗黙の自動保存でトリガーできるアクションの一覧が表示されます。 これらのアクションには、コードのチェック、整形、コードのクリーンアップ、デプロイその他があります。
PhpStorm は Show Diff アクションを呼び出した場所に関係なく、初期状態のファイルと変更後のファイルを比較した差分をデフォルトでエディター内で開きます。 別のウィンドウで変更内容を追跡するほうが都合が良い場合は、単に目的のファイルをエディターからドラッグアンドドロップしてください。
Local History は多くの開発者にとって縁の下の力持ちのような存在です。今回のリリースでこの機能が改善され、Local History ダイアログの検索フィールドを使用してローカルリビジョンから必要なテキストをすばやく検索できるようになりました。
PhpStorm 2021.2 では、新しい方法でコミットを保護できます。 このリリースでは、GPG による Git コミットの署名を有効にできるようになりました。 そのためには Settings | Version Control | Git を開き、Configure GPG Key ボタンを押すだけです。
本バージョンより、PhpStorm の UI が日本語、韓国語、および中国語に完全にローカライズされています。 ローカライゼーションはバンドル対象外の言語パックプラグインとして提供されており、IDE へ簡単にインストールできます*。 すでに 150 万人以上のユーザーが言語パックの一部ローカライズされた EAP バージョンを使用しています。 今回のリリースからは完全なローカライズ環境をご利用いただけます!
WebStorm 2021.2 のすべての新機能と改善点は、PhpStorm 2021.2 でも初期状態で、またはプラグイン Marketplace から無料のプラグインをインストールして利用できます。
PhpStorm が useState
の値と関数の両方について名前を変更できるようになりました。 キャレットを状態値に置き、⇧F6/Shift+F6 を押すか、右クリックしてコンテキストメニューから Refactor | Rename を開いてください。
PhpStorm で CommonJS モジュールを扱う際にコード補完候補を使用し、欠落している重要なインポートステートメントを追加できるようになりました。
DataGrip 2021.2 の新機能をご覧ください。掲載されているすべての機能は PhpStorm でも使用できます。 以下に掲載しているものは、そのうちのごく一部になります。
DDL データソースを実際のデータソースに基づいて生成できるようになりました。 DDL ファイルがディスク上に作成され、新しいデータソースがそれに基づいて生成されます。 これにより、常にこれらのファイルを再生成し、DDL データソースをリフレッシュできるようになります。
MongoDB コンソールにコード補完が実装されました。
PhpStorm 2021.2 で追加された多数の機能改善と強化のごく一部を以下に掲載しています。
dirname()
の階層パラメーターを新たにサポートしています。