【Julia】Jupyterをアクティブ環境(仮想環境のようなもの)で使用できるようにする.

# 概要
本記事ではJuliaをインストールし, 独立した環境(pythonでいうpyenvのような環境)でJupyter Notebookを用いた開発を行えるようにするまでの流れを紹介します.
JuliaのインストールはHomebrew-caskを使用しており, それを使えるよう準備するところから紹介しています.
開発中のバージョン等をソースからビルドする方法は紹介しません.

# 実行環境
```
% sw_vers
ProductName:	macOS
ProductVersion:	12.4
BuildVersion:	21F79
```

# HomebrewとHomebrew-caskのインストール
## Homebrewのインストール
```
# インストールコマンド
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
### 正常にインストールされているか確認
バージョンを確認し, 正常にインストールされているか確認する.
```
% brew -v
Homebrew 3.4.11
```
## Homebrew-caskをインストール
```
# インストールコマンド
% brew install cask
```


# Juliaのインストール
(開発中のバージョンをソースからビルドしても大丈夫です.)
私は安定しているバージョンをシンプルにインストールしたかったので, Homebrew-caskを使用しました.
## Homebrew-caskを用いたインストール
```
# インストールコマンド
% brew install --cask julia
```
## 動作確認
### コマンドを入力し, 動作確認
```
% julia
```
以下のような表示がされれば, インストールが成功です.
(実際はもっとカラフルな表示がされます. インストールしてのお楽しみに....)
```
              _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.2 (2022-02-06)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> 
```
## Julianモードを終了
```julia> ```で始まるインタラクティブコマンドラインモードをJulianモードと呼びます.
以下のように終了コマンドを入力し, 一旦終了しましょう.
```
julia> exit()
```


# 独立した環境を作成
Juliaでは, pythonの仮想環境(pyenv)のようにインストールしたパッケージを環境ごとに管理する機能があります.
以降, 異なるバージョンのパッケージを独立した環境で使用するための環境を作成していきます.
## 作業ディレクトリに移動
(新規ディレクトリを作成し, )ディレクトリを移動.
```
% mkdir [作業ディレクトリ] && cd $_
または
% cd [作業ディレクトリ]
```
## 独立した環境をセットする
### JulianモードからPkgモードへ切り替え
```
jullia> ]

(@v1.7) pkg>
```
### 独立した環境を新たにアクティベート(アクティブ環境作成)
```
(@v1.7) pkg> activate [作業ディレクトリ]
      Activating new project at [作業ディレクトリ]

([作業ディレクトリ]) pkg>
```
## 現在の環境確認
作成した環境の現在の状態を確認しておきます.
```
([作業ディレクトリ]) pkg> status
      Status `[作業ディレクトリ]/Project.toml` (empty project)
```


# Jupyter Notebookを使用できるようにする
アクティブ環境でJupyter Notebookを使えるようにします.
(pip等でJupyter Notebookをインストールされているのが前提です.)
## IJuliaパッケージをインストール
```
([作業ディレクトリ]) pkg> add IJulia
```
## インストールされていることを確認
```
([作業ディレクトリ]) pkg> status
      Status `~/Documents/[作業ディレクトリ]/Project.toml`
  [7073ff75] IJulia v1.23.3
```
## カーネルへ追加されていることを確認
### Pkgモードからshellモードに切り替え
```
([作業ディレクトリ]) pkg> ;

shell>
```
### Jupyterカーネルをコマンドで確認
```
shell> jupyter kernelspec list
Available kernels:
  julia-1.7    /Users/[ユーザ名]/Library/Jupyter/kernels/julia-1.7
  python3      /Users/[ユーザ名]/.pyenv/versions/3.9.6/share/jupyter/kernels/python3
```
## Jupyter Notebookを起動
Jupyter Notebookを起動し, NewをクリックしたときにJuliaが表示されていれば正常です.
![Screen Shot 2022-06-06 at 0.05.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628626/7d35624d-95fc-045c-5ec1-63abe0555f9b.png)

# 非アクティブ環境の確認
非アクティブ環境にはパッケージ(IJulia)がインストールされていないことを確認する.
(Jupyter Notebookは終了しておく.)
## shellモードからPkgモードに切り替え
```
# Ctrl + C: Julianモードに切り替える
shell> ^C 　 

# Pkgモードへ切り替える
julia> ]


([作業ディレクトリ]) pkg>
```
## アクティブ環境から出る
```
([作業ディレクトリ]) pkg> activate  # 引数を与えずに入力
  Activating project at `~/.julia/environments/v1.7`

(@v1.7) pkg>
```
## デフォルト環境を確認
デフォルト環境を確認し, IJuliaがインストールされていない(環境が汚染されていない)ことを確認する.
```
(@v1.7) pkg> st
      Status `~/.julia/environments/v1.7/Project.toml` (empty project)
```
アクティブ環境ではインストールが確認できた**IJulia**が表示されていません.
この状態となっていれば, 独立した環境(アクティブ環境)を作成することに成功しています.

作業をするときは, 再びアクティブ環境に切り替えれば大丈夫です.

# おわりに
以上でJuliaをアクティブ環境で使用可能かつ, Jupyter Notebookが利用できるようにする準備が完了です.

Pythonと違ってまだまだ発展途上のJuliaですが, ポテンシャルの高い言語として徐々にシェアを広げています.
これから発展がどうなっていくのか不透明ですが, 個人的に発展していって欲しい言語の一つです. (名前もなんだか惹かれますよね?)

# 参考文献
* [Homebrew ドキュメント](https://brew.sh/)
* [Julia ドキュメント](https://docs.julialang.org/en/v1/)
* [IJulia ドキュメント](https://julialang.github.io/IJulia.jl/stable/)