結論

Jupyter Notebook は、ブラウザの画面でコードを「セル」単位に実行し、結果・グラフ・説明文を1つの .ipynb ファイルに残す道具です。今の版(Notebook 7)は JupyterLab と同じ土台で動き、ショートカットも画面の見た目も以前の版(Notebook 6)とは一部違います。

この記事でわかること

  • インストール・起動からセル実行・Markdown・マジックコマンドまでの実行結果
  • Notebook 7 のショートカット一覧(コマンドモード・編集モード)と、以前の版との違い
  • JupyterLab・VS Code・Colab との違い、Git での扱い、kernel died 等のエラー原文と直し方

2026年10月29日更新|Notebook 7.6.3・JupyterLab 4.6.4・Chromium で実行確認

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 だけで進めます。

1

仮想環境を作って有効にする

python3 -m venv venv → source venv/bin/activate(Windows は venv\Scripts\activate)。

venv の詳細は関連記事へ

2

notebook を入れる

pip install notebook。notebook 7 は jupyterlab に依存しているため、ipykernel・jupyter_server・jupyterlab などがまとめて入ります。手元では nbdime・nbstripout も含めて 98 パッケージ、仮想環境は 240MB になりました。

約1分

3

起動する

ノートを置くフォルダーで jupyter notebook。既定ではブラウザが自動で開き、http://localhost:8888/tree?token=… が表示される。

起動 0.15 秒(ログの時刻差)

4

ノートを作る

右上の「New」→「Python 3 (ipykernel)」。新しいタブで Untitled.ipynb が開く。

ファイルはそのフォルダーに作られる

5

終わるとき

ノートの File →「Close and Shut Down Notebook」でカーネルを止め、端末で Ctrl+C(2回でも可)でサーバーを止める。タブを閉じるだけではカーネルは動いたまま。

「Running」タブで動いているカーネルが見える

手元では、ブラウザを開かず、ポートとトークンを決めて起動しました。

$ 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・料金・制限とエラーの直し方」で扱っています。

どれを使うかの判断表

  1. 1PC に Python を入れたくない・GPU を試したい → Colabブラウザだけで始められる。長時間の学習や社外秘のデータには向かない
  2. 2すでに VS Code で開発している → VS Code の Jupyter 拡張機能.py・Git・デバッガーと同じ画面。pip install notebook は不要(ipykernel は要る)
  3. 3ノートを複数並べる・ターミナルも使う → JupyterLabpip install jupyterlab → jupyter lab
  4. 41つのノートに集中する・教材として配る → Jupyter Notebook画面の要素が少なく、説明しやすい。Lab へはいつでも切り替えられる

手元で計った数字(Notebook・JupyterLab)

起動・表示・実行にかかった時間と大きさです(2026年10月29日時点、Ubuntu 24.04・Python 3.13 の仮想環境)。nbstripout は後の「Git での扱い」の節で説明します。

0.15秒サーバーの起動拡張の読み込み開始から running at まで(ログの時刻差)
2.9秒15 セルのノートを開くChromium で goto から最初のセルが見えるまで。JupyterLab は 3.4 秒
3.9秒Run All Cells(14 セル)%timeit と sleep(0.3) を含む
240MB仮想環境の大きさnotebook+jupyterlab+nbdime+nbstripout。ipykernel だけの venv は 91MB
計ったこと 値 条件
.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 する

やりがち実行するたびに時刻と結果が差分になり、レビューでコードの変更が埋もれる。画像の出力で1ファイルが数 MB になる
↔
代わりにnbstripout を Git のフィルターとして入れ、commit 時に出力と実行時刻を自動で落とす。結果を残したいノートは HTML に変換して別に置く

手元では 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
1

sys.executable を見る

セルで import sys; sys.executable。これがカーネルの Python。

pip の Python と比べる

2

%pip で入れる

%pip install 名前 はカーネルの Python に入れる。!pip はサーバー側のシェルの pip で、別の Python になり得る。

% と ! の違い

3

カーネルを登録する

プロジェクトの venv に ipykernel を入れ、python -m ipykernel install --user --name 名前。

Change Kernel… で選ぶ

4

入れたら再起動

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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?