WindowsへJulia(IJulia)をインストールする＋なるべくdownload関数を使用しない

**追記(19/10/06)**
この記事は古いです。Julia v1.2がリリースされています。
`ENV["BINARYPROVIDER_DOWNLOAD_ENGINE"]`に`"curl"`を設定すればインストールされているcurlを使用するようになります。([参考1](https://twitter.com/sgryjp/status/1149328754281287681), [参考2](https://qiita.com/sugasaki/items/ba9737d13db33d2cd71f))
（`base.download`も`ENV["SYSTEMROOT"]`か`C:\Windows`から`System32\curl.exe`が存在するかチェックするようです。このあたり、調べられていません。）

## はじめに
今回は`ENV["JUPYTER"]`に自力でインストールしたJupyter Notebookのパスを設定するだけなのだけれど、経緯を含めて以下に記す。

前編(本記事) / [後編](https://qiita.com/JKirisaka/items/718d110d5b7054ba0553)

### きっかけ
ときどき、工学系の研究や開発で信号の誤り率をシミュレーションする必要が出てくる。
そんなときにプログラミングが上手くないばかりにプログラムの実行速度が遅くストレスが溜まってしまう。
噂によるとJulia言語を使えばあまりプログラミングの巧拙によらずに高速動作をするプログラムが書けるらしく、興味を持った。

### 「download関数を使用しない」とは
ところで、WindowsではJuliaをインストールした後、IJuliaなどの種々のパッケージを追加する際にdownload関数で色々こけることがあるらしい。
ネタばれすると、私も会社のプロキシサーバを突破できずに困ってしまった。
そのため、なるべくdownload関数、特に`Base.download`を使わないようにインストール作業を行った。

### 環境
- マシン - Windows10(64bit)
- Anaconda3 - ver 5.0.1
- Julia - ver 0.6.1

### 前提
Jupyter Notebookのことはある程度知っていて、そこにJuliaを追加するためにIJuliaパッケージをビルドすることが目的であると理解している。

**○追記1** コメントで教えていただいた
JuliaPro
(23/05/27 リンク切れ)というディストリビューションにIJuliaが入っているようだ（要登録）。

## 手順
### Step1 : Anaconda3
とりあえず全てデフォルトでインストールする。
インストールしたディレクトリは覚えておくこと。
Jupyter Notebookを実行すると以下のような画面が出る。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201984/2a9d56f6-2150-5753-8939-ba1e928f044d.png)
↓
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201984/fea5e30c-e9c4-d6d8-ec51-4a4a1a146690.png)

#### ホームディレクトリを指定したい場合（とりあえずの解決方法）
1. アイコンからプロパティを表示して、「リンク先」の`%USERPROFILE%`を削除する
2. 作業フォルダー（以下の画像でいう`C:\Users\YourUserName`）にある`.jupyter\jupyter_notebook_config.py`をエディタで開き次のように編集する

```python:jupyter_notebook_config.py
c.NotebookApp.notebook_dir = 'C:\work' #場所は好みで
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201984/590a9168-248d-62ba-f3d9-eae933e89279.png)

**○追記2** [`%USERPROFILE%`を目的の場所に書き換えるだけでいいようだ。](https://gist.github.com/genkuroki/81de23edcae631a995e19a2ecf946a4f)

### Step2 : Julia
とりあえずインストールする。
Juliaを実行すると以下のような画面が出る。
ここでいろいろやるだけでも楽しい。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201984/efc70818-c75c-4740-6b3f-a05671a2f552.png)
↓
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201984/3fafb95d-5cfc-e1a4-489a-fd77288e9845.png)

#### 環境変数を設定する
JuliaはWindowsの環境変数を`ENV`に読み込んでくれるので、以下のように環境変数を設定する。

1. Anacondaがインストールされたディレクトリを`<AnacondaDirectory>`とする。
2. Juliaのパッケージを置いておきたい場所を`<JuliaPackageDirectory>`とする。
3. Gitのために、以下のプロキシサーバ周りの環境変数を設定する。プロキシサーバのアドレスを`proxyserver`、ユーザ名を`username`、パスワードを`password`とする。(プロキシサーバを経由しない環境であれば本設定は必要ない)

```windows:環境変数
JUPYTER=<AnacondaDirectory>\Scripts\jupyter.exe
JULIA_PKGDIR=<JuliaPackageDirectory>
JULIA_HOME=<JuliaPackageDirectory>\bin
HTTP_PROXY=http://username:password@proxyserver:8080/
HTTPS_PROXY=http://username:password@proxyserver:8080/
```

一応、毎回Juliaのコンソールで最初に以下のコードを実行しても結果は同じ。

```julia:julia
ENV["JUPYTER"] = "<AnacondaDirectory>\\Scripts\\jupyter.exe" #バックスラッシュは2つ
ENV["JULIA_PKGDIR"] = "<JuliaPackageDirectory>"
ENV["JULIA_HOME"] = "<JuliaPackageDirectory>\\bin"
ENV["HTTP_PROXY"] = "http://username:password@proxyserver:8080/"
ENV["HTTPS_PROXY"] = "http://username:password@proxyserver:8080/"
```

#### パッケージを追加する
以下のコードを実行する。

```julia:julia
Pkg.init()
Pkg.add("IJulia")
```

このときにあらかじめJupyter Notebookをインストールしておかないと途中でJupyter Notebookのダウンロードが始まり、`Base.download()`が使用されてこけてしまう。

## これまでの作業で
それでもパッケージの追加の途中で失敗してしまっただろうか。
私も試行錯誤して上記の方法でIJuliaのビルドは通過するようになったのだが、まだWinRPMというパッケージで上手くいかない状態だった。
結局、パッケージのコードを少し書き換えて無理やり突破したのだけれど、それは[次の記事](https://qiita.com/JKirisaka/items/718d110d5b7054ba0553)で紹介したいと思う。

# 参考
- genkuroki / [WindowsへのJuliaのインストール.ipynb](https://gist.github.com/genkuroki/81de23edcae631a995e19a2ecf946a4f)
- can110 / [JupyterNotebookの初期ディレクトリが指定できなくなった](https://teratail.com/questions/70182)