前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
今回は最新バージョンの「VS CodeエディタでJupyterを使えるようにする方法」についてまとめます。
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上でその環境を使ってノートブックを実行できます。
私が実行した手順
私は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でカーネルを変更する
- コマンドパレットを開く
Ctrl + Shift + P
(Windows/Linux)Cmd + Shift + P
(macOS)
- 「Jupyter: Select Interpreter to Start Jupyter Server」を選択
コマンドパレットで「Jupyter: Select Interpreter to Start Jupyter Server」を入力して選択します。 pyenv
のPython環境を選択する
ここで、先ほど作成したpyenv
のPythonカーネルを選択します。
4. 新しいカーネルをノートブックで使用する
- Jupyterノートブックを開きます。
- 上部の「カーネル」メニューから「カーネルの変更」を選び、先ほど作成した
pyenv
のカーネルを選択します。
上記の手順でVSCodeのJupyterでpyenv
のPython環境を使用することができるようになりました。
カーネルとは?
カーネルは、コンピュータシステムの中核部分として動作する重要なソフトウェアコンポーネントです。コンピュータのハードウェアとソフトウェアの橋渡しを行う役割を持っています。カーネルは、プログラムがコンピュータのリソース(CPU、メモリ、ストレージ、デバイスなど)を効率的に使用できるように管理し、適切に動作させるための基本的な機能を提供します。
カーネルの役割
- ハードウェアの管理
- カーネルは、CPU、メモリ、ディスク、ネットワークなどのハードウェアリソースへのアクセスを管理します。これにより、複数のプログラムがリソースを共有しながら動作できるようにします。
- プロセス管理
- プログラムが動作する際には、カーネルがそれぞれのプロセスを管理します。プログラム間でCPU時間を公平に分配し、プロセスが互いに干渉しないように保護します。
- メモリ管理
- カーネルは、プログラムが使用するメモリの割り当てと解放を行い、システムメモリを効率的に利用できるように管理します。メモリのアクセスを制御し、不正なメモリアクセスを防ぎます。
- デバイス管理
- 入出力デバイス(キーボード、マウス、ディスプレイ、ディスクドライブなど)とのやり取りもカーネルが担当します。プログラムが簡単にデバイスを操作できるように、ハードウェア操作を抽象化します。
- セキュリティとアクセス制御
- カーネルは、システムのセキュリティを維持するために、ユーザーやプログラムがアクセスできるリソースを制御し、システムの保護を行います。
カーネルの種類
カーネルにはいくつかの種類があり、用途やシステムに応じて異なるアプローチが取られます。
- モノリシックカーネル
- カーネル全体が1つの大きなプログラムとして動作するタイプです。例として、LinuxやWindowsのカーネルがこれに該当します。パフォーマンスが高い一方で、複雑になりやすいという特徴があります。
- マイクロカーネル
- 必要最小限の機能(プロセス管理、メモリ管理など)だけをカーネルに組み込み、その他の機能はユーザーレベルで動作させる方式です。小さくてシンプルな設計が特徴ですが、処理が分散されるためパフォーマンスがやや低くなることがあります。
- ハイブリッドカーネル
- モノリシックカーネルとマイクロカーネルの中間に位置するカーネルで、両者の利点を取り入れた設計です。macOSなどがこの方式を採用しています。
Jupyter Notebookにおける「カーネル」の意味
「カーネル」は、Jupyter Notebookでも重要な役割を果たしますが、ここでのカーネルは少し異なります。Jupyter Notebookでは、カーネルはコードの実行エンジンとして機能します。具体的には、次のような役割を担います。
- コードの実行
- Jupyter Notebookで入力されたPythonコードや他の言語(RやJuliaなど)を実際に実行し、その結果を返します。
- 状態の保持
- カーネルはコードの実行状態を保持します。これにより、ユーザーが一度定義した変数や関数が、カーネルがアクティブである限り保存され、後続のコードで利用できるようになります。
- インタラクティブな実行
- カーネルは、ユーザーのコードを1行ずつ実行し、即座に結果を返します。これにより、ユーザーは対話的にコードを実行して結果を確認しながら作業を進められます。
カーネルの操作(Jupyterにおいて)
- カーネルのリスタート: 実行環境をリセットして、メモリ上の変数や状態をクリアすることができます。これを使うと、新しい状態でコードを再実行することが可能です。
- カーネルの停止: コードの実行を中断し、カーネルを停止します。これは無限ループなど、コードが停止しない場合に便利です。
カーネルのメリット・デメリット
メリット
- 効率的なリソース管理: カーネルはコンピュータリソースの管理を行うことで、ハードウェアを最大限に活用できます。
- セキュリティ保護: カーネルはアクセス制御を行い、システムを保護します。プログラム間の不正アクセスやシステム全体の破壊を防ぎます。
- 抽象化: カーネルはハードウェアの動作を抽象化し、プログラムが簡単にデバイスやメモリを操作できるようにします。
デメリット
- 複雑さ: カーネルはシステムの中核部分であるため、バグやエラーが発生するとシステム全体が影響を受ける可能性があります。
- パフォーマンスオーバーヘッド: 特にマイクロカーネルなどの場合、複数のプロセス間でメッセージをやり取りするため、パフォーマンスが低下することがあります。
まとめると:
カーネルは、コンピュータやシステムの核となるソフトウェアであり、リソース管理、プロセス管理、デバイス管理を行います。コンピュータシステム全体の効率や安全性を確保するための重要な役割を果たしています。
Jupyter Notebookにおいては、カーネルはコードの実行を担うエンジンとして機能し、インタラクティブなプログラミング体験を支えています。
カーネルは日々使用するシステムやツールの根幹にあり、その理解がシステムの動作や問題解決に役立ちます。
まとめ
今回は「VSCode+jupyterで動かす設定」についてまとめました。
プログラミングに関しては基礎レベルで理解できていないこともまだたくさんあるので、今後も手を動かしながら学ぶことを最優先して、技術の仕様を理解しながら実装をします。
今後もこの調子でbotの開発状況を発信していきます。
内部でこういうことが設定されていることを理解していないとプロジェクトの中身を読んでもその設計を全く理解できないということがままある。基本的なコマンド操作は手を動かして実際に学ぶのが一番良い。 pic.twitter.com/ah0fBoml8K
— よだか(夜鷹/yodaka) (@yodakablog) September 4, 2024