Databricks にてノートブックが Jupyter Notebook 形式（.ipynb）で保存されてしまう事象への対応方法

## 概要

Databricks にてノートブックが Jupyter Notebook 形式（.ipynb）で保存されてしまう事象に対して、 Python ファイル形式（.py）で保存する方法として下記の方法を共有します。

1. ノートブックごとに設定を変更する方法
1. フォルダのエクスポート/インポートにより置換する方法

Databricks では表示上は Notobooke 形式であるが内部では Python 形式で保持されていました。それを意識するタイミングとしては、 Git にてコードを管理する場合などでした。ある時から、Python ファイル形式ではなく、Jupyter Notebook 形式（.ipynb）で保持できるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/50f35812-0306-c04f-a8f3-4fabf8d800fb.png)

引用元：[Databricks Git フォルダーでファイル資産を管理する - Azure Databricks | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/databricks/repos/manage-assets#--convert-a-source-notebook-to-ipynb)

どのような形式で保持すべきかは状況に応じて変わりますが、Jupyter Notebook 形式（.ipynb）で管理することのデメリットとしてファイルとしての可読性が悪いことがあります。また、実行結果の出力も可能であることから、データ流出のリスクを抱える可能性もあります。

**Jupyter Notebook 形式（.ipynb）で表示した場合**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/7857e205-50e9-03b7-d568-2e915216800a.png)

**Python ファイル形式で表示した場合**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0afe59ce-89b7-17de-3281-a965645d47c7.png)

そこで、本記事では Jupyter Notebook 形式（.ipynb）を Python ファイル形式への変換方法を紹介します。

## 事前準備

### 1. python 形式のファイルを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/ea7acb87-a5b5-d096-2f69-45c04db53e1a.png)

### 2. 1のファイルをクローンして、`File` -> `Change Notebook format`を選択し、`Jupyter notebook format(.ipynb)`を選択した上で`Change`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0d373377-e3d0-a4bb-88f3-5186487a55b1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/ab1a50af-84e1-0606-c74e-593e3e26a6f5.png)

### 3. 2 のファイルをクローン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/9afd5264-ed78-26d2-99ae-16d9a205f8e0.png)

### 4. コード内容を Git にコミットし、 Python 形式と Jupyter Notebook 形式が混在していることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d8d84a03-69e0-e4cb-2814-ed35a486e78b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b9b19282-75aa-da08-8076-3b778f0b27c8.png)


## 対応方法

### 1. ノートブックごとに設定を変更する方法

#### 1-1. Jupyter Notebook 形式（.ipynb）になっているノートブックを開き、`File` -> `Change Notebook format`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/bc487552-d126-d0e2-81f2-84ac6b0205e0.png)

#### 1-2. `Source fomat`に設定した上で`Change`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/183fe10c-f17b-9392-cedb-b61a4b27bd42.png)

#### 1-3. 変更履歴で Jupyter Notebook 形式が削除されていること（`D`）とPython 形式が作成されたこと（`A`）を確認しコミット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/6678e480-05fe-ad7f-5a60-0f2af52ba4e0.png)


#### 1-4. Git 上で Python ファイル形式になっていることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0afe59ce-89b7-17de-3281-a965645d47c7.png)

### 2. フォルダのエクスポート/インポートにより置換する方法

#### 2-1.  Jupyter Notebook 形式のノートブックを保持しているフォルダにて、ハンバーガーボタン（`⁝`） -> `Export` -> `Source File`を選択してノートブック郡をエクスポート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e25ebff1-df9b-f2c0-9ad4-e15cbf242ac7.png)

#### 2-2. エクスポートたフォルダを削除（`Move to Trash`を選択）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/48aa958c-f72a-33a8-fa3a-3ce7efd1d373.png)


#### 2-3. `Confirm and move to Trash`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/20a23df8-6cbe-8294-2bee-40ea90cdc2c1.png)

#### 2-4. フォルダが存在したディレクトリに移動語、右上のハンバーガーボタン（`⁝`） -> `Import`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/4981c5b6-73d7-4ca9-3309-59a8f4ecd39c.png)

#### 2-5. 先ほどエクスポートしたファイルをドラッグして`Import`を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b8576626-0f9b-c194-4c0f-d6c5a0b6a157.png)

#### 2-6. `manifest.mf`というファイルが存在する場合には削除

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a813ffc3-e188-272b-343b-a32f42c629d7.png)

#### 2-7. 変更履歴で Jupyter Notebook 形式が削除されていること（`D`）とPython 形式が作成されたこと（`A`）を確認しコミット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/bb174a6f-0041-78a0-bd94-de01785d7b9f.png)

#### 2-8. Git 上で Python ファイル形式になっていることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/f4462a39-c1b8-ce7b-17af-96800361197a.png)