PyCharmの新機能

PyCharm 2019.3ではJupyterノートブック用の対話型ウィジェット、MongoDBサポート、およびすべてのPython 3.8機能用のコード支援が実装されました。

Proのみ の注意書きのある機能は、PyCharm Professionalエディションのみでサポートしています。

Jupyter Proのみ

対話型ウィジェット

対話型ウィジェット

対話性を高めるため、Jupyterノートブックは対話型ウィジェットとして知られる対話型のコントロールをサポートしています。 これらのコントロールを使用すると、静的なノートブックを対話型のダッシュボードに変え、あなたのノートブックを表示する人が表示をカスタマイズできるようになります。 今回のアップデートにより、PyCharmで対話型ウィジェットがサポートされるようになりました。 つまり、出力結果とウィジェットが描画され、それを使用してネイティブなJupyterノートブックのようにノートブックを操作することができます。

今回PyCharmは一般的なウィジェットライブラリをサポートするようになりました。 使用しているライブラリが動作しない場合は、課題の投稿をお願いします。

ランタイム補完

ランタイム補完

PyCharmが提供するメリットの一つに、弊社の高度な静的コード解析アルゴリズムにより可能となったインテリジェントなコーディング支援があります。 しかし、Pythonのように動的な言語の場合、静的コード解析だけで十分とは限りません。 そのため、今回のアップデートはJupyter自身が提供するランタイム情報を活用することで機能を拡張しました。 その結果、IDEが静的な解析を使用しても型を推測できない辞書インデックスや深くネストした式のような一部のケースで、よりスマートにコードを補完できるようになりました。

出力パネルの拡大・縮小

出力パネルの拡大・縮小

プレビューのフォントサイズをエディタに合わせて設定したり、設定でカスタマイズしたりできるようになりました。 また、プレビューでエディタの `Change font size (Zoom) with Ctrl+Mouse Wheel `(Ctrl+マウスホイールによるフォントサイズの変更)オプションが考慮されるようになりました。 このオプションが有効な場合は、Ctrlを押したままマウスホイールを使用してプレビュー内のフォントサイズを拡大・縮小できます。

その他の改善

  • JupyterノートブックがIDEの外で変更された場合(ネイティブなJupyterのインターフェースなどを使用した場合など)、IDEはその状態を自動的に同期してノートブックの最新版を表示し、変更が失われないようにします。

Python

ファイルパスの補完

ファイルパスの補完

ファイル名を入力する際に入力ミスをしてしまうのではないかと不安に思いませんか? 特に、`open(‘data/survey_data_28112019_exported.csv’)` といった長いファイル名を入力する際にそう思いませんか? このバージョンから、Pythonのコードエディタやコンソールでファイルパスが補完されるようになりました。 コンテキストを認識するコード補完機能を拡張しましたので、ファイル関連のコンテキストで文字列リテラルにファイルパスの候補が表示されるようになりました。

相対インポートのサポート

相対インポートのサポート

絶対インポートよりも相対インポートをお好みですか? PyCharmはこれら2つのスタイル同士を自動的に変換できるようになりました。 すでにあるパッケージから相対インポートを使用してインポートを行っている場合、当該パッケージからの新しいインポートも自動的に相対インポートとして作成されるようになります。

Python 3.8:TypedDict

Python 3.8:TypedDict

PyCharmがTypedDictをサポートするようになったため、辞書に対する不適切な値の割り当てを防止できるようになりました。 キーと値のペア構造を正確に表現できるようになり、コードエディタにこれらのペア構造の適切な使用を支援してもらうこともできます。

Python 3.8:Literal型の注釈

Python 3.8:Literal型の注釈

特定の文字列リテラルを引数に取るメソッド(`open` のファイルモードなど)を使用していますか? Python 3.8の `Literal` 型の注釈を使用すれば、型だけではなく特定の値をチェックすることができます。 サポートされていない値を使用して関数が呼び出された際、PyCharmが警告を表示するようになりました。

pytestテストの自動作成

pytestテストの自動作成

当社のテスト作成ツールが自動的にアップグレードされ、pytestもサポートできるようになりました。 このアップグレードに伴い、メソッド宣言部のコンテキストメニューで Go To | Test オプションをクリックするだけでPyCharmが自動的にpytestテストを作成できるようになりました。

デバッガ:コレクションのサイズ情報

デバッガ:コレクションのサイズ情報

デバッグ中の追跡情報は、可能な限り明確かつ詳細であるべきです。 このため、変数ビューを微調整し、より系統立った包括的なデータを表示できるようにしました。 この変更により新しい順序づけ、科学配列の視覚的表現の改善、コレクション長の表示、重複情報の削除が期待されます。

その他の改善

  • 現在、ネットワークスクリプトを処理していますか、あるいはハードウェアと連動して16進数値や2進数値を使用していますか? そのような方に朗報です! PyCharmの変数ビューを通してコンソールやデバッガから10進数の値形式を16進数や2進数の形式に直接変換できる機能が実装されました。
  • Windows上でLinux向けに開発をしていますか? Windows Subsystem for Linux 2を新たにサポートしました。 PyCharmでWSL 2から利用可能なPythonインタプリタを構成Proのみ

パフォーマンスの改善

インデックス生成の高速化

インデックス生成の高速化

PyCharmの高度なコードインサイトを使用すれば、作業をより早く完了させることができます。 この機能を活用するには、コードとインポート対象の全パッケージの両方のインデックスを生成する必要があります。 多くデータサイエンス関連のパッケージのようにコンパイル済みの拡張機能を含むパッケージを使用する場合、そのパッケージのインデックスを生成する前にPythonインターフェースを記述するPythonスケルトン(スタブファイル)を生成する必要があります。 今回のリリースではこの処理が改善され、インデックス生成処理が少なくとも25%高速化されました。 もちろん、複数のvirtualenvで同じパッケージを使用する場合は生成済みのインデックスが再利用されます。

フリーズの削減、フリーズの報告方法の改善

フリーズの削減、フリーズの報告方法の改善

残念ながら、コードの作業に戻る前にPyCharmのUIがフリーズしてしまうことがあります。 当社はこの問題を非常に不快なものであると認識しており、フリーズの削減に一生懸命に取り組んでいます。 このリリースではUIのフリーズを引き起こす可能性のある多数の問題を修正し、IDEから直接UIのフリーズを即座に報告できる機能を追加しました。これにより、当社がフリーズの原因を調査し、その再発を確実に防止できるようになるはずです。 PyCharmでのUIフリーズを解消するため、ご協力をよろしくお願いいたします!

その他の改善

  • 今年、当社はあらゆるJetBrains IDE製品の起動処理を高速化するために多大な努力を払ってきました。 バージョン2019.3ではコアプラットフォームの起動時間がさらに改善されています。また、今後も継続的に各種IDEの起動高速化に取り組む予定です。
  • IDEを再起動せずにテーマを変更できるようになりました。 プリインストールされたテーマを選択する際や、新しいテーマをダウンロードした直後の両方に対応しています。
  • PyCharm 2019.3ではイベントの処理や無視ファイルの操作に関するさまざまな改善が行われ、バージョン管理ステータスの更新が高速化されています。
  • エディタの描画方法に変更を加えることで、長いファイルのスクロール操作がかなりスムーズになりました。

データベースのサポート Proのみ

MongoDBのサポート

MongoDBのサポート

MongoDBを使用するアプリケーションを開発していますか? PyCharmでMongoDBのコレクションを見れるようになりました。 データベースツールウィンドウ(View | Tool Windows | Database)からデータソースを追加し、データベースに接続してください。 PyCharm Professionalエディションには、JetBrains製のプロフェッショナル向けSQL IDEであるJetBrains DataGripのすべてのデータベース機能が組み込まれています。

IDEの機能

実行構成のパラメータ化

実行構成のパラメータ化

コマンドラインアプリケーションを作成する際、通常は引数を素早く変更できると便利です。 `Edit Configuration` を開けばいつでも引数を変更できますが、このリリースからはより便利な方法で引数を変更できます。新しい実行構成マクロ(変数)を使用すれば、アプリケーションを起動するたびにPyCharmに値の入力を促してもらうことができます。

選択範囲を検索

選択範囲を検索

あるテキストがファイル内の一部に出現する頻度を確認したいですか? Findアクションが初期状態で選択した範囲に対象を絞り込むようになりました。 全体を検索したいですか? 検索範囲をファイル全体に拡張するには、Ctrl-F(macOSの場合はCmd-F)をもう一度押してください。

その他の改善

  • アプリケーションの一部がJavaScriptで書かれている場合、Handlebarsテンプレートがどこかで使用されている可能性が十分にあります。 Handlebarsプラグインをインストールすると、任意のPython文字列でHandlebarsのコードインテリジェンスを有効化できます。 文字列内でAlt-Enterを押し、‘Inject language or reference’ を選択して「handlebars」と入力するだけです。

バージョン管理

現在のブランチとの比較を改善

現在のブランチとの比較を改善

ブランチの数が多くなるほど、それらの違いを追跡するのは難しくなります。 新バージョンのPyCharmでは、ブランチ比較機能の外観が改善され、コミットによる2つのブランチ間の差分を簡単に確認できるようになりました。

リポジトリ複製UIの改良

リポジトリ複製UIの改良

使用中のリポジトリの種類にかかわらず、一箇所で新しいプロジェクトをチェックアウトできるようになりました。

その他の改善

  • リモートブランチをチェックアウトする際、通常はリモートブランチを追跡するローカルブランチを作成するかと思います。 PyCharm 2019.3では、「Checkout」は、リモートブランチの最新状態を確認可能にしつつ、ローカルのコミットを失うリスクを無くすための、唯一のアクションです。
  • PyCharmでは現在チェックアウトしているブランチをいつでもプッシュすることができます。 時には別のブランチに対して、プッシュしたくなる場合があるかと思いますが、今後はそのブランチを先にチェックアウトする必要はありません。

ウェブ開発 Proのみ

CDNのCSSクラス

CDNのCSSクラス

CDNのスタイルシートを使用していますか? そのスタイルシートのバージョンをダウンロードし、コード補完に使用できるようになりました。

JavaScriptをデバッグ中にメソッドの戻り値を確認

JavaScriptをデバッグ中にメソッドの戻り値を確認

Pythonデバッガと同様、JavaScriptデバッガが呼び出しているメソッドの戻り値を表示するようになりました。 戻り値を確認するには、デバッガの歯車アイコンをクリックして「Show Return Values」を有効化してください。

その他の改善

  • 単一引用符や二重引用符を強制するCSSスタイル設定を設定できます。
  • CSSで単一引用符を使用する場合も二重引用符を使用する場合も、PyCharmは引用符の一貫性を維持するのに役立ちます。 これは、Settings | Editor | Code Style | Style Sheets | CSSの「Other」タブで設定できます。
  • propTypesが定義されていないReactコンポーネントを使用していますか? PyCharmはプロパティを推測し、propTypesが定義されていないコンポーネントのコードを補完できるようになりました。
PyCharm 2019.2の詳細

Jupyter Notebook

Run All、Run All Above、Run All Below

Jupyter対応で最も要望の多かった機能の一つに、ボタンをワンクリックしてすべてのセルを実行することがありました。 これは思っていたほど簡単なことではありませんでした。なぜなら、PyCharm側でJupyterの一部の実行ロジックを実装し直さなければならなかったからです。 この機能をPyCharmで使用できるようになったことをお知らせいたします。

サーバー設定の改善

複数のプロジェクトを開く場合、PyCharmは最初に開かれたプロジェクトを明示的に使用してマネージドJupyterサーバーを起動していました。 今回、これを設定できるようになりました。 また、Jupyterサーバーがリッスンする専用のポートを選択できるようになりました。

仮想行によるスペース調整

ブラウザでJupyter Notebookを表示する際、レイアウトが自然にセルから若干はみだしてしまいます。 PyCharmではコードをPythonファイルとして表示するため、もう少し詰まって表示されます。 コードの視認性を向上させるため、ファイルに残らないノートブックに仮想的な空行を挿入するようにしました。

変数値のインライン表示

PyCharmのデバッガはノートブックで作業する際に変数の追跡を支援し、それらの現在の状態を表示します。

その他の改善

  • 要望の多かったその他の機能にはカーネルを再起動する機能がありましたが、このリリースから使用できるようになりました。
  • PyCharmからJetBrains Dataloreノートブックを直接公開できるようになりました。

IDEの改善

多くの一般的な言語のハイライト表示

異なる言語のコードが潜むプロジェクトに取り組んでいますか? PyCharmは、Windowsの.batファイル、#、C++、Groovy、Lua、Makefilesなどのシンタックスをハイライト表示するようになりました。

bashに対する基本的なサポート

ほとんどのプロジェクトでは、そのライフサイクルのある段階でリポジトリにbashファイルがチェックインされます。 PyCharmは、bashの構文を強調表示し、基本的な補完を提供し、Shellcheckと統合してbashファイルをチェックするようになりました。

Windowsでの外観を改善

WindowsでのPyCharmの外観が従来にも増して改善されました。UIの外観を微調整し、よりモダンになりました。

RESTクライアント向けにcURLをサポート

cURLの書式が初期状態でサポートされるようになりました。 cURL書式のリクエストをコピーして、それを直接HTTPリクエストファイルに貼り付けるだけで適切な書式に変換することができます。 この新機能を使用するには、新しい .http ファイルかHTTPリクエストスクラッチファイルを作成し、cURL文字列を貼り付けてください。 これにより、完全なリクエストに自動的に変換されます。

リクエスト間のCookieを保存

後から権限を要求するエンドポイント呼び出すサービスで認証リクエストをする場合を想像してください。 かつてはこの認証応答は失われ、必要なタイミングで毎回認証情報が強要されていました。 今回、この問題が解消されました! すべてのCookieが将来的な使用に備えて保存され、次のリクエストを実行する際に転送されます。

EditorConfigサポートの改善

EditorConfigファイルを使って、コードスタイル設定を直接リポジトリに埋め込むことができます。 この機能を改善し、より柔軟性を高めました。例えば、複数のEditorConfigファイルを使って様々な設定をプロジェクト内のさまざまな部分に適用できるようになりました。 詳細については、ドキュメントをご覧ください。

Python

Python 3.8:位置限定パラメータ

関数の使用を制限するには、関数定義に位置限定パラメータを指定してください。 この新しい構文は複数の引数が特定の順序でのみ呼び出されるよう、厳密な定義を行えるようにします。

Python 3.8:代入式

式の中で値を割り当てると、コードがよりコンパクトになり、可読性が向上します。 このリリースでは1行で条件式を作成し、同時に変数値を代入できるようになりました。

Python 3.8のその他の新機能

変数のFinalアノテーション

不要な継承や再定義を避けるため、'Final' 修飾子を使ってメソッドやクラス、変数の使用を制限したクラスやサブクラスを設計してください。

f文字列での等号の使用

f文字列で '=' を使用し、式とその値を同時に表示できるようになりました。 式とその結果を両方とも表示する文字列を生成するには、f'{expr=}' を使用してください。

Python関数のインライン化

PyCharmの主な機能の一つには、コードの自動リファクタリング機能が挙げられます。 この方法を使えばコードの動作が変わることはないため、自信を持って操作を実行することができます。 今回、Pythonの関数を自動的にインライン化する機能を追加しました。 Pythonのリファクタリングに関する詳細をご確認ください。

重複コードの高速検索

重複コードは不快なコードであるため、PyCharmは単一の関数にリファクタリング可能なものがあればそれを通知します。

JavaScript

変数名の変更を改善

コードのリファクタリングをより細かくカスタマイズできるようになり、動的参照の名前を変更するかどうかを選択できるオプションが追加されました。 このオプションを選択すると、プレビューインターフェースを使って実際に名前を変更する出現箇所とそのままにしておく出現箇所を決めることができます。

デバッグ中のスマートステップインの更新

スマートステップイン(Shift-F7)機能が強化されました。 ターゲットの視認性が向上し、矢印キーやタブでそれらを簡単に切り替え、Enterを押して選択したターゲットにステップインできるようになりました。

デバッガでのライブラリの視認性を向上

デバッガのコールスタックのフィルタアイコンを使って、サードパーティコードからのすべての呼び出しを非表示にすることができます。 この新機能を使えば、ライブラリとしてマークしたものすべてを非表示にできます。

データベース

全文検索

PyCharm Professionalエディションに当社のプロフェッショナル向けデータベースIDEであるJetBrains DataGripのすべてのデータベース機能をバンドルされていることをご存知でしたか? 当社データベースツールの新機能の一つには、複数のデータソースを横断する全文検索があります。これにより、コードがどこにあるのか分からない場合でも目的のデータを見つけることができます。

PyCharm 2019.1の詳細

Jupyter Notebook Proのみ

Notebookで作業

Notebookのコードを簡単に編集できるようにしました。ノートブックを編集するときに、ソースが通常のPythonファイルのように見えるようになりました。 これにより、コード間の移動が楽になります。 もちろん、ラウンドトリップ編集をサポートしており、PyCharmかブラウザのどちらかで行われた変更はすべて即座に反映されます。

セルの実行とデバッグ

Jupyter Notebookは、データ探索と対話的なデータ処理に最高に役立ちます。 PyCharmを使用すると、Jupyter Notebookがさらに使いやすくなります。なぜなら、IDEでノートブックからセルを素早く実行してデバッグできるからです。 もちろん、ブラウザ内ノートブックのホットキーの多くはPyCharmでも機能します。 例えば、Shift+Enterキーを使って強調表示されたセルを実行し、一つ下のセルを選択できます。

サーバーとカーネルの管理

ノートブックをより素早く起動しましょう。 PyCharmを使用した場合、サーバーやカーネルを手動で起動する必要はありません。ノートブックを開いてセルを実行するだけです。 PyCharmは自動的にサーバーと、開いたノートブック用の適切なカーネルを起動します。

変数ビューア

変数の現在の値が分からなくなった場合は、PyCharmの変数ビューアを使用して、すべてが正しく表示されていることを確認できます。

IDEの改善

Recent Locations(最近の場所)

開発中は、コード内のさまざまな場所を行き来する必要がしばしば生じます。 PyCharmにはずっと以前からこれらのファイル同士を素早く移動するための「Recent Files」ポップアップ(Ctrl+EまたはmacOSの場合はCmd+E)が実装されています。 しかし、ファイルにアクセスするだけではなく、特定の場所に移動する必要があることを考慮し、新しく改善された「Recent Locations」ポップアップ (Ctrl+Shift+EまたはmacOSの場合はCmd+Shift+E)を導入し、目的の場所に素早くたどり着けるようにしました。

UIテーマプラグイン

デフォルトのスタイルはお気に召しませんか? 今回、UIテーマプラグインのサポートを強化いたしました。 「tag: UI」で検索し、プラグインマーケットプレイスでテーマを一つ見つけてください。または、独自のテーマを作成する方法を学んでください

Sublime Textキーマップ

新しいツールに切り替える際に最も苦労する点の1つは、新しいホットキーをすべて学ぶ必要があるということです。 そこで今回、Sublime Textキーマップを追加し、誰もが簡単にSublime TextからPyCharmに切り替えられるようにしました。

その他の改善

  • Git用ネイティブSSH:以前のバージョンでは、ビルトインSSHまたはネイティブSSHのいずれかを使用するようにGit用SSHを構成することができました。 ビルトインSSHは、認証の際に対話型プロンプトが要求される場合に必要なものでした。 新しいバージョンでは、これらのプロンプトはネイティブSSHで処理できます。 ネイティブSSHは、より優れたセキュリティプロトコルなど、より多くの機能をサポートしているため、ビルトインSSHのオプションは削除されました。

Pythonの改善

大規模コレクション処理時のデバッガのパフォーマンス

PyCharmのデバッガでコレクションを最初に読み込む際、遅延なく無限に大規模コレクションを処理できるようになりました。

データクラスの継承

Python 3.7のデータクラスはすでにPyCharmでサポートされていますが、このサポートを拡張し、データクラスのサブクラスでも正確なコード補完が確実に得られるようにしました。

ステータスバーのインタプリタ

Pythonまたはフレームワークのバージョン間を移行するときなど、複数の環境用にアプリケーションを開発する場合、それらの環境をすばやく切り替えて現在使用しているバージョンを一目で確認できれば、作業が楽になります。

変数代入用の型チェック

Pythonのオプション入力は、コードを文書化し、間違いを防ぐのに役立ちます。 変数代入時に型をチェックすることで、同機能のサポートをさらに強化いたしました。

リモートインタープリタ Proのみ

Vagrantfileの構文

PyCharmはVagrantボックス内のPythonインタプリタをサポートしており、Vagrantファイルの見栄えも改善できるようになりました。

SSH越しのsudo

Raspberry PiでGPIOピンを制御するにはrootアクセスが必要です。そのため、GPIO開発を容易にするために、PyCharm 2019.1ではSSH越しにroot権限でコードを実行できるようにしました。もちろん、他の用途でroot権限を使用することもできますが、これらを公然と推奨したくはありません。今すぐ推奨するべきでしょうか?

ウェブ開発 Proのみ

HTMLおよびCSSクイックドキュメントの改善

CSSは何年もかけてどんどん強化されてきましたが、複雑さも増してしまいました。 この複雑度が増した最新CSSの複雑さを回避できるように、クイックドキュメントのサポートを強化いたしました。Ctrl+Q(またはmacOSの場合はCtrl+J)を押すだけで詳細を確認できます。 ご心配なく。「p」タグのドキュメントをお調べになっても、誰にも口外しません。

まったく新しいJavaScriptデバッグコンソール

PyCharm Professional EditionにはJetBrains WebStormの優れたJavaScriptサポートが備わっています。 Node.JSコードとブラウザ組み込みのJavaScriptの両方に対応する、新しい改良版のJavaScriptデバッグコンソールは作成されたばかりです。

ユニットテスト

pytest用マルチプロセステストランナー

大規模なテストスイートは使えますが、実行には時間がかかる可能性があります。 実行処理をもう少し早く完了させるために、pytestのインテグレーションをアップグレードして、マルチプロセステストの実行をサポートするようになりました。

各種データベース Proのみ

新しいデータベース接続フロー

PyCharm ProfessionalエディションはJetBrains DataGripのすべてのSQLサポートをバンドルしております。 新しいデータベース接続を設定するプロセスが改善されました。 まだお試しでない場合は、ぜひお使いください。 データベースを設定後、テーブルを調査できるようになるだけではなく、Pythonコードでクエリを書く際にスキーマ対応のSQL補完機能もご利用いただけるようになります。