Databricksノートブックにおける、Pythonのオートコンプリーションの改善

[Python Autocomplete Improvements for Databricks Notebooks \- The Databricks Blog](https://databricks.com/blog/2020/12/15/python-autocomplete-improvements-for-databricks-notebooks.html)の翻訳です。
### Pythonのオートコンプリート、docstrings、Koalasライブラリにおけるノートブックの強化

Databricksにおいては、ユーザーの生産性を向上するために、定期的にノートブックに機能追加を行い、データサイエンティスト、データエンジニアの皆様が世界レベルの開発体験を得られる様に尽力しています。今回、Pythonノートブックにオートコンプリートの機能を([Jediライブラリ](https://jedi.readthedocs.io/en/latest/)のサポートによって)追加できたこと、また新たなdocstringのコードヒントを追加できたことに大変興奮しています。これらの機能はDatabricks Runtime 7.4(DBR 7.4)で利用可能になります。つまり、DBR 7.4以降のクラスターでPythonノートブックを使用することで、これらの機能を利用することができます。

**タブ**キーを押すことで、この新たなオートコンプリートの機能を利用できます。キーを押すことで、システムはカーソル位置にある入力を検査し、現在のノートブックの状態に基づいて判別される型情報と併せて入力候補を表示します。補完された情報に関して追加のヘルプが必要な場合には、**シフト+タブ**キーを押すことで、docstringのコードヒントを参照することができます。

また、我々は上記のオートコンプリートサポートとともに[Koalasライブラリ](https://koalas.readthedocs.io/en/latest/)の新バージョン(1.4.0)を公開しました。こちらはDBR 7.5から利用可能となります。Koalasライブラリは、データサイエンスにおけるpandas Pythonライブラリの代替となるものです。ユーザーにと手は馴染みのあるpandas APIを提供しながらも、バックエンドにあるSparkのビッグデータ処理能力を活用することができます。

### Jediライブラリによる静的コード解析を用いたPythonオートコンプリート

Databricksのノートブックは、インタラクティブなPythonインタプリタであるIPython REPLによって実行されます。IPython 6.0 REPLは、コードコンプリーションのために、Jupyter notebookにおけるオートコンプリートに用いられているJediライブラリを導入しました。Jediライブラリによって、これまで私たちが入力候補を提示するために行っていた静的コード解析の実装を大幅に改善することができました。静的コード解析によって、セル(コマンド)を実行することなしにオブジェクト名、形、関数の引数を解決することができる様になりました。
![](https://databricks.com/wp-content/uploads/2020/12/blog-python-autocomplete-1.png)
Koalasライブラリでもオートコンプリートが利用可能です

### シフト+タブキーによるPython docstring

新たなオートコンプリートに加えて、DBR 7.4では**シフト+タブ**キーでdocstringのヒントを表示することができます。Docstringは、ソースコードにインライン形式で[PEP 257](https://www.python.org/dev/peps/pep-0257/)フォーマットで記述されたコードのコメントです。Docstringは解決されたオブジェクト名に対する[help()関数](https://docs.python.org/3/library/functions.html#help)で表示されるものと同じものとなります。オブジェクトはノートブックのセルを実行することでPython REPLにロードされます。
![](https://databricks.com/wp-content/uploads/2020/12/blog-python-autocomplete-2.png)
Koalasライブラリのdocstring例

### Koalas: pandasライブラリの代替

データサイエンスにおいて人気のあるpandasライブラリの代替として、DatabricksはKoalasライブラリを提供します。pandas APIとの互換性を維持しながら、PySparkのデータフレームAPIを活用することで、Apache Sparkのビッグデータ処理能力を活用することができます。こちらの記事([Koalas: Easy Transition from pandas to Apache Spark](https://databricks.com/blog/2019/04/24/koalas-easy-transition-from-pandas-to-apache-spark.html)、[the Koalas documentation](https://koalas.readthedocs.io/en/latest/))も参考にしてください。Databricksは新たなKoalasバージョン1.4.0を、新たなオートコンプリート、docstringの機能とともにリリースしました。

#### Koalasにおける型アノテーションの強化

Koalas 1.4.0においては、主要なKoalasオブジェクト(データフレーム、シリーズ、インデクスなど)における戻り値の型アノテーションを追加しました。この戻り値の型アノテーションにより、コーディングにおいてKoalasライブラリを使用する際に、オートコンプリートが正確かつ信頼性のある候補を提示することを可能にしました。

戻り値の型アノテーションの網羅的な対応により、pandasライブラリと比較してKoalasライブラリの方が優れたオートコンプリートを提供できる様になりました。pandasライブラリにおける技術的制限により、pandasライブラリにおいては、いくつかのケースでオートコンプリートが動作しません。
![](https://databricks.com/wp-content/uploads/2020/12/blog-python-autocomplete-3.png)
pandasにおいてオートコンプリートが動作しないケース

![](https://databricks.com/wp-content/uploads/2020/12/blog-python-autocomplete-4.png)
Koalasではオートコンプリートが利用可能

#### ノートブックにおけるKoalas docstring

開発者がKoalas APIを容易に理解できる様に、我々はKoalas 1.4.0の一部として豊富なdocstringを追加しました。Koalas APIは分散環境での動作を前提として設計されているため、対応するpandas APIと僅かな違いが生じるケースがあります。新たなdocstringヒントの機能によって、いちいちソースコードを見たりドキュメントを調査することなしに、**シフト+タブ**キーを押すことで、すぐにdocstringにアクセスすることができます。

### 改善されたオートコンプリート機能を利用するためには

DBR 7.4以降のクラスターにノートブックをアタッチするだけで、改善されたこれらの機能(オートコンプリート、docstring)を利用できます。まず、ノートブックの先頭に新たにセルを追加し、必要なライブラリを`import`する処理を記述し実行します。ライブラリがインポートされることで、ノートブック全体でオートコンプリートが有効になります。コーディングの過程で、オートコンプリートを利用するためには**タブ**キー、docstring、関数のパラメータを参照するには**シフト+タブ**キーを押します。

ノートブックのセルを実行する予定がない場合(単なるスクラッチの作業をするケース)には、`import`とコードを同じセルにまとめることをお勧めします。

最新のKoalasのオートコンプリート、docstringの機能を利用するには、DBR 7.4のクラスターにKoalas 1.4.0をインストールします。DBR 7.5にはKoalasライブラリは同梱されています。

### 参考情報
- [Jedi: static code analysis for Python](https://jedi.readthedocs.io/en/latest/)
- [Koalas: Easy Transition from pandas to Apache Spark](https://databricks.com/blog/2019/04/24/koalas-easy-transition-from-pandas-to-apache-spark.html)
- [Koalas API documentation](https://koalas.readthedocs.io/en/latest/): Apache Spark向けpandasライブラリ
- [Docstrings in PEP 257](https://www.python.org/dev/peps/pep-0257/)

### Databricks 無料トライアル

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