VS Code の Jupyter Notebook
Jupyter (以前の IPython Notebook) は、Markdown テキストと実行可能な Python ソースコードを notebook と呼ばれる 1 つのキャンバス上で簡単に組み合わせることができるオープンソースプロジェクトです。Visual Studio Code は、Jupyter Notebook の操作をネイティブに、そして Python コードファイル を通じてサポートしています。このトピックでは、Jupyter Notebook で利用可能なネイティブサポートについて説明し、次の方法を示します。
- Jupyter Notebook の作成、オープン、保存
- Jupyter コードセルの操作
- 変数エクスプローラーとデータビューアーを使用した変数の表示、検査、フィルター処理
- リモート Jupyter サーバーへの接続
- Jupyter Notebook のデバッグ
環境のセットアップ
Jupyter Notebook で Python を操作するには、VS Code で Anaconda 環境、または Jupyter パッケージ がインストールされている別の Python 環境をアクティブ化する必要があります。環境を選択するには、コマンドパレットから [Python: インタープリターを選択] コマンドを使用します (⇧⌘P (Windows、Linux Ctrl+Shift+P))。
適切な環境がアクティブ化されると、Jupyter Notebook を作成およびオープンしたり、コードセルを実行するためにリモート Jupyter サーバーに接続したり、Jupyter Notebook を Python ファイルとしてエクスポートしたりできます。
ワークスペースの信頼
Jupyter Notebook を使い始める際には、信頼されたワークスペースで作業していることを確認する必要があります。有害なコードがノートブックに埋め込まれている可能性があり、ワークスペースの信頼機能を使用すると、どのフォルダーとそのコンテンツで自動コード実行を許可または制限するかを指定できます。
VS Code が信頼されていないワークスペースで 制限付きモード で実行されているときにノートブックを開こうとすると、セルを実行できず、リッチ出力は非表示になります。
Jupyter Notebook の作成またはオープン
Jupyter Notebook を作成するには、コマンドパレットから [作成: 新規 Jupyter Notebook] コマンドを実行するか (⇧⌘P (Windows、Linux Ctrl+Shift+P))、ワークスペースに新しい .ipynb
ファイルを作成します。
次に、右上隅のカーネルピッカーを使用してカーネルを選択します。
カーネルを選択すると、各コードセルの右下隅にある言語ピッカーは、カーネルでサポートされている言語に合わせて自動的に更新されます。
既存の Jupyter Notebook がある場合は、ファイルを右クリックして VS Code で開くか、VS Code ファイルエクスプローラーから開くことができます。
セルの実行
単一のコードセルを実行する
コードを追加したら、セルの左側にある [実行] アイコンを使用してセルを実行でき、出力がコードセルの下に表示されます。
選択したコードセルを実行するには、コマンドモードと編集モードの両方でキーボードショートカットを使用することもできます。Ctrl+Enter は、現在選択されているセルを実行します。Shift+Enter は、現在選択されているセルを実行し、すぐ下に新しいセルを挿入します (フォーカスは新しいセルに移動します)。Alt+Enter は、現在選択されているセルを実行し、すぐ下に新しいセルを挿入します (フォーカスは現在のセルに残ります)。
複数のコードセルを実行する
複数のコードセルを実行する方法はたくさんあります。Notebook エディターのメインツールバーにある二重矢印を使用して、Notebook 内のすべてのセルを実行したり、現在のコードセルの上または下にある [すべて実行]、[上をすべて実行]、または [下をすべて実行] を選択したりできます。
セクション内のセルを実行する
ノートブック内の関連するセルをより簡単に実行するには、Markdown セクションヘッダーでグループ化されたセルを [セクション内のセルを実行] アクションで実行できます。このアクションは、ノートブックのアウトラインビューとスティッキースクロール要素で使用できます。
スティッキースクロール要素内で、任意のヘッダーを右クリックし、コンテキストメニューのアクションからセクションを実行します。アウトラインビュー内で、ホバーまたは選択時に表示されるツールバーアイコンを選択し、表示されるアクションから単一のセルまたはセルのセクションを実行します。
Jupyter Notebook の保存
Jupyter Notebook を保存するには、キーボードショートカット Ctrl+S または [ファイル] > [保存] を使用します。
Jupyter Notebook のエクスポート
Jupyter Notebook を Python ファイル (.py
)、PDF、または HTML ファイルとしてエクスポートできます。エクスポートするには、メインツールバーの [...] > [エクスポート] を選択します。ファイル形式オプションのドロップダウンが表示されます。
注: PDF エクスポートの場合、TeX をインストール しておく必要があります。インストールされていない場合は、PDF オプションを選択すると、インストールする必要があることが通知されます。また、ノートブックに SVG のみの出力がある場合、PDF には表示されないことに注意してください。SVG グラフィックを PDF に含めるには、出力に SVG 以外の画像形式が含まれていることを確認するか、最初に HTML にエクスポートしてからブラウザーを使用して PDF として保存できます。
Notebook エディターでのコードセルの操作
Notebook エディターを使用すると、Jupyter Notebook 内でコードセルを簡単に作成、編集、実行できます。
コードセルを作成する
既定では、空のノートブックには開始するための空のコードセルが 1 つあり、既存のノートブックでは一番下に配置されます。コードを空のコードセルに追加して開始します。
msg = "Hello world"
print(msg)
コードセルのモード
コードセルを操作している間、セルは未選択、コマンドモード、編集モードの 3 つの状態になる可能性があります。コードセルの左側にある縦線とエディターの境界線は、セルの現在の状態を示します。縦線が表示されていない場合、セルは未選択です。セルが選択されている場合、コマンドモードまたは編集モードになる可能性があります。
コマンドモードでは、セルの左側に実線の縦線が表示されます。セルを操作でき、キーボードコマンドを受け入れます。
編集モードでは、実線の縦線にセルのエディターの周りの境界線が結合されます。セルの内容 (コードまたは Markdown) を変更できます。
モードを切り替えるには、キーボードまたはマウスを使用できます。キーボードでは、Enter キーを押して編集モードに移動するか、Esc キーを押してコマンドモードに移動します。マウスでは、セルの左側にある縦線またはコードセル内のコード/Markdown 領域の外をクリックします。
追加のコードセルを追加する
コードセルを追加するには、メインツールバー、セルの追加セルツールバー (ホバーで表示)、およびキーボードコマンドを使用できます。
現在選択されているセルの下に新しいセルを追加するには、メインツールバーまたはセルのホバーツールバーにあるプラスアイコンを使用します。
コードセルがコマンドモードの場合、A キーを使用して選択したセルの上にセルを追加し、B キーを使用して選択したセルの下にセルを追加します。
コードセルを選択する
選択したコードセルは、マウスまたはキーボードの上下矢印キーを使用して変更できます。コードセルがコマンドモードの場合、J キー (下) と K キー (上) も使用できます。
複数のコードセルを選択する
複数のセルを選択するには、選択モードで 1 つのセルから開始します。塗りつぶされた背景は、選択されたセルを示します。連続するセルを選択するには、Shift キーを押しながら、選択する最後のセルをクリックします。任意のセルのグループを選択するには、Ctrl キーを押しながら、選択に追加するセルをクリックします。
コードセルを移動する
セルは、ドラッグアンドドロップによってノートブック内で上下に移動できます。コードセルの場合、ドラッグアンドドロップ領域は、以下に示すようにセルエディターの左側にあります。レンダリングされた Markdown セルの場合、セルをドラッグアンドドロップするには任意の場所をクリックできます。
複数のセルを移動するには、選択に含まれる任意のセルで同じドラッグアンドドロップ領域を使用できます。
キーボードショートカット Alt+Arrow でも、1 つまたは複数の選択されたセルを移動できます。
コードセルを削除する
コードを削除するには、コードセルツールバーの [削除] アイコンを使用できます。選択したコードセルがコマンドモードの場合、キーボードショートカット dd を使用できます。
最後に行った変更を元に戻す
z キーを使用すると、以前の変更を元に戻すことができます。たとえば、誤って編集した場合、以前の正しい状態に元に戻したり、誤ってセルを削除した場合、復元したりできます。
コードと Markdown を切り替える
Notebook エディターを使用すると、コードセルを Markdown とコードの間で簡単に変更できます。セルの右下隅にある言語ピッカーを選択すると、Markdown と、該当する場合は、選択したカーネルでサポートされている他の言語を切り替えることができます。
キーボードを使用してセルタイプを変更することもできます。セルが選択され、コマンドモードの場合、M キーはセルタイプを Markdown に切り替え、Y キーはセルタイプをコードに切り替えます。
Markdown が設定されると、Markdown 形式のコンテンツをコードセルに入力できます。
Markdown セルをレンダリングするには、セルツールバーのチェックマークを選択するか、キーボードショートカット Ctrl+Enter および Shift+Enter を使用します。
出力をクリアするか、カーネルを再起動/中断する
すべてのコードセル出力をクリアするか、カーネルを再起動/中断する場合は、メインの Notebook エディターツールバーを使用して実行できます。
行番号の有効/無効を切り替える
コマンドモードの場合、L キーを使用すると、単一のコードセル内の行番号の表示/非表示を切り替えることができます。
ノートブック全体の行番号の表示/非表示を切り替えるには、任意のセルでコマンドモードのときに Shift+L を使用します。
目次
ノートブック内を移動するには、アクティビティバーでファイルエクスプローラーを開きます。次に、サイドバーで [アウトライン] タブを開きます。
アウトラインビューのフィルターコントロールを使用して、Markdown ヘッダー、コードセル、およびコードセル記号を含めることができます。フィルターは、次の設定に対応しています。
notebook.outline.showMarkdownHeadersOnly
notebook.outline.showCodeCells
notebook.outline.showCodeCellSymbols
注: 既定では、アウトラインには Markdown のみが表示されます。コードセルを表示するには、次の設定を有効にします: [Notebook] > [アウトライン: コードセルを表示]。
Jupyter Notebook エディターでの IntelliSense のサポート
Python Jupyter Notebook エディターウィンドウには、完全な IntelliSense (コード補完、メンバーリスト、メソッドのクイック情報、およびパラメーターヒント) があります。コードエディターで入力するのと同じように、Notebook エディターウィンドウで生産性を高めることができます。
変数エクスプローラーとデータビューアー
Python Notebook 内では、現在の Jupyter セッション内の変数を表示、検査、並べ替え、およびフィルター処理できます。コードとセルを実行した後、メインツールバーの [変数] アイコンを選択すると、現在の変数の一覧が表示されます。これは、変数がコードで使用されると自動的に更新されます。変数ペインは、ノートブックの下部に開きます。
データビューアー
変数に関する追加情報については、行をダブルクリックするか、変数の横にある [データビューアーで変数を表示] ボタンを使用して、データビューアーで変数の詳細なビューを表示することもできます。
または、Data Wrangler などの他の拡張機能が提供するデータ表示エクスペリエンスを使用することもできます。Data Wrangler 拡張機能は、データに関する洞察を示すリッチユーザーインターフェースを提供し、データプロファイリング、品質チェック、変換などを実行するのに役立ちます。ドキュメントの Data Wrangler 拡張機能 の詳細をご覧ください。
行のフィルター処理
データビューアーで行をフィルター処理するには、各列の上部にあるテキストボックスに入力します。検索する文字列を入力すると、列にその文字列が含まれている行が見つかります。
完全一致を見つける場合は、フィルターの先頭に '=' を付けます
より複雑なフィルター処理は、正規表現 を入力することで実行できます
プロットの保存
ノートブックからプロットを保存するには、出力にカーソルを合わせ、右上隅にある [保存] アイコンを選択するだけです。
注: matplotlib および Altair で作成されたプロットのレンダリングがサポートされています。
カスタムノートブック差分
内部的には、Jupyter Notebook は JSON ファイルです。JSON ファイル内のセグメントは、入力、出力、メタデータの 3 つのコンポーネントで構成されるセルとしてレンダリングされます。行ベースの差分を使用してノートブックで行われた変更を比較することは困難で、解析が困難です。ノートブックのリッチ差分エディターを使用すると、セルの各コンポーネントの変更を簡単に確認できます。
差分ビューに表示する変更のタイプをカスタマイズすることもできます。右上隅で、ツールバーのオーバーフローメニュー項目を選択して、含めるセルコンポーネントをカスタマイズします。入力の差分は常に表示されます。
VS Code 内の Git 統合の詳細については、VS Code のソース管理 を参照してください。
Jupyter Notebook のデバッグ
Jupyter Notebook をデバッグする方法は 2 つあります。1 つは "行単位実行" と呼ばれるよりシンプルなモード、もう 1 つは完全なデバッグモードです。
注: これらの機能の両方には、ipykernel 6+ が必要です。ipykernel のインストールまたはアップグレードの詳細については、この Wiki ページ を参照してください。
行単位実行
行単位実行を使用すると、他の VS Code デバッグ機能に気を取られることなく、セルを一度に 1 行ずつ実行できます。開始するには、セルツールバーの [行単位実行] ボタンを選択します
同じボタンを使用して、1 ステートメントずつ進みます。セル [停止] ボタンを選択して途中で停止するか、ツールバーの [続行] ボタンを選択してセルの最後まで実行を続行できます。
セルのデバッグ
ブレークポイントや他のセルやモジュールにステップインする機能など、VS Code でサポートされているデバッグ機能のフルセットを使用する場合は、完全な VS Code デバッガーを使用できます。
- ノートブックセルの左マージンをクリックして、必要なブレークポイントを設定することから始めます。
- 次に、[実行] ボタンの横にあるメニューの [セルのデバッグ] ボタンを選択します。これにより、セルがデバッグセッションで実行され、実行されるコードのブレークポイントで一時停止します。これは、別のセルまたは
.py
ファイルにある場合でも同様です。 - VS Code で通常行うように、[デバッグ] ビュー、[デバッグコンソール]、および [デバッグ] ツールバーのすべてのボタンを使用できます。
Jupyter Notebook のセルをデバッグしても、launch.json のデバッグ構成は使用されないことに注意してください。代わりに、jupyter.debugJustMyCode
などの設定でカスタマイズできます。
ノートブック内を検索する
キーボードショートカット Ctrl/Cmd + F を使用して、ノートブック (または検索オプションをフィルター処理してその一部) を検索できます。フィルターオプション (じょうごアイコン) をクリックして、次を検索します。
- Markdown セル入力 (Markdown ソース)
- Markdown セル出力 (レンダリングされた Markdown)
- コードセル入力 (コードセルソース)
- コードセル出力 (セル出力)
ノートブック検索は、既定ではフィルター処理されたセル入力のみです。
リモート Jupyter サーバーへの接続
リモート Jupyter サーバーに接続することで、Jupyter Notebook で集中的な計算を他のコンピューターにオフロードできます。接続すると、コードセルはローカルコンピューターではなく、リモートサーバーで実行されます。
リモート Jupyter サーバーに接続するには
-
ノートブックの右上隅にあるカーネルピッカーボタンを開きます ([コマンドパレット] から [Notebook: Notebook カーネルを選択] コマンドを実行します)。
-
[既存の Jupyter サーバー] オプションを選択して、既存の Jupyter サーバーに接続します。
-
初めて既存のサーバーに接続するには、[実行中の Jupyter サーバーの URL を入力してください] を選択します。
-
[実行中の Jupyter サーバーの URL を入力してください] というプロンプトが表示されたら、
?token=
URL パラメーターに含まれる認証トークンを使用して、サーバーの URI (ホスト名) を指定します。(認証トークンを有効にして VS Code ターミナルでサーバーを起動すると、トークン付きの URL が通常、コピーできるターミナル出力に表示されます。) または、URI を指定した後でユーザー名とパスワードを指定することもできます。
注: セキュリティを強化するために、Microsoft は SSL やトークンサポートなどのセキュリティ対策を講じて Jupyter サーバーを構成することを推奨しています。これにより、Jupyter サーバーに送信される要求が認証され、リモートサーバーへの接続が暗号化されるようになります。ノートブックサーバーのセキュリティ保護に関するガイダンスについては、Jupyter ドキュメント を参照してください。
データサイエンスプロファイルテンプレート
プロファイル を使用すると、現在のプロジェクトまたはタスクに応じて、拡張機能、設定、UI レイアウトをすばやく切り替えることができます。Jupyter Notebook を使い始めるのに役立つように、便利な拡張機能、設定、およびスニペットを備えたキュレーションされたプロファイルである データサイエンスプロファイルテンプレート を使用できます。プロファイルテンプレートはそのまま使用することも、独自のワークフローに合わせてさらにカスタマイズするための出発点として使用することもできます。
[プロファイル] > [プロファイルの作成...] ドロップダウンからプロファイルテンプレートを選択します
プロファイルテンプレートを選択すると、設定と拡張機能を確認し、新しいプロファイルに含めたくない場合は個々の項目を削除できます。テンプレートに基づいて新しいプロファイルを作成した後、設定、拡張機能、または UI に加えられた変更はプロファイルに保持されます。