VSCodeとJupyterLabの違いや連携方法について

採用はこちら

VSCode(Visual Studio Code)とJupyterLabは、どちらもPythonによるプログラミングやデータ分析、Jupyter Notebookの編集・実行に利用できるツールです。

一見すると似ていますが、もともとの目的や得意分野には大きな違いがあります。

VSCodeは、PythonだけでなくJavaScriptやTypeScript、Java、C/C++、Goなど、さまざまなプログラミング言語を扱える汎用的なコードエディタです。

一方、JupyterLabはJupyter Notebookを中心として、データ分析や科学計算、機械学習などを対話的に進めることを目的とした環境です。

そのため、一般的なソフトウェア開発まで幅広く行いたい場合はVSCodeが向いており、Notebookを使って分析や実験を繰り返したい場合はJupyterLabが使いやすい傾向があります。

ただし、VSCodeでもJupyter Notebookを本格的に扱うことができ、JupyterLabでもターミナルやテキストエディタ、デバッガなどを利用できます。

完全に別用途のソフトウェアというよりも、それぞれ得意分野が異なる開発・分析環境と考えると分かりやすいでしょう。

目次

VSCodeとJupyterLabの主な違い

VSCodeとJupyterLabの違いを整理すると、次のようになります。

比較項目VSCodeJupyterLab
主な用途ソフトウェア開発全般対話的なデータ分析・科学計算
Python対応対応
.ipynbJupyter拡張機能で対応中心的な機能
.pyファイル編集非常に得意対応可能
Python以外多数の言語に対応Kernelを通じて複数言語に対応
デバッグ非常に強力対応Kernelなら利用可能
Git標準機能として充実拡張機能などで利用可能
ターミナル統合ターミナルを搭載ターミナルを搭載
データ分析非常に便利特に得意
大規模開発得意Notebook中心の用途に向く
リモート環境対応対応
Jupyter Kernel利用可能利用する

どちらが優れているというよりも、作業内容に応じて選択することが重要です。

VSCodeとは

幅広いプログラミングに対応したコードエディタ

VSCodeはMicrosoftが提供しているコードエディタです。

拡張機能を追加することで、多数のプログラミング言語やフレームワークに対応できます。

Python開発の場合でも、単純にコードを書くことだけでなく、次のような作業を一つの環境で行えます。

  • Pythonコードの編集
  • デバッグ
  • テスト
  • Gitによるバージョン管理
  • ターミナル操作
  • Jupyter Notebookの実行
  • DockerやSSHを利用したリモート開発

そのため、データ分析だけでなく、WebアプリやAPI、バッチ処理なども含めて一つのプロジェクトとして管理したい場合に適しています。

Jupyter Notebookも利用できる

VSCodeにPython拡張機能やJupyter拡張機能を導入すると、.ipynb形式のJupyter Notebookを直接開いて編集できます。

Notebookでは、セル単位でPythonコードを実行できます。

例えば、次のような処理をVSCode上のNotebookから実行できます。

import pandas as pd

df = pd.read_csv("data/sample.csv")

df.head()

コードセルだけでなくMarkdownセルも扱えるため、分析内容の説明やメモを残しながら作業できます。

PythonファイルとNotebookを組み合わせやすい

VSCodeの大きなメリットは、Notebookと通常のPythonファイルを同じプロジェクト内で扱いやすいことです。

例えば、次のようなプロジェクト構成にできます。

project/
├─ notebooks/
│  └─ analysis.ipynb
├─ src/
│  ├─ main.py
│  └─ utils.py
├─ tests/
│  └─ test_utils.py
├─ data/
│  └─ sample.csv
└─ README.md

Notebookで試した処理を、後からsrcディレクトリのPythonファイルへ移すといった作業も行いやすくなります。

例えば、データ読み込み処理を次のように関数化します。

# src/data_loader.py

import pandas as pd

def load_data(path):
    return pd.read_csv(path)

Notebook側からは次のように利用できます。

from src.data_loader import load_data

df = load_data("data/sample.csv")

分析用のコードが大きくなってきた場合でも、処理をPythonモジュールへ分割しやすい点がVSCodeの強みです。

JupyterLabとは

Notebookを中心とした対話型環境

JupyterLabは、Jupyter Notebookを中心として設計されたWebベースの開発・分析環境です。

Notebookだけでなく、テキストエディタやファイルブラウザ、ターミナルなども同じ画面上で利用できます。

例えば、次のような作業を一つのブラウザ画面で行えます。

Notebook
+
ファイルブラウザ
+
ターミナル
+
テキストファイル
+
データファイル

複数のファイルをタブや分割画面で表示できるため、データを確認しながらNotebookを編集するといった作業に向いています。

データ分析や試行錯誤に向いている

JupyterLabは、コードを書いてすぐに結果を確認するような作業と相性が良い環境です。

例えば、最初にデータを読み込みます。

import pandas as pd

df = pd.read_csv("sales.csv")

続いてデータを確認します。

df.head()

統計情報を確認することもできます。

df.describe()

さらに集計処理を行います。

df.groupby("category")["sales"].sum()

このように、

データを読み込む
↓
確認する
↓
加工する
↓
集計する
↓
可視化する
↓
再度コードを修正する

という流れを繰り返す探索的なデータ分析に適しています。

JupyterLabでもデバッグできる

JupyterLabにはデバッグ機能も搭載されています。

対応するKernelを使用している場合は、ブレークポイントの設定やステップ実行、変数の確認などが可能です。

そのため、「JupyterLabではデバッグできない」というわけではありません。

ただし、大規模なPythonプロジェクトのソースコードやテスト、設定ファイルなども含めて総合的にデバッグする場合は、VSCodeの方が扱いやすいことが多いでしょう。

Jupyter Kernelとは

コードを実際に実行するプロセス

VSCodeとJupyterLabの連携を理解するうえで重要なのが「Kernel」です。

Jupyter環境では、画面そのものがPythonコードを実行しているわけではありません。

実際のコード実行はKernelと呼ばれるプロセスが担当します。

JupyterLabの場合は、概念的には次のような構成になります。

JupyterLab
↓
Jupyter Server
↓
Kernel
↓
Python

Notebookに入力したコードがKernelへ送られ、KernelがPythonコードを実行して結果を返します。

VSCodeでもKernelを利用する

VSCodeでJupyter Notebookを実行する場合も、Kernelを選択してコードを実行します。

概念的には次のような構成です。

VSCode
↓
Jupyter拡張機能
↓
Kernel
↓
Python環境

VSCodeではNotebookを開くと、画面上部などから使用するKernelを選択できます。

そのため、VSCodeとJupyterLabで同じPython環境を利用することも可能です。

VSCodeとJupyterLabでは同じNotebookを利用できる

.ipynbファイルを共有できる

Jupyter Notebookでは、一般的に.ipynbというファイル形式が使用されます。

例えば次のようなファイルです。

analysis.ipynb

JupyterLabで作成した.ipynbファイルは、VSCodeでも開くことができます。

逆に、VSCodeで作成・編集したNotebookをJupyterLabで開くことも可能です。

つまり、次のような運用ができます。

JupyterLab
↓
analysis.ipynbを作成
↓
保存
↓
VSCodeで開く

反対に、

VSCode
↓
analysis.ipynbを編集
↓
保存
↓
JupyterLabで開く

という使い方も可能です。

基本的には特別なファイル変換は必要ありません。

VSCodeとJupyterLabを同じPython環境で使う方法

仮想環境を作成する

VSCodeとJupyterLabを併用する場合は、同じPython仮想環境を利用すると管理しやすくなります。

例えばvenvを利用する場合は、プロジェクトディレクトリで次のコマンドを実行します。

Windowsでは次のように実行できます。

python -m venv .venv

macOSやLinuxでは、環境によって次のように実行します。

python3 -m venv .venv

作成すると、次のような構成になります。

project/
├─ .venv/
├─ notebooks/
├─ src/
└─ data/

仮想環境を有効化する

WindowsのPowerShellでは次のように実行します。

.venv\Scripts\Activate.ps1

Windowsのコマンドプロンプトでは次のように実行します。

.venv\Scripts\activate

macOSやLinuxでは次のように実行します。

source .venv/bin/activate

必要なパッケージをインストールする

JupyterLabそのものを仮想環境から起動する場合は、次のようにインストールします。

python -m pip install jupyterlab ipykernel

データ分析用ライブラリも必要であれば追加します。

python -m pip install pandas numpy matplotlib

まとめてインストールすることも可能です。

python -m pip install jupyterlab ipykernel pandas numpy matplotlib

なお、VSCode上でNotebookを実行するだけであれば、必ずしもJupyterLab本体を同じ環境にインストールする必要はありません。

VSCodeからPython環境をKernelとして利用する場合は、基本的にipykernelが必要になります。

JupyterLabを起動する方法

jupyter labコマンドを実行する

JupyterLabをインストールした仮想環境を有効にして、次のコマンドを実行します。

jupyter lab

通常はWebブラウザが開き、JupyterLabの画面が表示されます。

例えば次のようなプロジェクトがあるとします。

project/
├─ .venv/
├─ notebook.ipynb
└─ data.csv

プロジェクトディレクトリへ移動してから、

jupyter lab

を実行すると、そのプロジェクトを基準として作業しやすくなります。

VSCodeで同じPython環境を選択する方法

NotebookからKernelを選択する

VSCodeでは、Python拡張機能とJupyter拡張機能をインストールします。

その後、.ipynbファイルを開きます。

Notebook画面にある「Select Kernel」などの項目から使用するPython環境を選択します。

例えば、

Select Kernel
↓
Python Environments
↓
.venv

という流れで、先ほど作成した.venvを選択します。

これにより、

JupyterLab
↓
.venv

VSCode
↓
.venv

というように、両方から同じPython環境を利用できます。

同じPython環境を利用できているか確認する方法

sys.executableを確認する

VSCodeとJupyterLabで同じ環境を利用できているか確認するには、Notebook上で次のコードを実行します。

import sys

print(sys.executable)

Windowsでは、例えば次のようなパスが表示されます。

C:\project\.venv\Scripts\python.exe

macOSやLinuxでは、例えば次のようになります。

/project/.venv/bin/python

VSCodeとJupyterLabの両方で同じPython実行ファイルが表示されれば、基本的には同じPython環境を利用していると判断できます。

ライブラリのバージョンも確認する

さらに確認したい場合は、ライブラリのバージョンも調べます。

import sys
import pandas as pd

print(sys.executable)
print(pd.__version__)

Python実行ファイルと主要パッケージのバージョンが一致しているか確認すると、環境の違いによるトラブルを発見しやすくなります。

ipykernelでKernelを登録する方法

Kernelを明示的に登録できる

必要に応じて、Python仮想環境をJupyter Kernelとして明示的に登録することもできます。

例えば次のコマンドを実行します。

python -m ipykernel install --user --name myproject --display-name "Python (myproject)"

登録すると、Kernelの選択画面に次のような名前を表示できます。

Python (myproject)

複数のPython環境を利用している場合に便利です。

例えば、

Python (project-a)
Python (project-b)
Python (machine-learning)

のように分けることができます。

ただし、このKernel登録は常に必須というわけではありません。

VSCodeではPython環境そのものを検出して、Notebook用Kernelとして利用できる場合があります。

そのため、ipykernel installは「Kernelを明示的な名前で登録したい場合に利用する方法」と理解しておくとよいでしょう。

VSCodeからJupyter Serverへ接続する方法

リモート環境のKernelを利用できる

VSCodeでは、ローカル環境だけでなく、既存のJupyter Serverへ接続してNotebookを実行することもできます。

例えば次のような構成です。

ローカルPC
VSCode
↓
ネットワーク
↓
Linuxサーバー
Jupyter Server
↓
GPU

この構成では、Notebookの編集は手元のVSCodeで行い、実際の計算は高性能なサーバー側で実行できます。

GPUを搭載したサーバーやクラウド環境を利用した機械学習などで便利です。

Existing Jupyter Serverを選択する

VSCodeでは、NotebookのKernel選択画面から既存Jupyter Serverを指定できます。

概ね次のような流れです。

Select Kernel
↓
Select Another Kernel
↓
Existing Jupyter Server

その後、接続するJupyter ServerのURLを入力します。

例えば次のような形式です。

https://example.com/jupyter/?token=...

実際のURLや認証方法は、Jupyter Server側の設定によって異なります。

リモートJupyter Server利用時の注意点

インターネットへ直接公開しない

Jupyter Serverをリモート利用する場合は、セキュリティに注意が必要です。

Jupyter Serverをそのままインターネットへ公開すると、不正アクセスのリスクが高くなります。

そのため、実務では次のような対策を検討します。

SSHトンネル
VPN
HTTPS
認証
ファイアウォール
リバースプロキシ

特に、認証なしでJupyter Serverを外部公開することは避けるべきです。

また、CORSを無制限に許可するような設定も、必要性を理解せずに使用しない方が安全です。

VSCodeとJupyterLabを併用するときの注意点

同じNotebookを同時編集しない

VSCodeとJupyterLabで同じ.ipynbファイルを開くことはできます。

ただし、両方から同時に編集・保存すると、片方の変更が上書きされる可能性があります。

例えば、

VSCode
↓
analysis.ipynb
↑
JupyterLab

という状態で両方から変更を加えると、競合が発生する可能性があります。

そのため、基本的にはどちらか一方を編集の主体にすることをおすすめします。

例えば、

JupyterLabで編集
↓
保存
↓
VSCodeで開く

という運用にすると安全です。

NotebookとKernelの状態は別物

Notebookを利用するときに重要なのが、.ipynbファイルとKernelのメモリ状態は別という点です。

例えば次のコードを実行したとします。

x = 100

この場合、x = 100という変数は現在動作しているKernelのメモリ上に保存されています。

Notebookファイルを保存しても、実行中のPythonプロセスのメモリ状態そのものが完全に保存されるわけではありません。

そのため、Notebookを別の環境で開いた場合は、コードを再実行する必要があります。

Notebookを作成するときは、

Restart Kernel
↓
Run All

を実行しても、最初から最後まで正常に動く状態にしておくことが重要です。

VSCodeが向いているケース

Notebook以外の開発も行う場合

VSCodeは、Notebookだけでなく通常のソフトウェア開発も行いたい場合に適しています。

例えば次のような用途です。

  • Pythonアプリケーション開発
  • Webアプリ開発
  • API開発
  • テスト
  • Git管理
  • Docker開発
  • データ分析
  • 機械学習
  • リモート開発

特に、

notebooks/
src/
tests/

のようにNotebookと本番コードを分離したプロジェクトでは、VSCodeを利用しやすいでしょう。

例えば、

Notebookで実験
↓
Pythonファイルへ整理
↓
テスト
↓
アプリやAPIへ組み込む

という流れにも適しています。

JupyterLabが向いているケース

データ分析や実験を中心に行う場合

JupyterLabは、Notebookを中心として分析や実験を繰り返す場合に向いています。

例えば次のような用途です。

  • データ分析
  • 統計解析
  • 機械学習
  • 科学計算
  • データ可視化
  • 研究
  • 教育
  • プロトタイピング

特に、

コードを書く
↓
実行する
↓
結果を見る
↓
グラフを確認する
↓
コードを修正する

という作業を繰り返す場合に便利です。

ブラウザベースで利用できることもあり、サーバー上にJupyterLabを構築して複数の端末から利用する用途にも適しています。

VSCodeとJupyterLabはどちらを選ぶべきか

Notebook中心ならJupyterLab

データ分析や機械学習の実験など、Notebookが作業の中心であればJupyterLabは非常に便利です。

例えば、

データ読み込み
↓
分析
↓
可視化
↓
仮説検証

という作業が中心なら、JupyterLabだけでも十分な場合があります。

ソフトウェア開発まで行うならVSCode

Notebookだけでなく、

Pythonファイル
Git
テスト
デバッグ
Docker
Webアプリ
API

などをまとめて扱うのであれば、VSCodeの方が向いているケースが多くなります。

VSCodeはNotebookも扱えるため、分析から実際のアプリケーション開発まで一つの環境で完結させることも可能です。

VSCodeとJupyterLabを併用する方法もおすすめ

役割を分けて利用する

VSCodeとJupyterLabは、どちらか一方だけを選ばなければならないわけではありません。

例えば、次のように使い分けられます。

JupyterLab
↓
データ探索
↓
分析
↓
Notebookで実験

        ↓

VSCode
↓
コード整理
↓
Pythonモジュール化
↓
テスト
↓
Git管理
↓
本番コード化

さらに、

同じプロジェクト
同じ.venv
同じ.ipynb
同じデータ

を利用するようにすれば、環境差によるトラブルを減らせます。

実務ではプロジェクト構成を整理する

例えば次のような構成にしておくと管理しやすくなります。

project/
├─ .venv/
├─ data/
├─ notebooks/
│  └─ analysis.ipynb
├─ src/
│  └─ analysis.py
├─ tests/
├─ requirements.txt
└─ README.md

役割としては、

notebooks/
→ 調査・分析・実験

src/
→ 再利用するPythonコード

tests/
→ テストコード

のように分離できます。

Notebookで試行錯誤した処理を、安定した段階でsrcへ移すという運用もおすすめです。

VSCodeとJupyterLabの違いを理解して使い分けよう

VSCodeとJupyterLabは、どちらもPythonやJupyter Notebookを扱えますが、得意とする用途が異なります。

JupyterLabは、Notebookを中心にデータ分析や科学計算、機械学習などを対話的に進めることが得意です。

一方、VSCodeはNotebookだけでなく、通常のPythonファイル、Git、テスト、デバッグ、Dockerなどを含めたソフトウェア開発全般に向いています。

また、両者は同じ.ipynbファイルや同じPython仮想環境を利用できるため、併用することも可能です。

Notebookを中心に分析する場合はJupyterLab、分析結果をPythonモジュールやWebアプリ、APIなどへ発展させたい場合はVSCodeを中心に使うと分かりやすいでしょう。

実務では、JupyterLabでデータ探索や分析を行い、VSCodeでコードを整理してテストやGit管理、本番開発を行うといった使い分けも有効です。

以上、VSCodeとJupyterLabの違いや連携方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次