PhpStorm 2020.2 の新機能

PHP 8 共用体型のサポート、PHP 用の新しい制御フローエンジン、Extract Class(クラスの抽出)リファクタリング、GitHub プルリクエストの完全サポート、新しい Inspection ウィジェット、OpenAPI のサポートを提供します。

PHP 8 の共用体型(Union Types)

PHP 8 と共用体型のサポートを開始しました。 PHP 8.0 ではプロパティ、引数、戻り値の型に 1 つ以上の型を宣言できるようになります。 PhpStorm はすでにこの機能を完全サポートしており、効率的な移行を支援できます。

PHPDoc をネイティブな共用体型に変換

PHPDoc をネイティブな共用体型に変換

共用体型はかつて PHPDoc 経由で提供されていましたが、PhpStorm がそのような出現箇所をハイライトするようになりました。

Alt+Enter クイックフィックスを使用すると、それをネイティブな共用体型に変換できます。

このクイックフィックスは関数の引数、戻り値の型、プロパティなど、共用体型が適用可能な場所ならどこでも機能します。 プロパティについては、デフォルト値も考慮されます。

言語レベルを PHP 8 に切り替え

言語レベルを PHP 8 に切り替え

PHP 8 関連の機能を使用可能にするには、次のいずれかの方法で言語レベルを PHP 8 に切り替えてください。

  • コードエディターで直接 Alt+Enter クイックフィックスを使用します。
  • Preferences | Languages & Frameworks | PHP を開き、PHP language level リストを使用します。
  • composer.json で PHP バージョンの要件を指定します。この場合は PhpStorm が自動的に要件を取得します。
型検証の実行

型検証の実行

PhpStorm は呼び出しを解析し、予想される型を推測し、共用体型に関する問題箇所をハイライトします。

このチェックはプロパティ、引数、戻り値など、あらゆるレベルで機能します。

複雑なコードベースでは、問題を一目で確認するのに役立ちます。 PhpStorm はコードが実行される前でも注意が必要な部分をハイライトします。

重複した型や冗長な型の検出

重複した型や冗長な型の検出

禁止されている、あるいは冗長な型の組み合わせはたくさん存在します。 例:

  • bool|false
  • Foo|Foo
  • object|User
  • iterable|array または iterable|Traversable

これらはすべて PhpStorm によって無効なものとしてハイライトされます。

null 許容型の処理

null 許容型の処理

単一の null 許容型がある場合、PHP 8 では ?Type 表記か Type|null を使用できます。

しかし、null と結合された複数の型がある場合、?Type1|Type2 の使用はあいまいであるため禁止されています。

PhpStorm はこれらの違反箇所をハイライトし、変換するための Alt+Enter クイックフィックスを提供しています。

変化ルールへの準拠

変化ルールへの準拠

PHP では継承する際、次の基本的なルールに準拠している場合は型を変更できます。

  • パラメーターの型は反変である、つまり広げることができる。
  • 戻り値の型は共変である、つまり狭めることだけが可能である。
  • プロパティの型がすべて同じであること。

幸い、PhpStorm はコードをチェックして違反箇所をハイライトするため、これらのルールを覚えておく必要はありません。

擬似型 false の使用

擬似型 false の使用

PHP 8 には、共用体型の宣言のみで使用できる特殊な false 擬似型があります。

これは strpos()array_search() のように標準ライブラリで幅広く使用されており、否定的な結果を示すために他の場所にも適用できるものです。

PhpStorm は不適切な使用箇所をハイライトし、型推論を考慮します。

冗長な PHPDoc の除去

冗長な PHPDoc の除去

PHPDoc は追加情報を提供しないため、ネイティブな共用体型を追加した後は不要になるかもしれません。

このような PHPDoc を Alt+Enter クイックフィックスを使用して除去できるようになりました。

新しい制御フローエンジン

常に true となる条件

常に true となる条件

PhpStorm は複雑なコードパスを解析し、if-else ブロック内の条件に意味があるかどうか、あるいは冗長であるかどうかを検出します。

常に結果が true となる ‘instanceof’

常に結果が true となる ‘instanceof’

条件と同様に、PhpStorm は instanceof によるチェックが適切な場合、型階層内の推論型が原因でそれらの結果が常に true になるかどうかをチェックできます。

新しいアクション: Type Info

新しいアクション: Type Info

この新しいアクションを使用すると、選択した任意の式の推論型を表示できます。

コーディング中に式を選択し、ショートカット Ctrl+Shift+PView | Type Info メニューを使用して式の型をチェックできます。

常に ‘null’ となる式

常に ‘null’ となる式

PhpStorm は変数が確実に null にしかならない状況を検出できます。 この場合、IDE は式を単純化して分かりやすくすることを提案します。

品質ツールの改善

品質ツールの改善
  • Docker Compose から様々な品質ツールを実行できるようになりました。
    そのためには、Preferences/Settings | Languages & Frameworks | PHP を開き、Docker Compose に応じて新しいリモートインタープリターを追加してください。
  • PHP-CS-FixerPHPCBF 向けの Reformat アクションも、リモートインタープリター経由で実行できるようになりました。
  • PHP_CodeSnifferruleset.xml"exclude-pattern" セクションがある場合、PhpStorm はこれを考慮して指定されたパス配下のファイルを解析しません。

Composer の改善

Composer の依存関係は、エディターの composer.json ファイル内で直接管理できます。

カスタム Satis/Packagist パッケージのサポート

カスタム Satis/Packagist パッケージのサポート

“repositories” セクションで指定されたカスタムソースがある場合、カスタムパッケージの補完を行うことができます。

ガターアイコンには、カスタムリポジトリのキャッシュの最新状態が表示されるようになりました。

複数バージョンの補完

複数バージョンの補完

パッケージに対して複数のバージョンがカンマやパイプ(||)で区切りで指定されている場合、PhpStorm はこのパッケージで利用できるすべてのバージョンを補完します。

これまでは ~^>= を入力すると候補が消えていましたが、これらの範囲制約が composer.json で期待通りに機能するようになりました。

依存関係として追加されたツールの設定にすばやくアクセス

依存関係として追加されたツールの設定にすばやくアクセス

PhpStorm はさまざまなサードパーティツールとの統合機能を提供しています。 サポート対象のツールが composer.json で宣言されている場合、レンチアイコンがガターの横に表示されるようになりました。 そのアイコンをクリックすると、環境設定の対応するセクションに直接移動できます。

Extract Class リファクタリング

Extract Class リファクタリング

あるクラスが雑然としており、あまりにも多くの役割を担っている場合、Extract Class(クラスの抽出)リファクタリングを使用してそのクラスのメソッドやプロパティを新しいクラスに移動することでリファクタリングできるようになりました。

移動対象の関数、メソッド、プロパティのいずれかを選択し、Ctrl+T を押してから Extract class を選択してください。

リファクタリングによって新しいファイルが作成され、コンストラクター内でクラスのオブジェクトがインスタンス化され、使用箇所が自動的に調整されます。

コマンドラインツールの改善

コマンドラインツールの改善

PHP コマンドラインツールでリモートインタープリターがサポートされるようになりました。

Preferences/Settings | Tools | Command Line Tool Support の下で新しいツールのエントリを追加し、構成済みリモートインタープリターを 1 つ選択してください。

Laravel Artisan も自動検出されるようになりました! このため、Laravel プロジェクトを開く場合は Ctrl-Ctrl を押してコマンドの入力を開始することができます。 PhpStorm は補完機能を提供し、使用できるコマンドの候補を表示します。

新しいインスペクション

書き込みアクセスのみで使用される配列

書き込みアクセスのみで使用される配列

コード内のどこかに宣言されて更新されるものの、読み取られることのない配列がある場合、その配列は冗長である可能性が高く、コードの可読性を損ねている可能性があります。

このインスペクションはこのような状況を検出し、問題の配列を除去してコードの可読性向上を促します。

未代入と思われる型付きプロパティ

未代入と思われる型付きプロパティ

デフォルト値が指定されていない型付きプロパティは、初期化されていないものとみなされます。 初期化されていないプロパティが読み取られると、TypeError が発生します(__get() が定義されていない限り)。

PhpStorm は初期化されていないプロパティを検出し、それらの読み取りを試みているコードをハイライトします。

GitHub プルリクエストの完全サポート

プルリクエストのワークフロー全体を PhpStorm 内で完結できるようになり、ブラウザーを切り替える必要がなくなりました。 プルリクエストの管理、タイムラインとインラインコメントの表示、コメントとレビューの送信、変更の承認に対応しています。

GitHub プルリクエストの完全サポート

GitHub プルリクエストを操作するには、ツールバーから、あるいはメインメニューのVCS | Git | View Pull Requests から Pull Requests ツールウィンドウを開いてください。

次に、リスト内のプルリクエストを選択してすべての詳細情報(メッセージ、ブランチ名、作者など)を表示します。

そこから変更されたファイルをチェックしたり、変更にコメントしたりしてレビュープロセスを開始できます(コミットレベルと行レベルの両方に対応しています)。

また、IDE を離れることなくプルリクエストをマージできるようになりました。 プルリクエストに初期状態で対応しているため、ローカルブランチを作成する必要はありません。

OpenAPI のサポート

PhpStorm 2020.2 は OpenAPI Specifications プラグインをサポートしています。 これは JetBrains が開発した無料プラグインで、OpenAPI 仕様ファイル(openapi.yaml/openapi.json および swagger.yaml/swagger.json)で補完、ナビゲーション、検証の機能を提供するものです。

OpenAPI のサポート

このプラグインは次の機能も提供します。

  • Swagger UI の統合。
  • コード生成。
  • OpenAPI 仕様間の構造的な差分を表示する組み込みの機能。
  • 仕様から HTTP クライアントのリクエストを作成するガターアイコン。
  • HTTP クライアントのエンドポイントの補完。

新しい Inspection ウィジェットと Problems ビュー

新しい Inspection ウィジェットと Problems ビュー

エディター右側には、現在ファイル内の問題箇所の概要を表示する新しい Inspections ウィジェットが表示されます。

  • 矢印をクリックすると、問題箇所の間を移動できます(ショートカット F2 / Shift+F2 も使用できます)。
  • ウィジェットをクリックすると、ファイル内のすべての問題箇所が Problems ツールウィンドウにリストで表示されます。
  • ウィジェットの上にマウスを移動すると設定ポップアップが表示され、ハイライトする問題箇所を選択できます。

ウェブテクノロジー

WebStorm 2020.2すべての新機能と改善点は、PhpStorm 2020.2 でも初期状態で、またはプラグインリポジトリで入手可能な無料のプラグインを使って利用できます。

Prettier を JavaScript プロジェクトのデフォルトフォーマッターに指定

組み込みのフォーマッターの代わりに Prettier を使用してコードを整形したいですか? このアップデートでは、以前よりもはるかに簡単にそれを実現できるようになりました。 新しい On code reformat チェックボックスをオンにするだけで、IDE が .js / .ts / .jsx / .tsx ファイルの整形に Prettier を使用するようになります。 その他のファイルタイプも簡単に追加できます。

最高水準の Vue.js サポート

私たちは過去 1 年間で Nuxt.js のサポート、Vue 固有のコードスタイル設定、TypeScript プロジェクトでの Vue 関連の改善、およびその他多数の機能改善を行いました。 PhpStorm の Vue サポートがかつてないほど高度になりました!

JavaScript 向けの新機能で時間を節約

新しい高度なインテンション(Alt+Enter)は、一部のアクションをより高速に実行するのに役立ちます。 例えば、数字インデックスを使った for ループを forEach 配列メソッドにすばやく変換できます。 また、エディター内に JavaScript および TypeScript ファイル内のドキュメントコメントが直接表示されるようになったため、これらのコメントを参照するのが楽になり、集中力の低下を最小限に抑えられるようになりました。

バージョン管理

WSL 2 にインストールされた Git のサポート

WSL 2 にインストールされた Git のサポート

PhpStorm 2020.2 は Linux および Windows ファイルシステムに存在するプロジェクトを処理するため、WSL2 にインストールされた Git をサポートしています。

この IDE はプロジェクトの場所に応じて Git 実行可能ファイルを切り替えることができます。 プロジェクトが WSL から(\\wsl$ パス経由で)開かれている場合、IDE は自動的に WSL から Git に切り替わります。また、IDE 内ではすべての Git 関連機能を使用できます。

新しいブランチ比較用 UI

2 つのブランチを比較してお互いに属さないコミットを確認する場合、PhpStorm 2020.2 はGit ツールウィンドウではなくエディター内にログを表示します。 これによって十分なスペースが確保され、すべての情報を表示できるようになります。

Git Branches ポップアップメニュー VCS | Branches から Compare with Current アクションを選択してください。

Drop Commit アクション

Drop Commit アクション

冗長なローカルコミットを Git ツールウィンドウの Log タブで選択し、コンテキストメニューから Drop Commit を選択することで、それらを簡単に除去できるようになりました。

ローカルコミットの squash

ローカルコミットの squash

プッシュ前に履歴を整理する目的などで複数のローカルコミットを 1 つのコミットにまとめることもできます。

Git ツールウィンドウで、複数のコミットを選択してコンテキストメニューから Squash Commits… を選択してください。

IDE が裏側で対話的な rebase の処理を実行します。

データベースツール

DataGrip 2020.2 の新機能をご覧ください。掲載されているすべての記事は PhpStorm でも使用できます。

セルの値を独立したエディターで操作

セルの値を独立したエディターで操作

セル内に巨大な値がある場合に、それを独立したパネルで表示または編集できるようになりました。 また、右側のツールバーを使用してソフトラップモードを切り替えられるようになりました。 コードエディターのすべての機能をデータの確認や編集に活用してください。

Google BigQuery 言語

Google BigQuery 言語

新しい SQL 言語、Google BigQuery を追加しました。 BigQuery はまだ完全にサポートされていませんが、部分的なサポートから開始します。 現在のところ、PhpStorm はGoogle BigQuery を使用している場合にクエリを正確にハイライトし、コーディング支援機能の提供を開始しました。

DML プレビュー

DML プレビュー

変更を表すクエリをデータエディター内でレビューできるようになりました。 保留中の変更がある場合には DML ボタンが有効になります。 PhpStorm は JDBC ドライバーを使用してテーブルを更新するため、このクエリはデータ変更用の正確な SQL ではありませんが、ほとんどの場合は同じものになります。

その他の改善

  • getter と setter のカスタマイズ
  • 単一ウィンドウで複数プロジェクトをResolve
  • 新しいアクション: Add Carets to Ends of Selected Lines(選択範囲の各行の末尾にキャレットを追加)