Pythonのプログラムの開発環境、皆さんは何を使っていますか?Emacs、Jupyter notebook、PyCharm。機械学習などのプログラムではJupyter notebookを使っている人も多いかもしれませんが、科学技術計算という観点ではPyCharm(特にProfessional版)がオススメです。この記事ではPyCharmが科学技術計算のコード開発に向いてる理由について紹介します。
Pythonの開発環境どんなものがある?
まずPythonの開発環境にはどんなものがあるでしょうか?開発環境は大きく分けると3つくらいに分ける事ができます。
- 一般的なプログラミング用エディタ
- Pythonのインタラクティブエディタ
- 統合開発環境
まず、1つ目の一般的なプログラミング用のエディタとはvi、Emacs, atomといった汎用的なプログラミング用エディタです。このエディタの特徴は汎用性です。Pythonに特化しているというよりはPython、C言語、Javaなどどの言語が来ても同じように使える事ですね。コーディングに便利なショートカットが数多くあることも特徴の1つです。ショートカットや操作性は少し慣れないと大変ですが、慣れるとかなりコーディングが速くなる、これが一般的なプログラミング用エディタです。この場合、Pythonのコードを書くのはエディタで行い、それを保存して、実行はターミナルからpythonのコマンドで実行する形になります。
2つ目がPythonのためのインタラクティブなエディタです。Jupyter notebookやGoogle Colabがこれに当てはまります。どちらもかなり有名な開発環境ですので知っている人も多いのではないでしょうか。Jupyter notebookは名前の通り、ノートブックのような形式で、セルと呼ばれるコードを書く部分にPythonのコードを書き、インタラクティブにコードを実行する事ができます。使い方について簡単な解説記事を書いておりますので、参考にしてみてください。結果のデータ分析から小規模なプログラムであれば、ササッとこなせるのが特徴です。私もPyCharmと併用して使っています。
3つ目が統合開発環境です。英語での名称、IDE(Integrated Development Environment)で呼ばれることも多いですので、覚えておいてください。この統合開発環境はプログラムの開発、プログラムの実行、デバッグ、コードの管理などのプログラム開発で必要となってくる要素が1つに統合された環境です。この為、特徴としては中規模くらいのプログラム開発からはほぼ必須の開発環境であると言えます。IDEにはPyCharmやSpyder、Visual Studioなどがあります。
さて、これら非常にたくさんの選択肢があるわけですが、Pythonのプログラミング開発(特に科学技術計算という観点)にはどの開発環境が良いのでしょうか?
結論:PyCharmにはScientific Modeがあるので科学技術計算に最適
まず、結論から述べましょう。なぜ、PyCharm(Professional版)を私がお勧めするのかというと、Scientific Modeがあるからです。このScientific Modeとは何でしょうか?
それは、科学技術計算における可視化を強化するための機能です。Scientific Modeを使うとSciViewというインターフェースが表示され、主に2つの恩恵を受けることが出来ます。
1. Numpyアレーの中身を色付きで可視化できる
この機能は本当に数値計算では重宝します。例えば、数値計算ではある系の時間発展を追うというケースがしばしばあると思います。
しかし、計算途中で数値不安定性を引き起こし、計算が爆発。気づかないうちに、全ての値がNaNになってしまっていた、という事はよくあることです。
この為、デバッグが必要になるわけですが、今の計算の状態がどうなっているのか?これを可視化することが出来るのがこちらの機能です。通常のデバッガを使っても数値を確認する事は出来ますが、色付きで見える機能はPyCharmだけではないでしょうか?
色付きで見えるお陰で、わざわざ可視化するためにコードの途中にmatplotlibやseabornでグラフを描かせなくても計算途中にbreak pointを置くだけで今の状態が見えるのです。これは科学技術計算をやる上では必須の機能だと思います。
2. グラフの埋め込み
こちらは分かりやすく言えば、Jupyter notebookの%matplotlib inlineと同じ機能です。通常、計算の途中にmatplotlibなどを使って、グラフを表示した場合、グラフが独立したウィンドウに表示されます。
しかし、Scientificモードの場合はSciViewの中にグラフが埋め込まれて表示されます。
グラフは右側の一覧に追加されますので、例えば、時系列変化をプロットしていった場合に状態の時間変化を追うことが出来るのです。こちらは先ほどのNumpyアレーの可視化と比べるとオマケ程度の機能ですが、地味に活躍します。
今、説明したこの2つの機能はPyCharmのProfessional版でなければ使えません。したがって、本格的に科学技術計算・数値計算のコード作成に取り組まれる方はPyCharmのProfessional版をおススメします。(私もずっと使っています。)
ただ、プログラミングを始めて間もないという方は、Community版(無料)から始めるで問題無いと思います。
Scientific Modeの使い方
とても簡単です。numpyをimportするだけです。numpyをimportしているとPyCharmがそれを認識しScientific Modeに切り替えるかどうかを聞いてきます。
PyCharmを使うメリット
これ以外にも様々な特徴があり、プログラム開発で便利な機能が満載です。以下で、順に紹介していきます。(Professional版のみのものには*を付します)。正直、機能が多すぎますので科学技術計算で役立ちそうな機能に絞って紹介させていただきます。
タブ補完機能
この機能は多くの開発環境(IDEやJupyter Notebook)に搭載されていますが、PyCharmにも搭載されています。タブ補完機能では関数名や変数名を類推して、提案してくれます。タブを押すことで、残りのコードを補完してくれるというものですね。補完によってコードのタイピング量、タイピングミスがかなり抑えられますので、必須の機能の1つですね。
静的解析
プログラムコードをチェックしてくれる機能です。例えば、プログラムに明らかなバグがある場合(例:インデントが不揃い、ライブラリがimportできていない)、その場所を赤でハイライトして、理由を表示してくれます。
例えば、上の例ではglという参照先は無いと教えてくれています。これは単純にライブラリのimport忘れによるものです。
また、Pythonでは分かりやすいコードの書き方にPEP8やPylintというルールがあるのですが、そのルールを順守しているかどうかも判定してくれます。下の例では、黄色の線で示している部分がPEP8もしくはPylintのルールを破っていると教えてくれています。今回の場合は、Pythonの通常の変数では大文字から始まるCamel Caseは望ましくない、lower caseにしなさいと言っています。
この為、黄色のWarningを消していくだけでもコードの書き方が洗練されていきます。
Anacondaとの連携
手持ちのPCの環境構築はAnacondaを使う事が多いと思いますが、PyCharmはAnacondaで構築した仮想環境をそのまま使う事が出来ます。Settingsから設定します。
VCS(GitやBitbucket)と連携可能
コードの進捗管理にGitやBitbucketを使われている方は多いでしょう。PyCharmはこれらのVCSと連携することが出来ます。この為、コードのどこが変わったのかも把握しながらコード開発を進めることが出来ます。この機能はCommunity版でも使えますので、是非、活用ください。
コードプロファイル機能*
プロファイラーを使って、コードのプロファイルを取り、可視化することが出来ます。これによって、コードの各関数の呼び出し回数や実行時間などを知ることができ、ボトルネックなどを特定することが出来ます。この機能はProfessional版だけです。
Cythonファイルの取り扱い*
使用頻度はそこまで多くないかもしれませんが、Pythonで実行速度がどうしても出ない場合に、Cythonを使う場合があります。通常のPythonのプログラムとは異なるため、Community版ではCythonファイルはサポートされていません。Professional版の場合、通常のPythonと同じく、静的解析やタブ補完なども働きます。
MPIのデバッグも可能*
これは更にマニアックな機能です。Pythonではmpi4pyを利用する事でMPI並列を行うことが出来ます。MPI並列は分散型並列の為、デバッグしにくいのですが、PyCharmのAttach to Local Processを利用する事で、それぞれのプロセスにアタッチして、通常のデバッガを動作させる事も出来ます。
PyCharmを使うデメリット
それではPyCharmを使うデメリットは全く無いのでしょうか?実は1つだけあります。それは、CUDAのデバッガであるNsightとの連携が今のところ出来ていない事です。NsightとはGPUで計算する際にCUDA内のデバッガの役割を果たします。Visual Studioには、このNsightとの連携機能が搭載されていますが、PyCharmにはありません。これだけが唯一残念なところだと思います。GPU並列をしないという方には、PyCharmを使うデメリットはありません。是非、PyCharmを使って効率の良いコード作成を行いましょう!
いかがでしたでしょうか? 科学技術計算に絞ってもこれだけ多くの機能が挙げられます。他のWeb開発などの観点ではまた色々なメリットを持ち合わせています。PyCharmを使う事で、あなたのプログラミングライフがもっと充実することは間違いありません。
まとめ
この記事ではPythonの開発環境について紹介しました。以下に纏めてみましょう。Pythonの開発環境には大きく3つに分かれます。
- 一般的なプログラミング用のエディタ
- Pythonのインタラクティブエディタ
- 統合開発環境
そして、Pythonの科学技術計算向けのコード開発環境としてオススメはPyCharm(Professional版)です。Professional版は有料の代わりに、Scientific modeやコードのプロファイリングなど科学技術計算で欠かせない可視化の機能が備わっています。
Tips: PyCharmでよく使うショートカット
今回お勧めしたPyCharmですが、ショートカットだけでも非常に多くの機能があり、どれを使っていいかわからないという人も多いと思います。ここではPyCharmを使う上でお勧めのショートカット機能を2つ紹介します。
- Ctrl + g: 指定の行に飛ぶ
この機能はデバッグ時にデバッガに怒られた時によく使います。デバッガが何行目でエラーが起きましたよと教えてくれるので、このショートカットで一気にその場所まで飛ぶとデバッグの速度がグンと上がります。
- Ctrl + b: ソースコードへ飛ぶ
この機能もデバッグ時に使います。特定の関数を実行する時に、どんなコードだったっけ?という事はしばしばあります。そんな時に関数に合わせてこのショートカットキーを使用すると該当のソースコードまで飛ぶ事ができます。
最新記事 by t-tetsuya (全て見る)
- 【GPyOpt】Python x ベイズ最適化の基本をマスターしよう - 2020年12月29日
- Python print関数の基本の使い方 - 2020年12月10日
- Python関数の書き方の基本 - 2020年12月1日
・PyCharmの特徴
について理解することができます。