【2023年版】Jupyter拡張機能・ショートカット完全まとめ

この記事は[Nuco Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nuco)の17日目の記事です。

::: note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=039b08c62caab9544f42)まで。
:::
https://www.recruit.nuco.co.jp/?qiita_item_id=039b08c62caab9544f42

# はじめに
データサイエンスやプログラミングの領域では、効率的な作業が不可欠です。Jupyterはそのための優れたツールであり、本記事ではJupyterの拡張機能とショートカットコマンドに焦点を当てて、よりスマートな作業手法を紹介します。これらの機能をマスターすることで、コーディングやデータ分析の生産性を飛躍的に向上させることができます。

# Jupyterについて
### Jupyter Notebookとは
Jupyter Notebookは、対話的なプログラミング環境で、コードの作成と実行、結果の可視化、ドキュメントの作成が一元化された形で行えるツールです。様々なプログラミング言語に対応し、テキストやコード、グラフなどを組み合わせて柔軟に作業できます。データサイエンスやプログラミングの実験、ドキュメンテーションに適しています。

### Jupyter Labとは
Jupyter Labは、対話的なプログラミング環境で、Jupyter Notebookの進化版です。複数の作業領域を同時に扱えるタブベースのユーザーインターフェースや統合されたファイルブラウザ、テキストエディタなどを提供し、プロジェクト管理やコードの作成・実行が効率的に行えます。柔軟な拡張性と対話的なウィジェットにより、データサイエンスやプログラミング作業がより使いやすくなっています。
### Jupyter NotebookとJupyter Labの違い
どちらも対話型のプログラミング環境であり、Pythonを含むさまざまなプログラミング言語をサポートしていますが、
基本的に「Jupyter Lab」が「Jupyter Notebook」の後継機と考えて問題なく、
Jupyter Notebookは単一のノートブックでコードと結果を管理するツール、対してJupyter Labは複数のノートブックやファイルを同時に管理できる進化版で、統合された作業環境を提供します。 

# Jupyterの便利な拡張機能

## Nbextensions（Jupyter Notebook）
- インストール
``` 
$ pip install jupyter_contrib_nbextensions

$ jupyter contrib nbextension install --user

$ jupyter nbextensions_configurator enable --user
```
インストール終了後、Jupyter Notebookを起動するとメニュー欄に「Nbextensions」タブが追加される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/87473ee2-6cbc-ae94-4ca5-4f1cba17d600.png)

「Nbextensions」を押下すると拡張機能の選択ページが現れる。
使いたい拡張機能にチェックを入れると使用可能となる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/471b2dba-fe93-48ae-7dc3-d5682735284e.png)

この中から、使用頻度の高い拡張機能について列挙し、詳細を説明していきます。

頻度低いもの含めた全ての機能はこちらのリンクから確認してください。

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions.html

### Variable Inspector
- 定義した変数の中身と型を表示
    - 定義した変数について、都度printで出力する手間を省ける。
    
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/d6194d2f-17d3-7856-676b-9750aa3598b1.png)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/varInspector/README.html

### Hinterland
- 入力補完
    - コードの入力途中に続く入力の候補を表示、補完する。

![ezgif.com-video-to-gif (17).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/d4e1558c-600f-25fb-521a-16e99a15431c.gif)
    
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/hinterland/README.html

### Table of Contents
- 目次の表示
    - 実行済みのmarkdownヘッダーを一覧表示してくれる機能で、現在どこの処理を書いているのかなどが一目で分かる。

![スクリーンショット 2023-11-28 15.39.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/a03114f1-4978-5c4d-318c-5a64023c4a98.png)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/toc2/README.html

### Live Markdown Preview
- マークダウンセルの編集中、プレビューを表示
    - マークダウンセルの編集中にリアルタイムでプレビューが表示される。

![Markdown.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/ebac42b3-4edc-a3f5-8006-0ac5e2c2d02e.gif)

### spellchecker
- スペルミスの表示
    - 英語のスペルミスをハイライトで示す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/147a85f4-53eb-3d81-8483-2680930f5c6e.png)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/spellchecker/README.html

### Highlight selected word
- カーソル位置の表示
    - カーソルの置かれている単語をハイライトで示す。

![ezgif.com-video-to-gif (15).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/88335eef-8408-f5f5-e9ba-2c3e9d7e53d8.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/highlight_selected_word/README.html

### Scratchpad
- 簡易検証用セルの追加
    - 検証のために一時的にセルを追加してコードを書いて終わったらセルを消す、という作業をなくす。

![ezgif.com-video-to-gif (9).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/3a5f80a2-c29f-e3fe-40e1-4f2ce5aa9620.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/scratchpad/README.html

### Autopep8
- コードの成形
    - Pythonコードセル内のコードをpep8形式に再フォーマット、成形する。

※利用するためには、「autopep8」もインストールされていないと動かないためインストールします。

```
$ pip install autopep8
```

![ezgif.com-video-to-gif (7).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/5348c0ed-ae3e-3615-122d-27cbb57aaf22.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/code_prettify/README_autopep8.html

### AutoSaveTime
- 自動保存
    - ファイルが、一定時間間隔で自動保存される。 時間間隔の設定も可能。

![ezgif.com-video-to-gif (3).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/8d667b48-d47f-b8b4-bb65-3fadd9da926c.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/autosavetime/README.html

### Freeze
- セルのロック
  - Freeze（セルの編集、実行共に不可能）
  セル背景色が青の場合、セルの編集とコードの実行が不可能。
  - Read only（セルの実行のみ可能）
   セルの編集のロックなどの機能が使えるようになる。

![ezgif.com-video-to-gif (5).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/c3aca429-1219-d712-baa8-844e160df340.gif)

![ezgif.com-video-to-gif (6).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/00342393-b79a-c415-4e27-9250698dd080.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/freeze/readme.html

### Collapsible Headings
- 特定単位ごとにまとめる
    - 見出しの階層ごとに、セルを閉じることができる。

![ezgif.com-video-to-gif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/66442137-7396-a083-83e3-f45c016c22ab.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/collapsible_headings/readme.html

### Hide input all
- 表示の切り替え
    - セルのアウトプットのみに表示を切り替えられる。

![ezgif.com-video-to-gif (11).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/93e15692-a8a2-c689-585f-1949cb898d97.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/hide_input_all/readme.html

### Split Cells Notebook
- セルの分割
    - セルを半分に分割し、並べて表示。

![ezgif.com-video-to-gif (14).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/7232ddaa-e35b-19a1-0dc2-f280d8f5f49a.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/splitcell/readme.html

### AddBefore
- メニューからセルの追加
    - 追加されたボタンを押下することで、セルの追加が可能。

![ezgif.com-video-to-gif (10).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/15caf256-9b46-58fe-75be-5929685f4923.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/addbefore/readme.html

### Skip-Traceback
- エラー表示
    - エラーが起きた際にエラー内容のみを表示。（トグルボタンを押下することで、スタックトレースを表示）

![ezgif.com-video-to-gif (13).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/847dd455-f195-efb8-a260-11ae07acc9ff.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/skip-traceback/readme.html

### ExecuteTime
- 処理の実行時間と完了までにかかった時間をセルの下部に表示
    - 自動で各セルの実行時間のログを残す.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/252ce53a-def8-0b19-9204-81b115f018c4.png)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/execute_time/readme.html

### Comment/Uncomment Hotkey
- コメント化、コメント解除化のショートカット設定
    - コメントのオン/オフを切り替えるための新しい構成可能なホットキー バインディングを追加する。

![ezgif.com-video-to-gif (4).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/7ede7070-e345-9181-25f2-7343bed8669c.gif)

https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/comment-uncomment/readme.html

## lckr-jupyterlab-variableinspector（Jupyter Lab）
- インストール
```
$ pip install lckr-jupyterlab-variableinspector
```
インストール終了後、Jupyter Labを起動するとメニュー欄に「variableinspector」タブが追加される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/08f12a6a-4520-c06b-9cfc-a9a75c45cb62.png)

### Variable Inspector
- 定義した変数の中身と型を表示
    - 定義した変数について、都度printで出力する手間を省ける。

![ezgif.com-video-to-gif (16).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3507664/20b36cb1-54b5-40e0-4d57-e1b4d47f9f58.gif)

# ショートカット(Mac/Windows)　
## コマンドモード（セル自体の操作）

### コマンドモード、エディットモードの切り替え

|ショートカットキー  |Mac|Windows |
|---|---|---|
|コマンドモードへ切り替え|Esc  |Esc  |
|エディットモードへ切り替え |↩  |Enter  |

### Codeセル、Markdownセル、Rawセルの切り替え

|ショートカットキー  |Mac|Windows |
|---|---|---|
|Codeセルへ切り替え|Y  |Y  |
|Markdownセルへ切り替え |M  |M  |
|Rawセルへ切り替え |R  |R  |

### プログラムの実行（エディットモードでも可）
    
|ショートカットキー  |Mac|Windows |
|---|---|---|
|プログラムの実行|⌃ + ↩  |Ctrl + Enter  |
|プログラム実行し下のセルへ移動 | ⇧ + ↩ |Shift + Enter  |
|プログラムを実行し下にセルを挿入 |⌥ + ↩  |Alt + Enter  |     
        
### セルの追加、削除、やり直し

|ショートカットキー  |Mac|Windows |
|---|---|---|
|上にセルを追加する|A  |A  |
|下にセルを追加する |B  |B  |
|選択しているセルを削除する |DD  |DD  |
|セルの削除をやり直し |Z  |Z  |
    
### セルのカット、コピー、ペースト

|ショートカットキー  |Mac|Windows |
|---|---|---|
|選択しているセルをカット|X  |X  |
|選択しているセルをコピー |C  |C  |
|上に貼り付け |⇧ + V  |Shift + V  |
|下に貼り付け |V  |V  |

### セルの選択

|ショートカットキー  |Mac|Windows |
|---|---|---|
|上のセルを選択|K  |K  |
|　　　　〃|↑ |Up  |
|下のセルを選択 |J  | J |
|　　　　〃 |↓  |Down|

### セルのマージ

|ショートカットキー  |Mac|Windows |
|---|---|---|
|セルのマージ（選択していない場合は下のセルと)|⇧ + M  |Shift + M |

### セルの出力結果の表示・非表示

|ショートカットキー  |Mac|Windows |
|---|---|---|
|セルの出力結果の表示・非表示|O  |O  |

### 行番号の表示・非表示
        
<table>
  <thead>
    <tr>
      <th>ショートカットキー</th> <th>Mac</th><th>Windows</th>
    </tr>
  </thead>
  <tr>
    <td>行番号の表示・非表示</td> <td>L</td><td>L</td>
  </tr>
  <tr>
    <td>すべてのセルの行番号の非表示</td> <td>⇧ + L</td><td>Shift + L</td>
  </tr>
</table>

### 見出しにする

|ショートカットキー  |Mac|Windows |
|---|---|---|
|見出し１にする | 1 | 1 |
|見出し2にする | 2 | 2 |
|見出し3にする | 3 | 3 |
|見出し4にする | 4 | 4 |
|見出し5にする | 5 | 5 |
|見出し6にする | 6 | 6 |  
    
### 保存

|ショートカットキー  |Mac|Windows |
|---|---|---|
|保存|S |S  |
|　　　　〃|⌘ + S |Ctrl + S  |

### 検索・置換

|ショートカットキー  |Mac|Windows |
|---|---|---|
|検索・置換|F  |F  |

### カーネルの再起動

|ショートカットキー  |Mac|Windows |
|---|---|---|
|カーネルの再起動|0  |0  |

### コマンドパレットの表示

|ショートカットキー  |Mac|Windows |
|---|---|---|
|コマンドパレットの表示 |P  |P  |
|　　　　　〃| ⌘ + ⇧ + F | Ctrl + Shift + F |
|　　　　　〃 | ⌘ + ⇧ + P | Ctrl + Shift + P |

### キーボードショートカット表示

|ショートカットキー  |Mac|Windows |
|---|---|---|
|キーボードショートカット表示|H |H  |

### スクロール

|ショートカットキー  |Mac|Windows |
|---|---|---|
|上にスクロール| ⇧ + ␣ |Shift + Space  |
|下にスクロール |␣  |Space  |

## エディットモード（セル内での操作）
### コード補完

|ショートカットキー  |Mac|Windows |
|---|---|---|
|コード補完|⇥  |Tab  |

### インデント

|ショートカットキー  |Mac|Windows |
|---|---|---|
|インデント|⌘ + ]  |Ctrl + ]  |
    
### インデントの削除

|ショートカットキー  |Mac|Windows |
|---|---|---|
|インデントの削除|⌘ + [  |Ctrl + [ |
    
### 全選択

|ショートカットキー  |Mac|Windows |
|---|---|---|
|全選択|⌘ + A  |Ctrl + A  |
    
### やり直し

|ショートカットキー  |Mac|Windows |
|---|---|---|
|やり直し|⌘ + Z  |Ctrl + Z  |

### カーソルの移動

|ショートカットキー  |Mac|Windows |
|---|---|---|
|セルの最初に移動|⌘ + ↑  |Ctrl + Up  |
|セルの最後に移動|⌘ + ↓  |Ctrl + Down  |
|1単語前に移動|⌥ + ←  |Ctrl + Left  |
|1単語後に移動|⌥ + →  |Ctrl + Right  |
|上にカーソルを移動|↑  |Up  |
|下にカーソルを移動|↓  |Down  |

### 単語の削除
        
|ショートカットキー  |Mac|Windows |
|---|---|---|
|前の単語を削除|⌥ + ⌫  |Ctrl + Backspace  |
|後の単語を削除|⌥ + ⌦  |Ctrl + Delete  |

### 行の削除

|ショートカットキー  |Mac|Windows |
|---|---|---|
|行を削除する|⌘ + D  | Macのみ |

### セルの分割

|ショートカットキー  |Mac|Windows |
|---|---|---|
|セルの分割|⌃ + ⇧ + Minus  |Ctrl + Shift + Minus  |
        
### 保存

|ショートカットキー  |Mac|Windows |
|---|---|---|
|保存|⌘ + S  |Ctrl + S  |
    
### コメントアウト

|ショートカットキー  |Mac|Windows |
|---|---|---|
|コメントアウト|⌘ + /  |Ctrl + /  |

### コマンドパレットの表示

|ショートカットキー  |Mac|Windows |
|---|---|---|
|コマンドパレットの表示| ⌘ + ⇧ + F | Ctrl + Shift + F |
|　　　　　〃 | ⌘ + ⇧ + P | Ctrl + Shift + P |

# 最後に
本記事では、独断と偏見で選んだ便利なJupyterの拡張機能と、ショートカットキーを紹介しました。
紹介した拡張機能やショートカットキーを巧みに操り、作業の効率化、生産性の向上を目指しましょう！

::: note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=039b08c62caab9544f42)まで。
:::
https://www.recruit.nuco.co.jp/?qiita_item_id=039b08c62caab9544f42