新たなDatabricksノートブックエディタのウォークスルー

こちらで公開されている[新ノートブックエディタ](https://qiita.com/taka_yayoi/items/b6adb35a48e77b4962c8)を説明するノートブックをウォークスルーします。

https://github.com/databricks/notebook_gallery

翻訳版はこちら。

https://github.com/taka-yayoi/public_repo_2/blob/master/notebook_2.0/Notebook%202.0%20Feature%20Gallery.py

# 事前準備

- [新たなエディタの有効化](https://qiita.com/taka_yayoi/items/8dd3cabb54b08f4ed604#%E6%96%B0%E3%81%9F%E3%81%AA%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96)に従って新エディタを有効化してください。
- DBR11.2以降が稼働中のクラスターにノートブックをアタッチしてください。

# Monacoによるコード編集の改善

## タイプしながらオートコンプリート
![autocomplete](https://github.com/RafiKurlansik/notebook2/blob/main/assets/autocomplete2.gif?raw=true)

## マウスホバーによる変数の調査
![var-inspect](https://github.com/RafiKurlansik/notebook2/blob/main/assets/variable_inspection.gif?raw=true)

## コードの折りたたみ & 括弧のマッチング

コードブロックの隣の矢印アイコンをクリックすることで折り畳むことができます:

![code_folding.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3db2fe7f-9a78-492e-56d5-28eb57791616.gif)

括弧の隣をクリックすることで、対応する括弧をハイライトします:

![bracket-matching](https://github.com/RafiKurlansik/notebook2/blob/main/assets/bracket_matching.gif?raw=true)

## マルチカーソルのサポート

![multi-cursor-support](https://github.com/RafiKurlansik/notebook2/blob/main/assets/multi_cursor.gif?raw=true)

Monacoは高速に同時編集を行うためのマルチカーソルをサポートしています。Windowsであれば、`Alt+Click`で2つ目のカーソル(細く表示されます)を追加することができます。それぞれのカーソルは文脈に合わせて独立に動作します。さらに多くのカーソルを追加する一般的な方法は、上や下にカーソルを挿入するために`⌥⌘↓`や`⌥⌘↑`を使うというものです。

## カラム(ボックス)選択

![column_selection.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6ff42149-87a8-d7a7-8010-91a9dee8ceac.gif)

一方の角にカーソルを移動し、反対側にドラッグする際に`Shift+Alt` (あるいはMacなら `Shift+option` )を押し続けます。

## 選択テキストの実行

テキストをハイライトし `Shift + Control + Enter` で実行します:

![run_selected](https://github.com/RafiKurlansik/notebook2/blob/main/assets/run_selected.gif?raw=true)

## 行コメントの切り替え

<img src="https://github.com/RafiKurlansik/notebook2/blob/main/assets/togglecomment.gif?raw=true" width=500/>

ユーザーがドキュメントされたコードを迅速に作成できるように、コメントの作成を容易にしました。コードのコメント行や複数行のコメントを一度に切り替えることができます。このためには、対象の行を選択しOSに応じたショートカットを押します。

Mac: `Cmd + /`

Windows: `Ctrl + /`


## ブロッククオート

<img src="https://github.com/RafiKurlansik/notebook2/blob/main/assets/blockquote.gif?raw=true" width=600>

また、プログラミング言語がブロッククオートをサポートしている場合には、ノートブックでもそれをサポートしています。ユーザーは、コードブロック全体をクオートするためにコマンドを使用することができます。

Mac:		`Shift+Option+A`

Windows: 	`Shift+Option+A`

# Pythonのフォーマッティング/リンティング

<img src="https://github.com/RafiKurlansik/notebook2/blob/main/assets/blackformatter2.gif?raw=true" width="500"/>

DatabricksではPEP 8互換のコードフォーマッターであるBlackをサポートしました。Blackはすべてのコードを同じ方法でフォーマットするので、フォーマットに要する時間を削減し、すべきことに集中できるようになります。Blackによってフォーマットされたコードはレビューしているプロジェクトに関係なく、同じように見えるので、コードレビューも高速になります。Blackを使うには、DBR11.2以降のクラスターに接続します。DatabricksにはBlackとTokenize-rtがプレインストールされています。

**試すには、以下のセルをクリックし、ノートブックメニューバーから、 _Edit --> Format cell(s)_ をクリックします。**

```py:Python
def add(a,        b):
    answer  =  a   +       b

    return    answer
```

↓

```py:Python
def add(a, b):
    answer = a + b

    return answer
```

# デバッグ

Databricksランタイム11.2以降で動作するノートブックでは、[The Python Debugger](https://docs.python.org/3/library/pdb.html) (pdb)がサポートされています。

ノートブックでpdbを使うサンプルとしては:

* 最後の例外からデバッグするために`%debug`を使います。これは、予期しないエラーに遭遇し、原因をデバッグしようとする際に役立ちます(`pdb.pm()`と同じようなものです)。
* 例外の後に(しかしプログラムが停止する前に)インタラクティブなデバッガを自動で起動させるために`%pdb on`を使います。

これらのコマンドを使う際、他のセルを実行できるようにするためにはデバッガの使用を終了しなくてはいけないことに注意してください。デバッガーの終了方法はいくつかそんざいします:

* セルの実行を終了するために`c`か`continue`を入力。
* エラーをスローし、コード実行を停止するために`exit`を入力。
* 出力ボックスの隣の`Cancel`をクリックすることでコマンドをキャンセル。

# バージョン履歴における隣り合わせのdiff

![diffs.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ea4950d8-ad94-8b0b-dd5f-19e300a35287.gif)


# シンタックスのハイライト

適切にコードがハイライトされることで、コーディング、編集、トラブルシュートをより迅速なものにします。今では、**ノートブックはPythonコードセルのSQLコードを認識し、ハイライトします。**これまでは、意図した通りに実行されるようにするために、手動でコードをパースしなくてはなりませんでした。パッと見るだけで、ユーザーは適切なSQL文が含まれ、適切な順序に並んでいることを確認することができます。
![Screen Shot 2022-12-24 at 16.15.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/96b5778c-40f1-6ef5-5d5b-84f0dcab0ca3.png)

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)