Bot 環境構築・インフラ

仮想通貨botの開発記録#101(2024/9/6)「VS CodeエディタでJupyterを使えるようにする」

2024年9月7日

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

今回は最新バージョンの「VS CodeエディタでJupyterを使えるようにする方法」についてまとめます。

Yodaka

VSCodeエディタの設定をターミナル経由で操作していた過程の備忘録です。

ゴール

VS Code エディタでJupyterを使えるようになる
Jupyterカーネルにpythonの仮想環境を設定する

手順

VSCodeでJupyterを使う際に、pyenvなどで管理されているPythonの仮想環境を使用するためには、「JupyterカーネルにPython仮想環境のパスを設定する」必要があります。

以下に、具体的な流れを簡単にまとめます:

1. pyenvのPython環境を設定

pyenvで使用したいPythonバージョンを選択し、Jupyterをその環境にインストールします。

pyenv global 3.12.4  # または pyenv local 3.12.4
pip install jupyter

2. Jupyterカーネルに仮想環境を追加

選択したPythonバージョンの仮想環境をJupyterで使用できるようにするため、カーネルを追加します。

python -m ipykernel install --user --name=pyenv_3.12.4 --display-name "Python 3.12.4 (pyenv)"

3. VSCodeでJupyterカーネルを選択

方法①jupyterノートブック内で「カーネルの変更」を選択し、作成したカーネル (Python 3.12.4 (pyenv)) を選びます。

方法②VSCodeでJupyterノートブックを開き、コマンドパレット(Ctrl + Shift + P または Cmd + Shift + P)から「Jupyter: Select Interpreter to Start Jupyter Server」を選択し、先ほど追加したpyenvのPythonインタープリタを選択します。

結論:

VSCodeでJupyterを使うためには、仮想環境にJupyterをインストールし、その仮想環境をJupyterカーネルとして設定すれば、VSCode上でその環境を使ってノートブックを実行できます。

私が実行した手順

Yodaka

私はvscodeで使用しているjupyterのカーネルがanacondaになっていたため、カーネルをpyenvに変更するための手順を実行しました。

VSCodeでJupyterのカーネルがAnacondaになっている場合、それをpyenvで管理しているPython環境に変更するための手順を以下に示します。

1. pyenv環境にJupyterをインストールする

まず、pyenvで管理しているPython環境にJupyterをインストールします。

a. pyenvで使用したいPythonバージョンを有効化する

まず、pyenvで使用するPythonバージョンを選択します。

  • グローバルに設定する場合
pyenv global <python_version>
  • ローカル(プロジェクト内)で設定する場合
pyenv local <python_version>

b. Jupyterのインストール

選択したPythonバージョンに対してJupyterをインストールします。

pip install jupyter

2. 新しいカーネルをJupyterに登録する

JupyterでpyenvのPython環境を使用するためには、カーネルを追加する必要があります。

python -m ipykernel install --user --name=<kernel_name> --display-name "<display_name>"
  • <kernel_name>は内部で使う任意の名前。
  • <display_name>はVSCodeやJupyterで表示される名前です。

例:

python -m ipykernel install --user --name=pyenv_3.12.4 --display-name "Python 3.12.4 (pyenv)"

3. VSCodeでカーネルを変更する

  1. コマンドパレットを開く
    • Ctrl + Shift + P (Windows/Linux)
    • Cmd + Shift + P (macOS)
  2. 「Jupyter: Select Interpreter to Start Jupyter Server」を選択
    コマンドパレットで「Jupyter: Select Interpreter to Start Jupyter Server」を入力して選択します。
  3. pyenvのPython環境を選択する
    ここで、先ほど作成したpyenvのPythonカーネルを選択します。

4. 新しいカーネルをノートブックで使用する

  1. Jupyterノートブックを開きます。
  2. 上部の「カーネル」メニューから「カーネルの変更」を選び、先ほど作成したpyenvのカーネルを選択します。
Yodaka

上記の手順でVSCodeのJupyterでpyenvのPython環境を使用することができるようになりました。

カーネルとは?

カーネルは、コンピュータシステムの中核部分として動作する重要なソフトウェアコンポーネントです。コンピュータのハードウェアとソフトウェアの橋渡しを行う役割を持っています。カーネルは、プログラムがコンピュータのリソース(CPU、メモリ、ストレージ、デバイスなど)を効率的に使用できるように管理し、適切に動作させるための基本的な機能を提供します。

カーネルの役割

  1. ハードウェアの管理
    • カーネルは、CPU、メモリ、ディスク、ネットワークなどのハードウェアリソースへのアクセスを管理します。これにより、複数のプログラムがリソースを共有しながら動作できるようにします。
  2. プロセス管理
    • プログラムが動作する際には、カーネルがそれぞれのプロセスを管理します。プログラム間でCPU時間を公平に分配し、プロセスが互いに干渉しないように保護します。
  3. メモリ管理
    • カーネルは、プログラムが使用するメモリの割り当てと解放を行い、システムメモリを効率的に利用できるように管理します。メモリのアクセスを制御し、不正なメモリアクセスを防ぎます。
  4. デバイス管理
    • 入出力デバイス(キーボード、マウス、ディスプレイ、ディスクドライブなど)とのやり取りもカーネルが担当します。プログラムが簡単にデバイスを操作できるように、ハードウェア操作を抽象化します。
  5. セキュリティとアクセス制御
    • カーネルは、システムのセキュリティを維持するために、ユーザーやプログラムがアクセスできるリソースを制御し、システムの保護を行います。

カーネルの種類

カーネルにはいくつかの種類があり、用途やシステムに応じて異なるアプローチが取られます。

  1. モノリシックカーネル
    • カーネル全体が1つの大きなプログラムとして動作するタイプです。例として、LinuxやWindowsのカーネルがこれに該当します。パフォーマンスが高い一方で、複雑になりやすいという特徴があります。
  2. マイクロカーネル
    • 必要最小限の機能(プロセス管理、メモリ管理など)だけをカーネルに組み込み、その他の機能はユーザーレベルで動作させる方式です。小さくてシンプルな設計が特徴ですが、処理が分散されるためパフォーマンスがやや低くなることがあります。
  3. ハイブリッドカーネル
    • モノリシックカーネルとマイクロカーネルの中間に位置するカーネルで、両者の利点を取り入れた設計です。macOSなどがこの方式を採用しています。

Jupyter Notebookにおける「カーネル」の意味

「カーネル」は、Jupyter Notebookでも重要な役割を果たしますが、ここでのカーネルは少し異なります。Jupyter Notebookでは、カーネルはコードの実行エンジンとして機能します。具体的には、次のような役割を担います。

  1. コードの実行
    • Jupyter Notebookで入力されたPythonコードや他の言語(RやJuliaなど)を実際に実行し、その結果を返します。
  2. 状態の保持
    • カーネルはコードの実行状態を保持します。これにより、ユーザーが一度定義した変数や関数が、カーネルがアクティブである限り保存され、後続のコードで利用できるようになります。
  3. インタラクティブな実行
    • カーネルは、ユーザーのコードを1行ずつ実行し、即座に結果を返します。これにより、ユーザーは対話的にコードを実行して結果を確認しながら作業を進められます。

カーネルの操作(Jupyterにおいて)

  • カーネルのリスタート: 実行環境をリセットして、メモリ上の変数や状態をクリアすることができます。これを使うと、新しい状態でコードを再実行することが可能です。
  • カーネルの停止: コードの実行を中断し、カーネルを停止します。これは無限ループなど、コードが停止しない場合に便利です。

カーネルのメリット・デメリット

メリット

  • 効率的なリソース管理: カーネルはコンピュータリソースの管理を行うことで、ハードウェアを最大限に活用できます。
  • セキュリティ保護: カーネルはアクセス制御を行い、システムを保護します。プログラム間の不正アクセスやシステム全体の破壊を防ぎます。
  • 抽象化: カーネルはハードウェアの動作を抽象化し、プログラムが簡単にデバイスやメモリを操作できるようにします。

デメリット

  • 複雑さ: カーネルはシステムの中核部分であるため、バグやエラーが発生するとシステム全体が影響を受ける可能性があります。
  • パフォーマンスオーバーヘッド: 特にマイクロカーネルなどの場合、複数のプロセス間でメッセージをやり取りするため、パフォーマンスが低下することがあります。

まとめると:

カーネルは、コンピュータやシステムの核となるソフトウェアであり、リソース管理、プロセス管理、デバイス管理を行います。コンピュータシステム全体の効率や安全性を確保するための重要な役割を果たしています。

Jupyter Notebookにおいては、カーネルはコードの実行を担うエンジンとして機能し、インタラクティブなプログラミング体験を支えています。

カーネルは日々使用するシステムやツールの根幹にあり、その理解がシステムの動作や問題解決に役立ちます。

まとめ

今回は「VSCode+jupyterで動かす設定」についてまとめました。

Yodaka

プログラミングに関しては基礎レベルで理解できていないこともまだたくさんあるので、今後も手を動かしながら学ぶことを最優先して、技術の仕様を理解しながら実装をします。

今後もこの調子でbotの開発状況を発信していきます。

-Bot, 環境構築・インフラ