PyCharm 2024.3 の新機能

AI プロンプトのインライン入力、および dataclass_transform デコレーターのコーディング支援

AI Assistant

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

エディター内で直接 AI にプロンプトを送信

ほとんどの作業に使用するエディター内で AI Assistant と対話できます。コードのエラーで行き詰まっていますか?ドキュメントやテストを追加する必要がありますか?エディターで新しい行にリクエストの入力を開始しましょう。 PyCharm が自然言語によるリクエストを自動的に認識し、回答を生成します。新しい行にインデントがある場合は、リクエストの前に $ または ? 記号を追加してください。

PyCharm は AI Assistant が変更した行をその横のガター内に紫色で示すため、更新内容を簡単に確認できます。

最初の候補が気に入らない場合は、Tab を押すと新しい候補が生成されます。ガターの紫色の部分をクリックするか、Windows で Ctrl+\ または macOS で Cmd+\ を押すだけで、最初の入力を調整することもできます。

この機能は、Python、JavaScript、TypeScript、JSON、および YAML ファイルで使用できます。

インラインプロンプトのコンテキストを絞り込む

特定の引数に関する支援が必要ですか? AI Assistant が回答に使用するコンテキストを必要に応じて絞り込むことができます。関連するコンテキストにキャレットを置き、$ または ? 記号を入力してからプロンプトを書き始めてください。 PyCharm がプロンプトを認識し、現在のコンテキストを考慮して候補を生成します。

ドキュメントの生成

PyCharm が docstring 書式を検出した際に Generate with AI Assistant(AI Assistant で生成)インレイヒントを表示するようになりました。この機能により、AI を利用してドキュメントの生成作業を高速化できます。

コンテキスト管理の改善

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

チャットモデルプロバイダーの選択オプション

優先する AI チャットのモデルを Google Gemini、OpenAI、またはマシン上のローカルモデルから選択できるようになりました。この選択肢の拡大により、特定のワークフローに合わせて AI チャットの回答をカスタマイズできるようになり、より適合性の高いパーソナライズされたエクスペリエンスを得られるようになりました。

Python コンソールの AI チャットからコードを実行

Python コンソールの AI チャットからコードウィンドウの内容を実行するだけで、AI Assistant が提案したコードをより素早く繰り返せるようになりました。コードウィンドウの右上にある緑色の Run(実行)ボタンをクリックすると、提案されたコードの動作を確認できます。

PyCharm ドキュメントへすぐにアクセス

AI Assistant が最新の PyCharm ドキュメントを基に PyCharm 内で特定のタスクを実行する最善の方法を提案できるようになりました。 /docs コマンドを使用すると、タスクを最も効率よく達成する方法に関するカスタムヒントを得られます。

プロンプト内の DataFrame と変数を認識する機能

AI Assistant がノートブック内の DataFrame と変数を扱えるようになりました。 DataFrame か変数の前で # を使用するだけで、AI Assistant がその解析を支援します。 AI Assistant は DataFrame の概要と統計に直接アクセスするため、可能な限り最適な結果を提供できます。

また、チャットから Jupyter ツールウィンドウの Variables(変数)ビューに直接移動できます。 DataFrame か変数のメンション内の紙クリップアイコンをクリックするだけで移動できます。

for ループからリスト内包表記への変換

AI Assistant が大量のfor ループをリスト内包表記に変更することで、より高速にコードをリファクタリングできるようになりました。この機能はネストしたループや while ループを含むすべての for ループに使用できます。

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

AI Assistant で SQL クエリの実行エラーを処理するため、いくつかの便利なアクションを実装しました。 PyCharm が各エラーメッセージの右端に Explain with AI(AI で説明)と Fix with AI(AI で修正)という 2 つのアクションを表示するようになりました。

Explain with AI(AI で説明)を使用すると AI チャットが開いて自動プロンプトが送信され、AI Assistant によるエラーの説明が表示されます。

Fix with AI(AI で修正)は、クエリ実行エラーに対する修正をエディター内に生成します。

これら 2 つの新しいアクションは、Fix SQL Problem Under Caret(キャレット位置の SQL の問題を修正)と Explain SQL Problem Under Caret(キャレット位置の SQL の問題を説明)と同じように動作します。

この機能が適切な説明と修正を提案できるようにするには、データベーススキーマの添付が必要です。

ローカルの複数行 AI コード補完 PyCharm Pro

PyCharm Pro が行全体コード補完に使用される JetBrains 独自の ML モデルを基にローカルの複数行 AI コード補完を提供するようになりました。なお、モデルのトレーニングにユーザーのデータは使用されません。

ローカルの複数行コード補完は通常、ループ内、条件の処理時、または一般的なコードパターンやボイラープレートセクションの補完時など、連続する論理ステップの次の処理を予測できる場合に 2~4 行のコードを生成します。

Python

dataclass_transform デコレーターのコーディング支援(PEP 681

dataclass_transform デコレーターを使用するライブラリ経由で作成されたカスタムデータクラスを扱う際、IDE が標準のデータクラスに対して提供されているすべてのインテリジェントなコーディング支援を提供するようになりました。たとえば、コンストラクターシグネチャーの属性と型推論でコード補完を使用できます。

Jupyter Notebook PyCharm Pro

複数パッケージの自動インストール

PyCharm 2024.3 では、コードにインポートされたパッケージのインストールがより簡単になりました。一括自動インストールが可能な新しいクイックフィックスが提供され、ワンクリックで複数のパッケージをダウンロードしてインストールできるようになっています。

Jupyter コンソールで特定の行を実行する機能

PyCharm の Jupyter コンソール内でセル全体ではなく、選択したコード行を直接実行できるようになりました。この機能によって特定のコードのデバッグや出力の確認をより迅速に行いやすくなったため、ワークフローの柔軟性と効率が向上します。

Jupyter のテーブル出力を Data View(データビュー)ウィンドウで開く機能

ヒートマップ、整形、スライス、および AI 機能などの強力な機能を使用して高度な DataFrame 解析を行えるようにするため、Jupyter のテーブル出力を Data View(データビュー)ツールウィンドウに表示できるようにしました。 Open in Data View(データビューで開く)アイコンをクリックすると、作業を開始できます。

ローカルの変数と関数の名前をインラインで変更

ローカルの変数、関数、およびシンボルの名前をダイアログを開かずにエディター内で直接変更できるようになりました。名前を変更するエンティティを選択し、Shift+F6 を押すだけです。

Data View(データビュー)PyCharm Pro

データのノーコード絞り込み

コードを 1 行も書かずに Data View(データビュー)ツールウィンドウと DataFrame のデータをフィルターで絞り込めるようになりました。ツールウィンドウか DataFrame の右上にある Filter(フィルター)アイコンをクリックし、使用するフィルターオプションを選択します。フィルター結果は同じウィンドウですぐに確認できます。

この機能は pandas、Polars、NumPy、PyTorch、TensorFlow、Hugging Face Datasets など、サポートされているすべての Python フレームワークで使用できます。

ユーザーエクスペリエンス

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

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

インデックス作成中のスペルと文法のチェック

2024.2 リリースでの進捗を基に、プロジェクトモデルのビルド中とインデックス作成中に使用できる基本機能の数を増やしています。バージョン 2024.3 では、インデックス作成が行われている場合でも、スペルと文法のチェックを使用できるようになりました。これにより、インデックス作成の終了を待たずに、Markdown ドキュメントやドキュメントタグなどに含まれるエラーを検出できます。

Rename(名前の変更)アクションの場所の最適化

エディター内と Project(プロジェクト)ツールウィンドウで要素に対して Rename(名前の変更)アクションを呼び出した際のコンテキストメニューで、アクションを表示する場所を最適化しました。アクションが最上位階層に表示されるようになったため、マウス操作をよく使用するユーザーがファイル、変数、およびその他の要素の名前を素早く変更しやすくなりました。

Run(実行)ウィジェット: 複数の構成を同時に起動するオプション

更新された Run(実行)ウィジェットでは、ポップアップ内で Ctrl を押したまま Debug(デバッグ)アイコンをクリックすると、複数の構成を同時に起動できるようになりました。また、ウィジェットにはすべての実行中の構成に対するコントロールが表示されるため、ステータスの明確な概要を提供し、管理が単純化されています。

デフォルトのタブ数上限の引き上げ

エディター内のデフォルトのタブ数上限を 30 に引き上げました。これにより、開いたままにできるタブの数を増やせるようになりました(ただし、最終使用時間が最も古いタブは IDE によって閉じられます)。この設定は、Settings(設定)| <0>Editor(エディター)| <0>General(一般)| <0>Editor Tabs(エディタータブ)で制御できます。

デバッガー

デバッグポートの指定 PyCharm Pro

PyCharm ですべての通信に対して 1 つのデバッガーポートを指定できるようになったため、Docker や WSL などの制限された環境でのデバッグが簡単になりました。デバッガーの設定でこのポートを設定すると、デバッガーがサーバーとして実行され、デバッガーと IDE 間のすべての通信がこの指定されたポートを経由するようになります。

データベース PyCharm Pro

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

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

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

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

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

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

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

ウェブ開発 PyCharm Pro

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

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

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

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

VCS

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

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

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(コミット完了後に高度なチェックを実行する)オプションを使用することで、コミット処理中のバックグラウンドチェックを管理できるようになりました。この設定により、コミット後にテストとインスペクションを実行するかどうかを決定できます。コミットが行われる前にこれらのチェックを完了する場合は、このオプションを無効にしてください。

フレームワークとテクノロジー PyCharm Pro

HTTP クライアントに関する更新

PyCharm 2024.3 には HTTP クライアント内で $env.ENV_VAR 構文を使用し、環境変数に直接アクセスできる機能が導入されています。これにより、リクエストとスクリプト内で変数を管理し、使用する際の柔軟性が高まっています。また、インクルードされた .http ファイル内のリクエストを(まとめて、または名前を指定したもののみ)を実行し、変数をオーバーライドできるようになりました。

Dev Container のサポートの強化

Dev Container ビルドはリモート Docker エンジンでよりスムーズに動作し、ローカルディレクトリがリモートでアクセスできない場合のエラーを防止できるようになりました。イメージビルドの改善と信頼できる接続により、WSL の安定性も強化されています。

devcontainer.json ファイルは features をより一貫して処理し、新しい updateRemoteUID オプションは、正しいユーザー ID を設定することで、アクセス競合を回避します。 Dev Container の IDE の設定は、devcontainer.json ファイルまたは Add currently modified settings from IDE(IDE から現在変更されている設定を追加する)ボタンを使ってカスタマイズでき、すべての使用可能なオプションが自動補完されます。

新しいターミナルの改善 ベータ

新しいターミナルでは、コマンド処理の強化と UI の位置合わせの向上により、よりスムーズで直感的なエクスペリエンスを得られるようになりました。ターミナルの応答性が高まり、プロンプトをより素早く処理できるようになっています。ワークフローが中断しないようにタブ全体で一貫した状態が維持されるようになったため、セッションの切り替えも円滑です。自動補完はコマンド名、フラグ、およびパスにより素早くアクセスできるようになったため、手動による入力量が削減されます。また、プロンプトのスタイル、セッション名、環境変数など、追加のカスタマイズオプションも導入されたため、ターミナル環境をより細かく制御できます。

Kubernetes クラスターのログ

PyCharm で開発者のみならず、DevOps や SRE チームにも不可欠なストリーミングとパターンマッチングに対応したクラスター全体の Kubernetes ログにアクセスできる機能が提供されるようになりました。この機能を使用すると、Pod、ノード、およびサービスのすべてのイベントをまとめて表示できるため、個々のログを手作業でチェックすることなく問題を素早く発見できます。リアルタイムストリーミングで即座に診断を行い、パターンマッチングでメモリ不足の問題や異常なネットワークアクティビティなどの重要なイベントやエラーの検出を自動化できます。この機能の詳細とその使用方法については、こちらのブログ記事をご覧ください。

Docker Compose の改善点

PyCharm 2024.3 では Docker Compose の拡張サポートが提供されます。 env_file 自動補完では .env ファイルが優先されるようになったため、環境のセットアップをより高速に行えるようになりました。新しいビルドオプション(cache_tono_cachetags、および platforms)により、キャッシュとプラットフォームターゲットに対する制御をより細かく行えるようになっています。 depends_on.requireddepends_on.restart の処理が強化されたことで、依存するコンテナーの始動と終了の順番をより効果的に管理できます。

deploy.placement.preferencesdeploy.resources.pidsdeploy.resources.reservations.devices などの新しいキーにより、柔軟なサービスの配置とリソースの制限が可能です。マルチコンテキストビルドと特権付きビルドは build.additional_contextsbuild.privileged によってサポートされました。

その他のオプションには、cgroup 構成、カスタム extra_hosts マッピング、healthcheck.start_interval などがあります。強化されたポートの設定と secrets.environment によって、環境変数によるシークレット管理が合理化されています。

OpenTofu および Terraform に関する機能強化

OpenTofu がサポートされるようになりました。この更新には、暗号化メソッド、鍵プロバイダー、および不明な参照のインスペクションの自動補完が含まれます。

Terraform の実行構成アクションが Search Everywhere(どこでも検索)でアクセスできるようになり、IDE は未使用の変数とローカル変数を自動的に検出し、コードをクリーンに保ちます。 InitValidatePlanApply、および Destroy の制御が改良され、Run Configuration (実行構成)フォームが合理化されました。また、使用箇所のインジケーターと未使用のリソースの警告が改善されたことで、移動操作が強化され、非アクティブなコードを特定しやすくなりました。