- 技術 💻
Jupyter Notebookの使い方|ショートカット・Lab比較・エラー原文
結論
Jupyter Notebook は、ブラウザの画面でコードを「セル」単位に実行し、結果・グラフ・説明文を1つの .ipynb ファイルに残す道具です。今の版(Notebook 7)は JupyterLab と同じ土台で動き、ショートカットも画面の見た目も以前の版(Notebook 6)とは一部違います。
この記事でわかること
- インストール・起動からセル実行・Markdown・マジックコマンドまでの実行結果
- Notebook 7 のショートカット一覧(コマンドモード・編集モード)と、以前の版との違い
- JupyterLab・VS Code・Colab との違い、Git での扱い、kernel died 等のエラー原文と直し方
Jupyter Notebook は、ブラウザ(画面)・Jupyter Server(ファイルの読み書きと中継)・カーネル(コードを実行する Python のプロセス)の3つで動きます。画面で入力したコードはサーバーを通ってカーネルに渡され、結果が画面に戻り、保存すると .ipynb ファイルにコードと結果の両方が書き込まれます。
flowchart TD
B[ブラウザ<br>セルを編集・実行] -->|コード| S[Jupyter Server<br>127.0.0.1:8888]
S -->|コード| K[カーネル<br>ipykernel の Python]
K -->|結果| S
S -->|結果| B
S -->|保存| F[(.ipynb<br>コード+結果)]
よく調べられることの答えを先にまとめます。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| jupyter notebook のインストール | 仮想環境で pip install notebook。起動は jupyter notebook |
インストールと起動 |
| セルの実行 | Shift+Enter(実行して次へ)、Ctrl+Enter(その場で実行) | セルの実行 |
| jupyter notebook ショートカット | Esc でコマンドモード(a・b・dd・m・y)、Enter で編集モード | ショートカット一覧 |
| jupyter lab との違い | 中身は同じ。Lab はタブ・サイドバー付きの多画面、Notebook は1画面1ノート | JupyterLab・VS Code・Colab との違い |
| %time と %%time | % は1行、%% はセル全体。手元で %time は Wall time 161 ms | マジックコマンド |
| Git で差分が大きい | 結果と実行時刻が JSON に入るため。nbstripout で出力を消す | Git での扱い |
| kernel died と出た | カーネルのプロセスが落ちた。自動で再起動され、変数は消える | カーネルの再起動 |
| pip で入れたのに ModuleNotFoundError | pip を実行した Python とカーネルの Python が別。%pip install を使う |
よくあるエラー |
| パスワードを付けたい | jupyter server password。ハッシュが設定ファイルに書かれる |
ポート・パスワード・設定 |
確認環境:Ubuntu 24.04.5 LTS・Python 3.13.18 の仮想環境(venv)に、notebook 7.6.3・jupyterlab 4.6.4・jupyter_server 2.21.1・ipykernel 7.4.0・IPython 9.17.1・nbformat 5.11.1・nbconvert 7.17.2・nbstripout 0.9.1・nbdime 4.0.4 を pip で入れ、jupyter notebook --ip=127.0.0.1 --port=48804 で起動しました。画面の操作(セルの入力と実行、メニュー、ショートカット、ダイアログの文言、モードごとの枠線の色)は Chromium(playwright 1.63.0)で開いて確かめ、セルの出力は画面と、jupyter nbconvert --execute で実行した .ipynb の JSON の両方から取っています。Git の差分は git 2.43.0、JupyterLab は同じサーバーの /lab で開きました。VS Code・Google Colab は公式ドキュメントで確かめています(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Jupyter Notebookの使い方|ショートカット・Lab比較・エラー原文」
Jupyter Notebookとは(仕組みと Notebook 7)
この節では、Jupyter Notebook が何をする道具で、どういう仕組みで動いているのかが分かります。
Jupyter Notebook は、コード・実行結果・説明文(Markdown)を「セル」という区切りで1つのファイルに並べ、ブラウザで編集・実行するアプリケーションです。 ファイルの拡張子は .ipynb(IPython Notebook の略)で、中身は JSON です。データ分析・機械学習・学習用の教材で広く使われるのは、「少し書いて、すぐ結果を見て、続きを書く」という進め方に向いているためです。
| 部品 | 役割 | 手元での実体 |
|---|---|---|
| ブラウザの画面(フロントエンド) | セルの編集・実行の指示・結果の表示 | Chromium で http://127.0.0.1:48804/tree |
| Jupyter Server | ファイルの読み書き、カーネルの起動、画面との中継、認証 | jupyter_server 2.21.1(Tornado 6.6) |
| カーネル | コードを実行して結果を返すプロセス | python3 -m ipykernel_launcher(ipykernel 7.4.0) |
| .ipynb ファイル | セルの入力・出力・メタデータを JSON で保存 | nbformat 4.5 |
今の Jupyter Notebook は Notebook 7 で、公式ドキュメントは「JupyterLab・Jupyter Desktop と並ぶ兄弟のアプリで、JupyterLab より軽くシンプルな操作感」と位置づけています。手元で起動したログにも、Notebook 7 が JupyterLab の拡張として読み込まれている様子が出ました。
[I 2026-10-29 17:29:18.501 LabApp] JupyterLab extension loaded from /dev/shm/t04/venv/lib/python3.13/site-packages/jupyterlab
[I 2026-10-29 17:29:18.587 ServerApp] notebook | extension was successfully loaded.
[I 2026-10-29 17:29:18.588 ServerApp] Serving notebooks from local directory: /dev/shm/t04/work
[I 2026-10-29 17:29:18.588 ServerApp] Jupyter Server 2.21.1 is running at:
[I 2026-10-29 17:29:18.588 ServerApp] http://127.0.0.1:48804/tree?token=...
検索で見つかる解説の多くは、以前の版(Notebook 6、緑と青の枠線の画面)を元にしています。公式の移行ガイドは、Notebook 7 では以前の版の拡張機能やカスタマイズが動かない場合があり、互換性が要るときは nbclassic を使うよう案内しています。この記事は Notebook 7.6.3 の画面で確かめた内容です。
Jupyter Notebookのインストールと起動(pip・venv・ポート・トークン)
この節では、仮想環境に入れて起動し、ブラウザで開くまでの手順と、そのとき出る文言が分かります。
Python があれば、pip install notebook だけで入ります。 プロジェクトごとに仮想環境(venv)を作って入れると、ライブラリの版の衝突と、後述の「カーネル違いの ModuleNotFoundError」を避けやすくなります。Anaconda を使う方法もありますが、この記事は pip だけで進めます。
仮想環境を作って有効にする
python3 -m venv venv → source venv/bin/activate(Windows は venv\Scripts\activate)。
notebook を入れる
pip install notebook。notebook 7 は jupyterlab に依存しているため、ipykernel・jupyter_server・jupyterlab などがまとめて入ります。手元では nbdime・nbstripout も含めて 98 パッケージ、仮想環境は 240MB になりました。
起動する
ノートを置くフォルダーで jupyter notebook。既定ではブラウザが自動で開き、http://localhost:8888/tree?token=… が表示される。
ノートを作る
右上の「New」→「Python 3 (ipykernel)」。新しいタブで Untitled.ipynb が開く。
終わるとき
ノートの File →「Close and Shut Down Notebook」でカーネルを止め、端末で Ctrl+C(2回でも可)でサーバーを止める。タブを閉じるだけではカーネルは動いたまま。
手元では、ブラウザを開かず、ポートとトークンを決めて起動しました。
$ jupyter notebook --no-browser --ip=127.0.0.1 --port=48804 --IdentityProvider.token=rjc-t04-token
[I ServerApp] Jupyter Server 2.21.1 is running at:
[I ServerApp] http://127.0.0.1:48804/tree?token=...
[I ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
$ jupyter server list
Currently running servers:
http://127.0.0.1:48804/?token=rjc-t04-token :: /dev/shm/t04/work
トークンを付けずに /tree を開くと、302 でログイン画面に移りました(Location: /login?next=%2Ftree)。Chromium で見えた文言は「Password or token: / Token authentication is enabled / If no password has been configured, you need to open the server with its login token in the URL, or paste it above.」で、ブラウザが勝手に開かなかったときは、端末に出た token=… 付きの URL をそのまま貼るか、jupyter server list で URL を取り直します。
root で起動したときは、次の1行で止まりました。コンテナーや WSL で root のまま使うときは --allow-root を付けます。
[C 2026-10-29 17:29:07.369 ServerApp] Running as root is not recommended. Use --allow-root to bypass.
venv と pip の使い方は、関連記事「Python venvの使い方|仮想環境の作成・有効化・削除をOS別にコピペ」と関連記事「pipコマンド一覧|installのバージョン指定とrequirements.txt」で扱っています。
セルの実行と In [ ]・Out [ ] の読み方
この節では、最初のセルを実行したときに画面に何が出るかと、番号・出力の意味が分かります。
セルにコードを書いて Shift+Enter を押すと、カーネルが実行し、セルの下に結果が出ます。 新しいノートの最初のセルに x = 3 * 4 と x を入れて実行した画面では、左に [1]:、下に 12 が表示され、次の空のセルが選ばれました。
[1]: x = 3 * 4
x
[1]: 12
[ ]:
1番号は実行した順番
[1]・[2] は「何番目に実行したか」で、上から何番目かではない。上のセルを後から実行し直せば番号は増える。
2最後の式だけが Out に出る
print は途中でも出るが、式の値はセルの最後の1つだけ表示される。手元では print('合計', total) と total / len(sales) の両方が出た。
3[*] は実行中
番号の代わりに * が出ている間はカーネルが処理中。止めるには Kernel → Interrupt(I を2回)。
4変数はカーネルに残る
セルをまたいで変数が使える。順番を入れ替えて実行すると、ファイルの見た目と実際の状態がずれる。
実行した出力の実物です(nbconvert で実行した .ipynb から取り出した Python 3.13.18 のカーネル)。
[1]: import sys, platform
print(sys.version)
print(platform.platform())
3.13.18 (main, Oct 26 2026, 14:08:19) [Clang 23.1.3 ]
Linux-6.18.44-fc-v185-x86_64-with-glibc2.39
[2]: sales = {'4月': 120, '5月': 135, '6月': 98}
total = sum(sales.values())
total
[2]: 353
[3]: print('合計', total)
total / len(sales) # 最後の式だけ Out に出る
合計 353
[3]: 117.66666666666667
「Run」メニューには、実行の仕方が6種類あります。手元のメニューの文言と、そのショートカットです。
| メニュー(Run) | キー | 動き |
|---|---|---|
| Run Selected Cell | Shift+Enter | 実行して次のセルへ(最後なら新しいセルを足す) |
| Run Selected Cell and Do not Advance | Ctrl+Enter | 実行してその場に留まる |
| Run Selected Cell and Insert Below | Alt+Enter | 実行して下に新しいセルを足す |
| Run All Above Selected Cell/and All Below | なし | 上まで/下まで一気に実行 |
| Run All Cells | なし | 全部実行。手元の 14 セルは 3.9 秒 |
| Restart Kernel and Run All Cells… | なし | 変数を消してから上から全部。共有前の確認に使う |
編集モードとコマンドモード(Notebook 7 の見た目)
この節では、2つのモードの違いと、Notebook 7 でどう見分けるかが、計測した色で分かります。
セルの中に文字を打つのが編集モード、セルそのものを操作する(追加・削除・移動・種類の変更)のがコマンドモードです。 Enter で編集モードに入り、Esc でコマンドモードに戻ります。以前の版では「編集モードは緑の枠、コマンドモードは青の枠」でしたが、Notebook 7 の見た目は違います。Chromium で枠線の色を取りました。
| モード | ノート全体に付く class | 手元で見えた枠線 |
|---|---|---|
| 編集モード(Enter) | jp-mod-editMode |
入力欄の枠だけが青 rgb(25, 118, 210)・1px。左の青い縦棒あり |
| コマンドモード(Esc) | jp-mod-commandMode |
入力欄の枠は灰色 rgb(224, 224, 224)。セル全体を囲む青い枠と左の青い縦棒 |
編集モード(文字を打つ)
入力欄の中にカーソルがある
Tab で補完、Shift+Tab で説明
Ctrl+/ でコメントの切り替え
コマンドモード(セルを扱う)
a・b で追加、dd で削除、z で戻す
m で Markdown、y でコードに変更
矢印か j・k でセルを移動
「文字を打ったつもりが、セルが消えた・Markdown に変わった」は、コマンドモードのまま d・d や m を押したときに起きます。手元でも、コマンドモードで m を押すとセルの class が jp-MarkdownCell に、y で jp-CodeCell に変わりました。消したセルは z で戻ります。
Jupyter Notebookのショートカット一覧(コマンドモード・編集モード)
この節では、Notebook 7 の既定のショートカットが、キーの割り当てファイルと画面の両方で確かめた形で分かります。
一覧は、コマンドモードで Ctrl+Shift+H(Mac は Cmd+Shift+H)を押すと「Keyboard Shortcuts」のダイアログに出ます。 以前の版の「h キーで一覧」は Notebook 7 では動きませんでした(手元で h を押しても何も開かず、Ctrl+Shift+H で開きました)。
コマンドモード(Esc のあと)
| キー | 動き | 補足 |
|---|---|---|
| Enter | 編集モードに入る | |
| a/b | 上/下に新しいセルを足す | above/below |
| d d | セルを削除 | d を2回。z で元に戻す |
| x/c/v | 切り取り/コピー/下に貼り付け | 上に貼る Shift+V は Notebook 7 の既定にない |
| z/Shift+Z | セル操作を元に戻す/やり直す | |
| m/y/r | Markdown/コード/Raw に変更 | |
| 1〜6 | 見出し1〜6の Markdown にする | Markdown セルを選んでいるとき |
| ↑↓ または k/j | 上/下のセルを選ぶ | Shift+↑↓ で複数選択 |
| Shift+M | 選んだセルを結合 | Ctrl+Shift+− は編集モードで分割 |
| Ctrl+Shift+↑↓ | セルを上下に移動 | |
| Shift+L | 行番号の表示切り替え | 以前の版の l(エル)1つは動かない |
| o | 出力の表示/非表示 | |
| i i | カーネルを中断(Interrupt) | i を2回 |
| 0 0 | カーネルを再起動 | 0 を2回。確認ダイアログが出る |
| Ctrl+S | 保存(チェックポイント作成) | どちらのモードでも |
| Ctrl+Shift+C | コマンドパレット | メニューに無い操作を名前で探す |
| Ctrl+Shift+H | ショートカット一覧 |
編集モード(Enter のあと)
| キー | 動き |
|---|---|
| Esc または Ctrl+M | コマンドモードへ |
| Shift+Enter/Ctrl+Enter/Alt+Enter | 実行(次へ/その場/下に追加) |
| Tab | 補完(行頭では字下げ) |
| Shift+Tab | 関数の説明(ツールチップ) |
| Ctrl+/ | コメントの切り替え |
| Ctrl+D | 行を削除 |
| Ctrl+Shift+− | カーソルの位置でセルを分割 |
| Ctrl+F/Ctrl+H | 検索/置換(ノート全体) |
| Alt+↑↓ | 実行履歴をさかのぼる |
キーは、インストールされた JupyterLab のスキーマ(share/jupyter/lab/schemas の jupyter.lab.shortcuts)から取り出し、Ctrl+Shift+H のダイアログの内容と照らしました。Mac では Ctrl の代わりに Cmd が使われるものがあります(表の Ctrl+S・Ctrl+Enter・Ctrl+/ など「Accel」と定義されたキー)。
Markdownセルの書き方(見出し・表・数式)
この節では、説明文のセルの作り方と、何が表示できるかが分かります。
コマンドモードで m を押すとセルが Markdown になり、Shift+Enter で整形されて表示されます。 手元で次の内容を入れたセルは、見出し・太字・斜体・コード・リンク・箇条書き・表・数式がすべて描画されました。
# 売上の集計メモ
**太字** と *斜体*、`コード`、[リンク](https://jupyter.org/)
- 項目1
- 項目2
| 月 | 売上 |
|---|---|
| 4月 | 120 |
| 5月 | 135 |
$y = ax + b$
- 見出し(#)を付けると、Notebook 7 では左に折りたたみの印が出て、その見出しの下のセルをまとめて畳めます。目次(View → Table of Contents)にも使われます。
- 数式は
$で囲むと行の中に、$を2つ重ねて囲むと独立した行に、MathJax で描画されます。 - 描画した Markdown をもう一度編集するには、ダブルクリックするか Enter を押します。
Markdown の記法そのものは、関連記事「Markdown記法一覧|マークダウンの書き方早見表と表示されない原因」で扱っています。
マジックコマンド(%time・%%time・%%bash など)の実行結果
この節では、% で始まる IPython の命令のうち、よく使うものの実行結果が分かります。
マジックコマンドは Python の文法ではなく、カーネル(IPython)が解釈する命令です。 % 1つは「その1行」に、%% はセルの先頭に書いて「セル全体」に効きます。手元の出力です。
[4]: %time sum(range(10_000_000))
CPU times: user 155 ms, sys: 569 μs, total: 155 ms
Wall time: 161 ms
[4]: 49999995000000
[5]: %timeit sum(range(1_000_000))
18.6 ms ± 947 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)
[6]: %%time
import time
time.sleep(0.3)
print('セル全体を計る')
セル全体を計る
CPU times: user 314 μs, sys: 2 μs, total: 316 μs
Wall time: 300 ms
[7]: %%bash
echo "シェルで実行: $(whoami) @ $(pwd)"
ls -1 | head -3
シェルで実行: root @ /dev/shm/t04/work
Untitled.ipynb
demo.ipynb
hello.py
[8]: !python3 --version
Python 3.13.18
[9]: %who
platform sales sys time total
[10]: %%writefile hello.py
print('hello from file')
Overwriting hello.py
[11]: %run hello.py
hello from file
| 命令 | 何をするか | 手元の結果 |
|---|---|---|
%time 式 |
1回だけ実行して時間を出す | Wall time 161 ms |
%timeit 式 |
何回も実行して平均とばらつきを出す | 18.6 ms ± 947 μs(7 runs × 100 loops) |
%%time |
セル全体の時間 | sleep(0.3) で Wall time 300 ms |
%%bash/!コマンド |
シェルで実行(%%bash はセル全体、! は1行) | whoami・ls・python3 --version が動いた |
%who/%whos |
定義済みの変数の一覧 | platform sales sys time total |
%%writefile 名前/%run 名前 |
セルをファイルに書く/.py を実行 | Overwriting hello.py → hello from file |
%pip install 名前 |
カーネルと同じ Python に入れる | 後述の「カーネル違い」を避けられる |
%lsmagic |
使える命令の一覧 | %cd %env %matplotlib %reset %uv … |
%timeit の「7 runs, 100 loops each」は、100 回の実行を1まとまりにして7まとまり計り、その平均と標準偏差を出したという意味です。1回だけの %time より安定した値になります。
JupyterLab・VS Code・Google Colab との違い(判断表つき)
この節では、同じ .ipynb を開ける4つの環境の違いと、どれを選ぶかの目安が分かります。
4つとも同じ .ipynb ファイルを開け、カーネル(実行する Python)も同じ仕組みです。違うのは「画面」と「どこで動くか」です。 手元では、同じサーバーの /notebooks/demo.ipynb(Notebook)と /lab/tree/demo.ipynb(JupyterLab)で同じファイルを開きました。
| Jupyter Notebook 7 | JupyterLab 4 | VS Code | Google Colab | |
|---|---|---|---|---|
| 画面 | 1タブ1ノート。メニューは File〜Help の7つ | タブとサイドバー(ファイル・実行中・目次・拡張・デバッガー)。メニューに Tabs が増える | エディターのタブの1つ | Google のサイトの画面 |
| 動く場所 | 自分の PC のサーバー | 自分の PC のサーバー(同じサーバーで両方開ける) | 自分の PC(Jupyter 拡張機能+ipykernel) | Google のサーバー。保存先は Google ドライブ |
| 向いていること | 1つのノートに集中する・教材・軽い分析 | 複数のノートやターミナルを並べる・長い作業 | .py と一緒に書く・デバッグ・Git | 環境構築なし・GPU を使う・共有 |
| 手元で開くまで | 2.9 秒(15 セル) | 3.4 秒(同じファイル) | 公式ドキュメントで確認 | 公式ドキュメントで確認 |
| 制限 | 以前の版の拡張機能は動かないことがある | 画面の要素が多い | ショートカットは VS Code 流 | 無料版は最長 12 時間、放置で切断(公式 FAQ) |
Notebook 7 の画面の右上には「JupyterLab」のリンクがあり、View メニューには「Open JupyterLab」があります。どちらか一方を選ぶものではなく、同じサーバーで URL の /notebooks/ を /lab/tree/ に変えるだけで切り替わります。 手元の JupyterLab のサイドバーには「File Browser (Ctrl+Shift+F)・Running Terminals and Kernels・Table of Contents・Extension Manager・Property Inspector・Debugger」が並びました。
VS Code は公式ドキュメントによると、Jupyter 拡張機能(ms-toolsai.jupyter)を入れ、コマンドパレットの「Create: New Jupyter Notebook」で .ipynb を作り、右上のカーネルピッカーで Python 環境を選びます。変数の一覧(Variables)、Data Viewer、1行ずつ実行する Run by Line、ブレークポイントでのデバッグ(ipykernel 6 以上が要る)が使えます。Colab は、Google の公式 FAQ で「設定不要で使えるホスト型の Jupyter ノートブックサービス」とされ、保存先は Google ドライブ、無料版は最長 12 時間で、放置するとランタイムが切れます。Colab の使い方は関連記事「Google Colabとは|使い方・GPU・料金・制限とエラーの直し方」で扱っています。
どれを使うかの判断表
- 1PC に Python を入れたくない・GPU を試したい → Colabブラウザだけで始められる。長時間の学習や社外秘のデータには向かない
- 2すでに VS Code で開発している → VS Code の Jupyter 拡張機能.py・Git・デバッガーと同じ画面。pip install notebook は不要(ipykernel は要る)
- 3ノートを複数並べる・ターミナルも使う → JupyterLabpip install jupyterlab → jupyter lab
- 41つのノートに集中する・教材として配る → Jupyter Notebook画面の要素が少なく、説明しやすい。Lab へはいつでも切り替えられる
手元で計った数字(Notebook・JupyterLab)
起動・表示・実行にかかった時間と大きさです(2026年10月29日時点、Ubuntu 24.04・Python 3.13 の仮想環境)。nbstripout は後の「Git での扱い」の節で説明します。
| 計ったこと | 値 | 条件 |
|---|---|---|
| .ipynb の大きさ(実行前→後) | 7,956 → 12,196 バイト | 15 セル・画像なし |
| HTML に変換 | 297KB | nbconvert --to html(CSS 込み) |
| nbconvert --execute | 19.8 秒 | カーネル起動+14 セル。画面を使わない実行 |
| nbstripout を入れた直後の差分 | 8 insertions / 49 deletions | 2 セルのノート |
.ipynb の中身(JSON の構造)
この節では、保存されたファイルに何が入っているかと、それが Git や共有で意味することが分かります。
.ipynb は JSON で、cells(セルの配列)と metadata(カーネルの情報)と nbformat(形式の版)からできています。 実行したセルは、コード(source)だけでなく、結果(outputs)と実行の時刻(metadata.execution)も持ちます。手元の2番目のセルです。
{
"cell_type": "code",
"execution_count": 2,
"id": "7767baa9",
"metadata": {
"execution": {
"iopub.execute_input": "2026-10-29T08:32:43.612598Z",
"iopub.status.busy": "2026-10-29T08:32:43.611016Z",
"iopub.status.idle": "2026-10-29T08:32:43.623664Z",
"shell.execute_reply": "2026-10-29T08:32:43.622030Z"
}
},
"outputs": [
{
"data": { "text/plain": [ "353" ] },
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sales = {'4月': 120, '5月': 135, '6月': 98}\n",
"total = sum(sales.values())\n",
"total"
]
}
| 項目 | 意味 | 手元の値 |
|---|---|---|
cell_type |
code・markdown・raw | code |
source |
セルの内容(1行ずつの配列) | 3行 |
outputs[].output_type |
stream(print)・execute_result(最後の式)・display_data(図)・error | execute_result |
metadata.execution |
実行の時刻。実行するたびに変わる | 4つの時刻 |
metadata.kernelspec(ノート全体) |
どのカーネルで動かしたか | name: python3 |
nbformat/nbformat_minor |
形式の版 | 4/5 |
ファイルの大きさは、実行前 7,956 バイト、実行後 12,196 バイトでした。画像を出力すると Base64 の文字列が入るため、グラフを多く含むノートは MB 単位になります。jupyter nbconvert --to html で HTML(手元で 297KB)、--to script で Markdown をコメントにした .py(1,210 バイト)に変換できます。
Git での扱い(nbstripout・nbdime)
この節では、.ipynb を Git に入れたときに差分が大きくなる理由と、2つの道具での直し方が分かります。
コードを1文字も変えずに「実行し直して保存」しただけで、Git には差分が出ます。 結果と実行の時刻が JSON に入っているためです。手元で2セルのノートを commit し、実行し直して git diff を取りました。
$ git diff --stat
analysis.ipynb | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
$ git diff
- "iopub.execute_input": "2026-10-29T08:34:01.315458Z",
- "iopub.status.busy": "2026-10-29T08:34:01.315240Z",
+ "iopub.execute_input": "2026-10-29T08:34:05.534876Z",
+ "iopub.status.busy": "2026-10-29T08:34:05.534532Z",
...
- "実行時刻 17:34:01\n"
+ "実行時刻 17:34:05\n"
出力ごと commit する
手元では nbstripout を入れた直後の差分が 8 insertions / 49 deletions で、出力と時刻がすべて消えた
$ pip install nbstripout
$ nbstripout --install # このリポジトリに設定する
$ cat .git/info/attributes
*.ipynb filter=nbstripout
*.zpln filter=nbstripout
*.ipynb diff=ipynb
$ git config --get filter.nbstripout.clean
"/dev/shm/t04/venv/bin/python3" -m nbstripout
フィルターは「commit に入る内容」から出力を落とすだけで、手元のファイルの出力は残ります。チームで揃えるときは --install --attributes .gitattributes で .gitattributes に書いて commit します。
差分を「セル単位」で読みたいときは nbdime です。コードを 1_000_000 から 2_000_000 に変えたときの nbdiff の出力です。
$ nbdiff --no-color -s HEAD analysis.ipynb
nbdiff analysis.ipynb (HEAD) analysis.ipynb
## modified /cells/1/source:
- %time sum(range(1_000_000))
+ %time sum(range(2_000_000))
- 1nbstripout を入れる出力と実行時刻を commit に入れない。レビューがコードだけになる
- 2.ipynb_checkpoints/ を .gitignore に保存のたびにサーバーが作る複製フォルダー。手元でも demo-checkpoint.ipynb ができていた
- 3共有前に「Restart Kernel and Run All Cells」上から順に動くことを確かめる。実行番号が 1 から並ぶ
- 4長くなった処理は .py に移す%%writefile で書き出し、ノートからは import する。テストもできる
- 5鍵や接続文字列を出力に残さない出力は JSON に入って commit される。環境変数から読む
カーネルの再起動・中断・切り替え(kernel died の意味)
この節では、カーネルが何で、再起動すると何が起きるか、「kernel died」の画面の意味が分かります。
カーネルは、ノートごとに起動する Python のプロセスです。 変数・import したモジュール・開いたファイルはすべてこのプロセスの中にあり、再起動すると全部消えます。手元で 0 を2回押したときの確認ダイアログと、再起動後に前のセルの変数を使ったときの結果です。
Restart Kernel?
Do you want to restart the kernel of demo.ipynb? All variables will be lost.
[ ] Do not ask me again [Cancel] [Restart]
[1]: print('合計', total)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[1], line 1
----> 1 print('合計', total)
2 total / len(sales) # 最後の式だけ Out に出る
NameError: name 'total' is not defined
実行番号が [1] に戻っていることにも注目です。「さっきまで動いていたのに NameError」は、再起動したあと上のセルを実行していないときに出ます。
| Kernel メニュー | キー | いつ使うか |
|---|---|---|
| Interrupt Kernel | I, I | 無限ループや長い処理を止める。変数は残る |
| Restart Kernel… | 0, 0 | 変数を全部消してやり直す。import し直しになる |
| Restart Kernel and Clear Outputs of All Cells… | なし | 出力も消して配る前の形にする |
| Restart Kernel and Run All Cells… | なし | 上から順に動くか確かめる |
| Shut Down Kernel | なし | メモリを返す。タブを閉じるだけでは止まらない |
| Change Kernel… | なし | 別の仮想環境の Python に切り替える |
「The kernel appears to have died」
セルで os._exit(1) を実行してカーネルのプロセスを落とすと、Chromium に次のダイアログが出ました。
Kernel Restarting
The kernel for demo.ipynb appears to have died. It will restart automatically.
[Ok]
サーバーのログには AsyncIOLoopKernelRestarter: restarting kernel (1/5), keep random ports と kernel f36e91f9-… restarted が残りました。原因はほぼ「メモリ不足」か「C 拡張のクラッシュ」です。 大きなデータを読んだ直後に出るならメモリ不足で、読む量を減らす(pandas の usecols・chunksize)か、dtype を小さくします。特定のライブラリを import した直後に出るなら、そのライブラリと Python・NumPy の版の組み合わせを疑い、仮想環境を作り直します。自動で再起動されますが、変数は消えています。
別の仮想環境をカーネルとして登録する
Notebook を入れたサーバー用の環境とは別に、プロジェクトの仮想環境をカーネルとして登録すると、「Change Kernel…」で切り替えられます。
$ /path/to/proj-venv/bin/python -m ipykernel install --user --name proj-env --display-name "Python (proj-env)"
Installed kernelspec proj-env in .../share/jupyter/kernels/proj-env
$ jupyter kernelspec list
Available kernels:
proj-env /dev/shm/t04/venv/share/jupyter/kernels/proj-env
python3 /dev/shm/t04/venv/share/jupyter/kernels/python3
kernel.json の argv に、その環境の Python の絶対パス(手元では /dev/shm/t04/venv2/bin/python)が書かれ、画面のカーネル名に「Python (proj-env)」が出ます。proj-env 側に ipykernel が入っていることが条件です。
ポート・パスワード・設定ファイル(jupyter server password)
この節では、ポートが使えないときの文言、パスワードの付け方、設定ファイルの場所と主な項目が分かります。
既定のポートは 8888 で、使われていれば次のポートを自動で試します。 手元で 48804 を使っている状態でもう1つ起動すると、48805 で起動しました。
[I ServerApp] The port 48804 is already in use, trying another port.
[I ServerApp] Jupyter Server 2.21.1 is running at:
[I ServerApp] http://127.0.0.1:48805/tree
(--ServerApp.port_retries=0 を付けたとき)
[I ServerApp] The port 48804 is already in use.
[C ServerApp] ERROR: the Jupyter server could not be started because port 48804 is not available.
「いつもの 8888 で開いたら別のノートが出た」は、前に起動したサーバーが残っているときに起きます。jupyter server list で動いているサーバーと URL が分かります。
パスワードの設定
トークンの代わりにパスワードでログインするには jupyter server password を実行します。手元の出力と、書き込まれたファイルです。
$ jupyter server password
Enter password:
Verify password:
[JupyterPasswordApp] Wrote hashed password to /home/user/.jupyter/jupyter_server_config.json
$ cat ~/.jupyter/jupyter_server_config.json
{
"IdentityProvider": {
"hashed_password": "argon2:$argon2id$v=19$m=10240,t=10,p=8$IOqAi6XD...(省略)"
}
}
パスワードそのものではなく argon2 のハッシュが保存されます。この状態で起動したサーバーを Chromium で開くと、ログイン画面は「Password:」だけになり、違うパスワードでは「Invalid credentials」、正しいパスワードで /tree(タイトル「Home」)に入れました。公式ドキュメントは、パスワードを使うときは HTTPS を組み合わせるよう案内しています。
設定ファイル
jupyter server --generate-config で、全項目がコメントになった ~/.jupyter/jupyter_server_config.py(手元で 1,527 行)が作られます。よく変える項目です。
c.ServerApp.ip = '127.0.0.1' # 既定は localhost。他の PC から開くなら '0.0.0.0'(要パスワード・HTTPS)
c.ServerApp.port = 8888 # 既定 0 は「8888 から探す」
c.ServerApp.port_retries = 50 # 使えないとき何回ずらすか
c.ServerApp.open_browser = False # ブラウザを自動で開かない
c.ServerApp.root_dir = '/path/to/notebooks' # 起動時のフォルダー
同じ項目はコマンドの引数でも指定でき(--ServerApp.port=48804 のように書く)、JSON(jupyter_server_config.json)は .py より優先されます。パスワードが .py に書いたのに効かないときは、.json に別の値が残っていないかを見ます。
よくあるエラーとつまずき(原文つき)
この節では、Jupyter Notebook でよく出るエラーの原文と、原因・直し方が一覧で分かります。
| 原文(手元で出たもの) | 原因 | 直し方 |
|---|---|---|
ModuleNotFoundError: No module named 'pandas' |
カーネルの Python にそのライブラリが無い。pip を実行した Python が別 | セルで %pip install pandas。または import sys; sys.executable で Python を確かめ、その pip で入れる |
NameError: name 'total' is not defined |
カーネルを再起動した・上のセルを実行していない | 上から順に実行する。Restart Kernel and Run All Cells で確かめる |
The kernel for demo.ipynb appears to have died. It will restart automatically. |
カーネルのプロセスが落ちた(メモリ不足・ライブラリのクラッシュ) | 読む量を減らす。ライブラリの版を揃えて仮想環境を作り直す |
Running as root is not recommended. Use --allow-root to bypass. |
root で起動した | --allow-root を付ける(コンテナー等)。通常は一般ユーザーで起動 |
The port 48804 is already in use, trying another port. |
前のサーバーが動いている | jupyter server list で確かめ、要らないサーバーを Ctrl+C で止める |
ERROR: the Jupyter server could not be started because port 48804 is not available. |
port_retries=0 でポートが使えない | 別のポートを --port で指定する |
| ログイン画面「Password or token:」「Invalid credentials」 | トークン無しで開いた・パスワード違い | 端末の token=… 付き URL を貼る。jupyter server list |
KeyError: '7月' など Python のエラー |
コードの誤り | Traceback の Cell In[13], line 1 がセルと行番号。%debug でその場を調べられる |
| Markdown に変わった・セルが消えた | コマンドモードで m・d d を押した | y でコードに戻す。z で削除を取り消す |
「pip install したのに ModuleNotFoundError」の実物
いちばん多い原因は、pip を実行した Python と、ノートのカーネルの Python が別であることです。手元で、tabulate を proj-env(venv2)にだけ入れ、同じノートを2つのカーネルで実行しました。
===== カーネル python3(Notebook を入れた venv)
>> import sys ; print(sys.executable)
/dev/shm/t04/venv/bin/python3
>> !which python pip
/dev/shm/t04/venv/bin/python
/dev/shm/t04/venv/bin/pip
>> import tabulate ; print(tabulate.__version__)
ModuleNotFoundError: No module named 'tabulate'
===== カーネル proj-env(venv2)
>> import sys ; print(sys.executable)
/dev/shm/t04/venv2/bin/python
>> !which python pip
/dev/shm/t04/venv/bin/python ← ! はサーバー側のシェル。カーネルとは別
/dev/shm/t04/venv/bin/pip
>> import tabulate ; print(tabulate.__version__)
0.10.0
sys.executable を見る
セルで import sys; sys.executable。これがカーネルの Python。
pip の Python と比べる
%pip で入れる
%pip install 名前 はカーネルの Python に入れる。!pip はサーバー側のシェルの pip で、別の Python になり得る。
% と ! の違い
カーネルを登録する
プロジェクトの venv に ipykernel を入れ、python -m ipykernel install --user --name 名前。
Change Kernel… で選ぶ
入れたら再起動
import 済みのモジュールは、カーネルを再起動するまで新しい版に変わらない。
0 を2回
pandas・matplotlib を入れたあとの使い方は、関連記事「pandasの使い方 逆引き81選|pandas 3.0の実行結果つき」で扱っています。
よくある質問
Q. Jupyter Notebook とは何ですか? A. ブラウザの画面でコードをセル単位に実行し、結果と説明文を1つの .ipynb ファイルに残すアプリケーションです。Python 以外のカーネル(R・Julia など)も使えますが、既定は Python(ipykernel)です。
Q. Jupyter Notebook と JupyterLab はどちらを使えばよいですか?
A. 中身は同じで、同じサーバーの URL(/notebooks/ と /lab/)で切り替えられます。1つのノートに集中するなら Notebook、複数のノートやターミナルを並べるなら JupyterLab です。pip install notebook で両方入ります(notebook 7 は jupyterlab に依存しており、手元でも同じサーバーの /lab が開けました)。
Q. Shift+Enter と Ctrl+Enter の違いは? A. どちらも実行しますが、Shift+Enter は次のセルに移り(最後なら新しいセルを足し)、Ctrl+Enter はその場に留まります。同じセルを直しながら何度も実行するときは Ctrl+Enter です。
Q. ショートカットの一覧はどこで見られますか? A. コマンドモード(Esc)で Ctrl+Shift+H(Mac は Cmd+Shift+H)です。以前の版の「h」は Notebook 7 では動きません。Settings → Settings Editor → Keyboard Shortcuts で割り当てを変えられます。
Q. pip install したのに import できません。
A. pip を実行した Python とカーネルの Python が別です。セルで %pip install 名前 を実行するとカーネル側に入ります。入れたあとはカーネルを再起動します。
Q. 「kernel died」「The kernel appears to have died」と出ました。 A. カーネルのプロセスが落ちて、自動で再起動されました。変数は消えています。大きなデータを読んだ直後ならメモリ不足、特定の import 直後ならライブラリの版の問題です。
Q. 変数が消えました・NameError が出ます。 A. カーネルを再起動したか、上のセルを実行していません。実行番号 [1] から並んでいるなら再起動後です。上から順に実行し直します。
Q. トークンとは何ですか?毎回 URL に付けるのは面倒です。
A. 起動のたびに作られる合言葉で、URL に付けてログインします。jupyter server password でパスワードを設定すると、以後はパスワードでログインできます。パスワードのハッシュが jupyter_server_config.json に保存されます。
Q. ポート 8888 が使えないと出ます。
A. 既定では自動で次のポート(8889…)を試します。前に起動したサーバーが残っていることが多いので、jupyter server list で確かめて止めます。固定したいときは --port=番号 です。
Q. .ipynb を Git で管理すると差分が大きくなります。
A. 出力と実行時刻が JSON に入るためです。nbstripout をフィルターとして入れると commit から出力が落ち、nbdime の nbdiff でセル単位の差分を読めます。.ipynb_checkpoints/ は .gitignore に入れます。
Q. ノートを他の人に渡すには?
A. .ipynb をそのまま渡せば同じ環境で開けます。環境が無い相手には jupyter nbconvert --to html で HTML に、コードだけ欲しい相手には --to script で .py にします。File → Save and Export Notebook As からも同じことができます。
Q. タブを閉じればカーネルは止まりますか? A. 止まりません。File → Close and Shut Down Notebook か、「Running」タブからシャットダウンします。サーバーを止めるのは端末の Ctrl+C です。
まとめ
- Jupyter Notebook は、ブラウザ・Jupyter Server・カーネルの3つで動き、コードと結果を .ipynb(JSON)に残す。今の版は Notebook 7 で、JupyterLab と同じ土台で動く。
- 仮想環境に
pip install notebook→jupyter notebook。Shift+Enter で実行、Esc でコマンドモード(a・b・dd・m・y・z)、Enter で編集モード。一覧は Ctrl+Shift+H。 - 手元の計測では、ノートを開くのに 2.9 秒、14 セルの全実行に 3.9 秒。%time は Wall time 161 ms、%timeit は 18.6 ms ± 947 μs。
- JupyterLab・VS Code・Colab は同じ .ipynb を開ける。1ノート集中なら Notebook、複数並べるなら Lab、.py と一緒なら VS Code、環境構築なしと GPU なら Colab。
- Git には nbstripout と nbdime。ModuleNotFoundError は
%pip install、kernel died はメモリと版、NameError は再起動後の実行順を疑う。
参考・出典
確認日はいずれも 2026年10月29日です。
- Jupyter Notebook「Jupyter Notebook documentation」:https://jupyter-notebook.readthedocs.io/en/latest/
- Jupyter Notebook「Migrating to Notebook 7」:https://jupyter-notebook.readthedocs.io/en/latest/migrate_to_notebook7.html
- Jupyter Server「Running a public Jupyter Server」(パスワード・ポート・設定):https://jupyter-server.readthedocs.io/en/latest/operators/public-server.html
- JupyterLab「JupyterLab Documentation」:https://jupyterlab.readthedocs.io/en/latest/
- IPython「Built-in magic commands」:https://ipython.readthedocs.io/en/stable/interactive/magics.html
- nbformat「The Jupyter Notebook Format」:https://nbformat.readthedocs.io/en/latest/format_description.html
- nbstripout(GitHub):https://github.com/kynan/nbstripout
- nbdime「nbdime – diffing and merging of Jupyter Notebooks」:https://nbdime.readthedocs.io/en/latest/
- Visual Studio Code「Jupyter Notebooks in VS Code」:https://code.visualstudio.com/docs/datascience/jupyter-notebooks
- Google Colaboratory「Frequently Asked Questions」:https://research.google.com/colaboratory/faq.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Jupyter Notebookの使い方|ショートカット・Lab比較・エラー原文」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。