Docker 拡張機能としての JupyterLab の使用を開始する

この記事は、 Jupyter Notebook Docker Extensionの作者であるMarcelo Ochoaと共同で書かれました。

JupyterLab は Web ベースの対話型開発環境 (IDE) であり、ユーザーはライブ コード、方程式、視覚化、および説明テキストを含むドキュメントを作成および共有できます。 これは、人気のあるJupyterノートブックの最新の進化であり、前任者に比べて次のようないくつかの利点があります。

  • より柔軟で拡張可能なユーザー インターフェイス: JupyterLab を使用すると、ユーザーはニーズに最も合うようにワークスペースを構成および配置できます。 また、新しい機能を追加するために使用できる拡張機能のエコシステムもサポートしています。
  • 複数のプログラミング言語のサポート:JupyterLabはもはやPythonだけのものではありません! これで、R、Julia、JavaScript などのさまざまなプログラミング言語でコードを実行するために使用できます。
  • より強力なエディター: JupyterLab の組み込みエディターには、コード補完、構文の強調表示、デバッグなどの機能が含まれており、コードの記述と編集が容易になります。
  • コラボレーションのサポート: JupyterLab を使用すると、プロジェクトで他のユーザーと簡単にコラボレーションできます。 ドキュメントはリアルタイムで共有および編集でき、ユーザーは作業中に互いにチャットできます。

この記事では、JupyterLab アーキテクチャの概要について説明し、JupyterLab を Docker 拡張機能として使用を開始する方法を示します。

濃い青の背景にドッカーとジュピターのロゴを示す図

JupyterLab の用途

JupyterLab は、データサイエンティスト、科学計算研究者、計算ジャーナリスト、機械学習エンジニアなど、幅広い人々に利用されています。 これは強力なインタラクティブコンピューティングおよびデータサイエンスツールであり、IDEとしてますます人気が高まっています。

JupyterLab の使用方法の具体例を次に示します。

  • データサイエンス: JupyterLab では、データの探索、機械学習モデルの構築とトレーニング、視覚化の作成を行うことができます。
  • 科学計算:JupyterLabは、数値シミュレーションを実行し、微分方程式を解き、データを分析することができます。
  • 計算ジャーナリズム:JupyterLabは、Webからデータをスクレイピングし、分析用のデータをクリーンアップして準備し、インタラクティブなデータビジュアライゼーションを作成できます。
  • 機械学習: JupyterLab は、機械学習モデルの開発とトレーニング、モデルのパフォーマンスの評価、運用環境へのモデルのデプロイを行うことができます。

JupyterLab は、次の方法で問題の解決に役立ちます。

  • JupyterLab は、コードの開発と実行、データの探索、視覚化の作成のための統一された環境を提供します。 これにより、ユーザーの時間と労力を節約できます。タスクごとに異なるツールを切り替える必要はありません。
  • JupyterLab を使用すると、プロジェクトの共有と共同作業が簡単になります。 ドキュメントはリアルタイムで共有および編集でき、ユーザーは作業中に互いにチャットできます。 これは、複雑なプロジェクトに取り組んでいるチームに役立ちます。
  • JupyterLab は拡張可能です。 つまり、ユーザーは拡張機能を使用して環境に新しい機能を追加できるため、JupyterLabは幅広いタスクに使用できる柔軟なツールになります。

Project Jupyter のツールは、Python プログラミング言語用に作成されたソフトウェアの主要なリポジトリである Python Package Index を介してインストールできますが、Linux、Mac、または Windows 上の Docker Desktop を使用して JupyterLab 環境を稼働させることもできます。

代替テキスト: jupyterlab オプションのスクリーンショット。
図1: JupyterLab は、データ サイエンスのための強力な Web ベースの IDE です

JupyterLabのアーキテクチャ

JupyterLab はクライアント/サーバー アーキテクチャ (図 2) に従っており、TypeScript と React で実装されたクライアントはユーザーの Web ブラウザー内で動作します。 Webpack モジュールバンドラーを利用して、コードを単一の JavaScript ファイルにパッケージ化し、WebSocket を介してサーバーと通信します。 一方、サーバーは、Tornado Webフレームワークを利用してクライアントにサービスを提供し、カーネル、ファイル管理、認証、承認などのさまざまな機能を管理するPythonアプリケーションです。 JupyterLabクライアントに入力されたコードの実行を担当するカーネルは、Pythonが一般的に使用されますが、任意のプログラミング言語で記述できます。

クライアントとサーバーは、WebSockets プロトコルを介してデータとコマンドを交換します。 クライアントはコードの実行やノートブックの読み込みなどの要求をサーバーに送信し、サーバーはこれらの要求に応答してクライアントにデータを返します。

カーネルは、JupyterLabサーバーによって管理される個別のプロセスであり、コードを実行し、テキスト、画像、プロットなどの結果をクライアントに送信できます。 さらに、JupyterLabの柔軟性と拡張性は、拡張機能のサポートを通じて明らかであり、ユーザーはカスタムカーネル、ファイルビューア、エディタプラグインなどの新しい機能を導入して、JupyterLabのエクスペリエンスを向上させることができます。

拡張機能、アプリケーション、API、サーバー、ウィジェット、カーネル、および xeus フレームワーク間の接続を示す jupyterlab アーキテクチャの図。
図2: JupyterLab アーキテクチャ。

JupyterLab は拡張性に優れています。 拡張機能を使用して、クライアントとサーバーに新しい機能を追加できます。 たとえば、拡張機能を使用して、新しいカーネル、新しいファイルビューア、新しいエディタプラグインを追加できます。

JupyterLab 拡張機能の例を次に示します。

  • ipywidgets 拡張機能は、JupyterLab ノートブックに対話型ウィジェットのサポートを追加します。
  • nbextensions パッケージは、JupyterLab ノートブック用の拡張機能のコレクションを提供します。
  • jupyterlab-server パッケージは、JupyterLab サーバ用の拡張機能を提供します。

JupyterLabの拡張可能なアーキテクチャは、ユーザー固有のニーズに合わせたカスタム開発環境を作成するために使用できる強力なツールになります。

なぜJupyterLabをDocker拡張機能として実行するのですか?

JupyterLab を Docker 拡張機能として実行すると、既に Docker Desktop を使い慣れているユーザーに合理化されたエクスペリエンスが提供され、JupyterLab ノートブックのデプロイと管理が簡素化されます。

Docker は、JupyterLab を軽量で分離されたセットアップでバンドル、出荷、実行するための理想的な環境を提供します。 このカプセル化により、異なるシステム間で一貫したパフォーマンスが促進され、セットアッププロセスが簡素化されます。

さらに、Docker Desktop は、JupyterLabs を拡張機能として実行するための唯一の前提条件です。 Docker をインストールすると、JupyterLab を簡単にセットアップして使用を開始できるため、追加のソフトウェアのインストールや複雑な構成手順が不要になります。

はじめ

Docker デスクトップ拡張機能の使用を開始することは、開発者が統合開発の利点を活用できるようにする簡単なプロセスです。 この拡張機能は既存のワークフローに簡単に統合でき、Docker内で使い慣れたインターフェイスを提供します。 このシームレスな統合により、セットアッププロセスが合理化され、開発者は広範な構成なしでプロジェクトに飛び込むことができます。

このチュートリアルを完了するには、次の主要コンポーネントが不可欠です。

JupyterLabs を Docker 拡張機能として使用するには、まず Docker Desktop を開きます。 従う手順は次のとおりです(図3)。

  • 左側のサイドバーで [拡張機能 ]を選択します。
  • [ 参照 ] タブに切り替えます。
  • [ カテゴリ ] ドロップダウンで、[ ユーティリティ ツール] を選択します。
  • Jupyter ノートブックを見つけて 、 [インストール] を選択します。
ドッカーデスクトップでjupyterlabをインストールするためのラベル付きの手順を含むスクリーンショット
図3: Docker Desktop を使用した JupyterLab のインストール。

JupyterLab のウェルカム ページが表示されます (図 4)。

ノートブック、コンソール、およびその他のオプションを提供するjupyterlabウェルカムページを示すスクリーンショット。
図4: JupyterLab のウェルカム ページです。

カーネルの追加

Python3(デフォルト)以外の言語で作業する必要がある場合は、インストール後の手順を完了できます。 たとえば、iJava カーネルを追加するには、ターミナルを起動して次のコマンドを実行します。

~ % docker exec -ti --user root jupyter_embedded_dd_vm /bin/sh -c "curl -s https://raw.githubusercontent.com/marcelo-ochoa/jupyter-docker-extension/main/addJava.sh | bash"

図 5 は、iJava カーネル・パッケージのインストール・プロセス出力を示しています。

ijavaカーネルのインストールの進行状況を示す画面キャプチャ。
図5: iJava カーネルのインストールプロセスのキャプチャ。

次に、拡張機能タブまたは Docker Desktop を閉じてから再度開くと、新しいカーネルと言語のサポートが有効になります (図 6)。

新しいカーネルのサポートを有効にしたjupyterlabのスクリーンショット。
図6: 新しいカーネルと言語のサポートが有効になりました。

JupyterLab の使用を開始する

JupyterLab ノートブックは、さまざまな方法で使い始めることができます。たとえば、ようこそページで言語を選択し、コードのテストを開始できます。 または、左上にある上矢印アイコンを使用して、拡張機能にファイルをアップロードすることもできます (図 7)。

サンプル ipython ノートブックのスクリーンショット。
図 7: JupyterLab iPython ノートブックのサンプル。

ローカル ストレージから新しいノートブックをインポートします (図 8 および 9)。

ファイルを一覧表示するアップロード ダイアログ ボックスのスクリーンショット。
図8: ディスクからダイアログをアップロードします。
アップロードされたノートブックの sympy の例を示すスクリーンショット。
図9: ノートブックをアップロードしました。

URL からの JupyterLab ノートブックの読み込み

インターネットから直接ノートブックをインポートする場合は、[ URL を開く>ファイル ] オプションを使用できます (図 10)。 このページでは 、Java サンプルを含むノートブックの例を示します

[URL を開く] ダイアログ ボックスを示すスクリーンショット
図10: URL からノートブックを読み込みます。

URL からのノートブックのアップロード結果を図 11 に示します。

アップロードされたノートブックのサンプル グラフを示すスクリーンショット。
図11: URL からノートブックをアップロードしました。

ノートブックを個人用フォルダーにダウンロードする

ノートブックをアップロードするのと同じように、ダウンロード操作は簡単です。 ファイル名を選択し、[ ダウンロード ]オプションを選択します(図12)。

ローカルディスクオプションメニューのダウンロードオプションを示すスクリーンショット。
図12: ローカルディスクにダウンロードオプションメニュー。

ダウンロード先のオプションも表示されます(図13)。

ダウンロード先を選択するダイアログボックスのスクリーンショット。
図13: ダウンロード先のローカルディレクトリを選択します。

永続ストレージに関する注意

JupyterLab 拡張機能には、JupyterLab 環境の既定のディレクトリであるディレクトリの /home/jovyan 永続ボリュームがあります。 このディレクトリの内容は、拡張機能のシャットダウン、Docker Desktop の再起動、JupyterLab 拡張機能のアップグレード後も存続します。 ただし、拡張機能をアンインストールすると、このコンテンツはすべて破棄されます。 最初に重要なデータをバックアップします。

コア イメージを変更する

この Docker 拡張機能は Docker イメージ jupyter/scipy-notebook:lab-4.0.6 (ubuntu 22.04) を使用しますが、次の使用可能なバージョンのいずれかを選択できます (図 14)。

ベースノートブック、ミニマルノートブック、ジュリアノートブック、テンソルフローノートブックなどを含むjupyterlabコアイメージオプションを示す図。
図14: JupyterLab コア イメージ オプション。

拡張イメージを変更するには、次の手順に従います。

  1. 拡張機能をアンインストールします。
  2. 再度インストールしますが、次の手順が完了するまで開かないでください。
  3. 拡張機能の関連 docker-compose.yml ファイルを編集します。 たとえば、macOS では、ファイルは次の場所にあります。 Library/Containers/com.docker.docker/Data/extensions/mochoa_jupyter-docker-extension/vm/docker-compose.yml
  4. イメージ名を jupyter/scipy-notebook:ubuntu-22.04 から に変更します jupyter/r-notebook:ubuntu-22.04
  5. 拡張機能を開きます。

Linux では、ファイルは docker-compose.yml 次の場所にあります。 .docker/desktop/extensions/mochoa_jupyter-docker-extension/vm/docker-compose.yml

JupyterLab を他の拡張機能と共に使用する

JupyterLab 拡張機能を使用して MemGraph データベースなどの他の拡張機能と対話するには (図 15)、一般的な 例では 、ホスト接続オプションを最小限変更するだけで済みます。 これは通常、ローカルホストで実行されているMemGraphホストへのサンプルノートブックリファラーを意味します。 JupyterLab は別の Docker スタックでホストされている別の拡張機能であるため、 に置き換える必要がありますlocalhosthost.docker.internal。これは、別の拡張機能の外部IPを参照します。 次に例を示します。

URI = "bolt://localhost:7687"

次のように置き換える必要があります。

URI = "bolt://host.docker.internal:7687"
左側のパネルで選択されたmemgraph拡張機能とメインパネルのコードを示すスクリーンショット。
図 15: MemGraph 拡張機能に接続する実行中のノートブック。

結論

JupyterLab Docker 拡張機能は、JupyterLab フロントエンドを備えたパーソナル Jupyter サーバーを使用して、Jupyter アプリケーションと対話型コンピューティング ツールを含む、すぐに実行できる Docker スタックです。

Dockerの統合により、JupyterLabのセットアップと使用は非常に簡単になり、経験豊富なユーザーと初心者のユーザーの両方にその魅力がさらに広がります。 

次のビデオでは、JupyterLab ノートブックの完全なチュートリアルを紹介しています。

さらに詳しく