Pycharm v2019.1のNotebook機能が見たことない感じになってる！

先日リリースされた Pycharm v2019.1ですが、Jupyter Notebook機能が、いままでと全然違う見た目になっていました。
正直、いままでのJupyter Notebook機能はイマイチだったので、さてさてどんなもんよ！といったところです。

早速使ってみます。

# 調査の方針

今回は、この辺りを重点的に使っていきます。

- UIの使い方
- コーディングの楽さ
- 実行の楽さ
- markdownセルの挙動
- pandas DataFrameの出力
- matplotlibのinline出力
- bokeh等のJSベース可視化ライブラリの挙動

# 調査

## 1. UIの使い方

まず、画面構成ですが、こんな感じ。

<img width="1051" alt="スクリーンショット 2019-04-01 12.02.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/13faae27-0ca8-e2bc-041a-0dee422a4d61.png">

さっそく、pythonセルをいくつか追加して、実行してみます。

<img width="275" alt="スクリーンショット 2019-04-01 12.04.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/97ab5e36-11e2-cc31-4924-c2989411b409.png">

とすると、エディタに`#%%`と入力されます。
この下に、セル内のコードを書いていくスタイルのようです。わかりずら！

実際に3つほどセルを追加してみました。

<img width="1038" alt="スクリーンショット 2019-04-01 13.08.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/6374431d-ba83-1402-7d1c-aceecaf387e7.png">

右側に、おなじみのJupyterレイアウトみたいなものが表示されています。
しかし、右側は編集不可です。それどころか、右側のペイン上をクリックすると確定フリーズしますね。。。
だめだこりゃ。。。

2番目のセル`C()(5)`にエラーのアウトプットが出ているのは、間違えて実行してしまったからです。
セルをクリアする機能もないため、消せません。触るとフリーズするし。

## 2. コーディングの楽さ

Jupyterのおなじみのレイアウトと違って、`#%%`のような区切り文字を使ったコーディングは、案外快適な気がします。
左のエディタと右のプレビューとの間の対応関係も、オートスクロールで把握しやすいです。

![pycharm-jupyter-edit.gif](https://qiita-image-store.s3.amazonaws.com/0/373730/d583e172-d0fe-a47e-f938-3d7fe18234d9.gif)

## 3. 実行の楽さ

実行は
- `Shift + Enter`
- 緑の▷ボタン

から実行できます。

![実行se.mov.gif](https://qiita-image-store.s3.amazonaws.com/0/373730/99b4353a-23cc-415c-3828-cd30a5213883.gif)
![実行button.mov.gif](https://qiita-image-store.s3.amazonaws.com/0/373730/e2456946-d7c3-ac2a-a689-4dc65fcd280d.gif)

`Shift + Enter`が楽です。まぁ、この方法は本家Jupyter Notebookと同じですね。

## 4. markdownセルの挙動

以前のNotebook機能では、markdownセルが全く動きませんでした。
さて、2019.1ではどうなのか。

<img width="990" alt="スクリーンショット 2019-04-01 14.01.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/c8c3f1ca-23e8-857a-3d36-54a9c6075271.png">
できました！テーブルや画像埋め込みも動作しています。
`#%% md`を入力することで、markdownセルになる模様。

## 5. pandas DataFrameの出力

個人的に、最重要視している項目です。
前のPycharmでも動作していたので、動くと期待しています。
さっそく試してみましょう。

<img width="981" alt="スクリーンショット 2019-04-01 14.03.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/97e86d70-1e91-d43d-4290-d5b0c0d5176d.png">
表示されました。なんとなく、表のスタイルがチープな感じがしますが、動作しています。
巨大な表だとどうなるのか？

<img width="995" alt="スクリーンショット 2019-04-01 14.13.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/08235ba1-4638-567b-51cc-63f6c7862bd3.png">
動作が遅くなるといったことはありませんが、横にスクロールできません。これは致命的。。。

<img width="989" alt="スクリーンショット 2019-04-01 14.13.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/4cda2e59-0ddf-47fb-454a-e2a6de55566c.png">
全画面にしても、やはり横スクロールはできないようです。残念。。。

## 6. matplotlibのinline出力

Jupyterを使う理由の1つである、matplotlibのinline出力。
こちらも、前のPycharmで動作していたものです。

<img width="991" alt="スクリーンショット 2019-04-01 14.16.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/b0086d81-79be-ca62-dca4-92a050cefde9.png">
無事成功しました。

## 7. bokeh等のJSベース可視化ライブラリの挙動

さて、この機能は、以前のPycharmでは動作しなかったものになります。
果たして、バージョンアップで対応したのでしょうか？

<img width="985" alt="スクリーンショット 2019-04-01 14.25.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/373730/e3226455-7c82-ca73-7247-621e3e3eca94.png">

流石にこれは動きませんでした。
Pycharmサイドがブラウザ上で動作する本家Jupyterをシミュレートするか、
`bokeh`や`plot.ly`などのライブラリサイドから歩み寄るか、
どちらにしても、難しい問題のようです。

# まとめ

いかがでしたか？
Pycharm v2019.1の新Jupyter Notebook機能をいろいろ触ってみました。

| 調査項目 | 結果 |
| --- | --- |
| UIの使い方 | 本家Jupyterと全く異なる見た目 |
| コーディングの楽さ | 最初は混乱するが、慣れると快適 |
| 実行の楽さ | `Shift + Enter`で実行可能 |
| markdownセルの挙動 | バッチリ動作。（テーブルのスタイルはチープ。） |
| pandas DataFrameの出力 | バッチリ動作。（テーブルのスタイルはチープ。）横スクロール不可 |
| matplotlibのinline出力 | バッチリ動作。（テーブルのスタイルはチープ。） |
| bokeh等のJSベース可視化ライブラリの挙動 | 動作しません。 |

「Pycharmライセンス買おうかな？」と迷っている人や、「PycharmのJupyter機能って使えないよね」と思っていた人などに、「お、ちょっと使ってみようかな」と思っていただけたら幸いです。