PhpStorm 2021.1 の新機能

PhpStorm 2021.1 では大規模な更新が行われています。PHP / HTML ファイルに対応したプレビュー機能に加えて、バグの予防に役立つ 20 種類以上の新しいインスペクションを追加しました。また、すべてのサブシステムを改善し、Code With Me によるペアプログラミングに対応しました。

PHP

ステータスバーで PHP の言語レベルを設定

ステータスバーで PHP の言語レベルを設定

composer.json を変更することなく、プロジェクトに対して任意の PHP バージョンを設定できるようになりました。 これは、新しい PHP バージョンに実際に移行する前にコードベースの互換性を確認したい場合などに役立ちます。

PHP 設定の確認が簡単に

PHP 設定の確認が簡単に

PHP 関連の設定をより簡単に探して変更できるよう、対応するセクションをトップレベルの Settings / Preferences | PHP に移動しました。

エディターでの PHP / HTML ファイルのプレビュー

PhpStorm 内部でファイルをプレビューするためのタブを開く新しいアイコンをエディターの右上に追加しました。 このプレビューは、HTML / PHP ファイルに対応しています。

PHP ファイルを開いてコードを入力すると、即座に結果がプレビューに反映されます。 他のウィンドウに切り替える必要はありません! リンク先の CSS / JavaScript ファイルの変更は、プレビューにも反映されます。

エディターでの PHP / HTML ファイルのプレビュー

PhpStorm は Settings/Preferences | PHP のプロジェクト設定で指定されたローカル PHP インタープリターを使用します。 Docker やその他のリモートインタープリターはサポートされていません。

Preferences | Tools | Web Browsers で 1 つ以上のブラウザーを有効にして For HTML files チェックボックスにチェックを入れると、プレビューアイコンをオンにできます。

Alt+F2 のショートカットでプレビュータブを開くこともできます。

SQL クエリでのテーブル接頭辞の使用

多くのコンテンツ管理システムやフレームワークでは、複数のアプリケーションで同じデータベースを使用する場合に役立つテーブル接頭辞を指定することができます。

SQL クエリでのテーブル接頭辞の使用

旧バージョンの PhpStorm では SQL クエリに接頭辞のマーカーが含まれていたため、このようなケースでデータベースとの連携が失われていました。

このバージョンから、.phpstorm.meta.php ファイルで接頭辞を指定できるようになりました。 メタファイルと SQL 接頭辞の指定方法に関する詳細は、ヘルプ記事を参照してください。

インスペクションとクイックフィックス

ブール式を単純化できます

ブール式の単純化

ブール式に true または false リテラルが含まれている場合、PhpStorm はそれを単純化するのを支援します。 Alt+Enter クイックフィックスを使用すると、冗長なロジックを排除して可読性を向上させることができます。

互換性のない型でのオペランドの厳密な比較

互換性のない型でのオペランドの厳密な比較

厳密な比較に使用される === 演算は、一方のオペランドの型が他方と同じでない場合は常に false を返します。

PhpStorm はこのようなケースを潜在的なバグの原因とみなし、ハイライトします。 PhpStorm はすべての型推論情報を考慮し、不明瞭なケースで問題を検出するのを支援します。

PHP 8: 関数呼び出しに記述された代入を名前付き引数に置換

PHP 8: 関数呼び出しに記述された代入を名前付き引数に置換

以前は関数呼び出しに変数の代入を記述し、パラメーター名の代わりにするのは一般的な手法でした。

PHP 8 では、Alt+Enter でそのような代入を実際の名前付き引数に置換できます。

`isset` を合体演算子に置換

`isset` を合体演算子に置換

このコードスニペット isset($a) ? $a : $b;$a ?? $b とまったく同じであるため、PhpStorm はこれを置換する Alt+Enter クイックフィックスを提案します。

`if` ブロックを共通の本文で単純化

`if` ブロックを共通の本文で単純化

本文の内容が同じになるような変更を行った後、if または else ブロックが冗長になる場合があります。 PhpStorm は共通部分の抽出またはブロックのマージを提案します。

`if` ステートメントの反転

`if` ステートメントの反転

`if`Alt-Enter を押し、メニューから Invert `if` statement を選択します。 すると、条件が反転され、ロジックを維持するために必要なコードの調整が実行されます。 早期リターン手法がお好みであれば、このアクションがコードのリファクタリングに役立つでしょう。

‘use’ ステートメントの先頭にある不要な ‘\’

‘use’ ステートメントの先頭にある不要な ‘\’

名前空間の先頭にあるバックスラッシュが冗長になっている場合があります。 PhpStorm はそのようなバックスラッシュを除去可能かどうかを判断するのに役立ちます。

定義済みの変数をオーバーライドする `foreach` 変数

定義済みの変数をオーバーライドする `foreach` 変数

foreach ループ内のキーと値の変数が、他の変数やパラメーターの名前と競合する場合があります。 PhpStorm は、エラーが発生しうるすべての箇所をハイライトします。

変数に不要な波括弧構文

変数に不要な波括弧構文

PhpStorm は、文字列補間に含まれる冗長な波括弧を安全に除去してコードを整理できる場合にハイライトを表示します。

パラメーターの型をデフォルト値の型に合わせて変更

パラメーターの型をデフォルト値の型に合わせて変更

宣言されている型が値の型と一致していない場合、Alt+Enter でその型をすばやく更新できます。 あるいは PHP 8 の場合、PhpStorm は共用体型の使用を提案します。

`isset` を `!== null` に置換

`isset` を `!== null` に置換

isset() 関数を有効に使用できるのは、配列と変数に限ります。 その他すべての場合は、オペランドが null でないかどうかを検証するのが適切です。 Alt+Enterisset() チェックを null チェックに置換できます。

危険な http:// リンクのハイライト

PhpStorm は文字列内にある http:// プロトコルの使用箇所をハイライトし、それを Alt-Enterhttps:// に変更するクイックフィックスを提供します。 クイックフィックスを使用して URL を無視リストに追加することもできます。

疑わしい名前の組み合わせ

疑わしい名前の組み合わせ

PhpStorm は $needle$haystack、または $x$y といった典型的なパラメーター名と戻り値の誤用をハイライトします。 このような誤用は潜在的なバグの原因になったり、コードを読む人を困惑させたりする可能性があります。

コミット前インスペクションの構成

コミット前インスペクションの構成

VCS に変更をコミットする前にコードインスペクションプロファイルを選択できるようになりました。 歯車アイコンをクリックしてコミットオプションを表示し、Analyze code(コードの解析)チェックボックスにチェックを入れ、Configure(構成)をクリックしてから目的のプロファイルを選択してください。 プロファイルは、Preferences / Settings | Editor | Inspections で作成できます。

その他

合成スコープによるリファクタリングの強化

合成スコープによるリファクタリングの強化

PHP のループ構文(foreach / for / while / catch ブロックなど)ではスコープが分離されていません。 ブロック内の変数のみを名前変更したい場合、これでは都合が良くありません。

PhpStorm 2021.1 では、このようなブロックのために合成スコープが導入されています。このため、Rename リファクタリング(Shift+F6)をより直感的に実行できるようになります。

自動言語インジェクションの改善

自動言語インジェクションの改善

PhpStorm 2021.1 は変数の使用状況を解析し、言語の参照を自動的に挿入します。

例えば、ある変数が preg_* 関数で使用されている場合、PhpStorm はそれがパターンであることを認識して正規表現をハイライトします。

composer.json の `suggest` セクションにある拡張機能

composer.json の `suggest` セクションにある拡張機能

PhpStorm が require および suggest セクションの両方で拡張機能を考慮するようになりました。

PhpStorm は、ある拡張機能が composer.json で推奨扱いで登録されているものの、extension_loaded() または function_exists() のようにチェックなしで使用されている場合に警告を表示します。 クイックフィックスを使用して、このような拡張機能を require/require-dev に移動できます。

注目すべき修正点

このリリースでは、主に安定性と品質に焦点が当てられました。 ユーザーと JetBrains のチームメンバーが課題トラッカーに投稿した課題のうち、合計で 2246 件を解決しました。 その中でも特に注目すべきものを以下に掲載しています。

  • Docker で WSL 2 プロジェクトをデバッグできるようになりました。
  • 品質ツールが、exec モードの docker-compose でパスを適切に解決できるようになりました。
  • 大容量ファイル(5,000 行以上)が適切に処理されるようになりました。
  • 多数のエイリアスを含むプロジェクトのパフォーマンスを大幅に改善しました。

Code With Me

Code With Meによる共同開発

Code With Me は、JetBrains の共同開発およびペアプログラミング用のツールです。 このツールは PhpStorm 2020.3 で始めて導入されましたが、今回のリリースでは多数の重要な改善が行われています。

プロジェクトに必要なアクセスレベスを設定し、ゲストにリンクを共有できます。 相手は共同作業を行うために、IDE をインストールする必要すらありません。また、このプラットフォームには組み込みの音声通話とビデオ通話のほか、チャットメッセージング機能も備わっています。

特にセキュリティに対する配慮が必要な企業の場合、オンプレミス版の Code With Me を社内のプライベートネットワークにインストールして安全に運用できます。

HTTP クライアント

SSL のサポート

SSL のサポート

HTTP クライアントで Add environment file(環境ファイルの追加)をクリックして Private を選択することで、SSL 設定を定義できるようになりました。 IDE は SSL 構成を追加可能なファイルを自動的に作成します。具体的には、clientCertificate / hasCertificatePassphrase / clientCertificateKey / verifyHostCertificate です。

UI の改善

UI の改善

本文の表示方法を決めるオプションを含む、新しい瞳のアイコンが追加されました。 Text / JSON / HTML / XML 間でモードを切り替えたり、行番号を有効化したりできます。また、Copy Response Body to Clipboard(応答本文をクリップボードにコピー)をすばやく実行するための新しいボタンが追加されています。

IDE

分割表示でのタブの最大化

分割表示でのタブの最大化

IDE のウィンドウの端にタブをドラッグすると、エディターが分割されます。 その後、タブをダブルクリックすると、そのタブに合わせてエディター領域が最大化されます。 タブをダブルクリックすると、元のサイズに戻ります。

JSONPath のサポート

JSONPath のサポート

JSONPath クエリ言語を使用し、JSON ドキュメント内を検索できます。 新しいアクションは、Edit | Find | Evaluate JSONPath の下にあります。

JSON Lines フォーマットのサポート

JSON Lines フォーマットのサポート

PhpStorm now supports the newline-delimited JSON Lines format used for working with structured data and logs. IDE は .jsonl.jslines.ldjson.ndjson のファイルタイプを認識します。

タイポグラフィ設定

タイポグラフィ設定

フォントのバリエーションやフォールバックフォントを調整できるようになりました。 この新しいオプションは、Settings / Preferences | Editor | FontsTypography Settings にあります。

ウェブテクノロジー

WebStorm 2021.1すべての新機能と改善点は、PhpStorm 2021.1 でも初期状態で、またはプラグイン Marketplace から無料のプラグインをインストールして利用できます。

Stylelint のサポート改善

Stylelint のサポート改善

数回クリックするだけで、Stylelint を使用して CSS の問題を解決できるようになりました。 ファイル内の問題箇所にマウスカーソルを合わせるか、キャレットを配置したあと、Alt+Enter を押してから Stylelint: Fix current file(Stylelint: 現在のファイルを修正)を選択するだけです。

また、Settings / Preferences | Languages & Frameworks | Style Sheets | Stylelint で構成ファイルのパスを指定できるようになりました。

セレクターの詳細度をチェック

セレクターの詳細度をチェック

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. あるいは、セレクターにフォーカスがある状態で F1/Ctrl+Q を押し、この情報を Documentation ポップアップに表示することもできます。

GitHub プルリクエスト関連の改善

新しいプルリクエストを作成するには、+ アイコンをクリックするか、Git | GitHub | Create Pull Request を開いてください。

GitHub プルリクエスト関連の改善

新しいダイアログには、次のように必要だと思われる機能がすべて搭載されています。

  • 使用可能なすべてのブランチを含むリストから base ブランチと head ブランチを選択できます。
  • Files タブで変更されたファイルをレビューできます。
  • プルリクエストのタイトルおよび説明の編集、レビュー担当者と担当者の割り当て、ラベルの追加を行うことができます。
  • プルリクエストの下書きを作成できます。

データベースツール

DataGrip 2021.1 の新機能をご覧ください。掲載されているすべての機能は PhpStorm でも使用できます。 以下に掲載しているものは、そのうちのごく一部になります。

権限付与用の UI

権限付与用の UI

データベースエクスプローラーのユーザーに対して Cmd/Ctrl+F6 で呼び出せる Modify user(ユーザーの変更)ウィンドウに、オブジェクトに対する権限を付与するための UI が実装されました。

この UI は、PostgreSQL / Redshift / Greenplum / MySQL / MariaDB / DB2 / SQL Server / Sybase に対応しています。

コンテキストライブテンプレート

コンテキストライブテンプレート

これは、単純なステートメントをデータベースエクスプローラーから直接生成できるソリューションです。 エクスプローラーでオブジェクトを右クリックすると、特殊なライブテンプレート項目を含むリストが表示されます。

詳細については、「独自のコンテキストライブテンプレートを作成する方法」を参照してください。