Julia(JuliaLang) v1.3.0 + VSCode環境構築 at macOS

# Juliaとは

詳細は[公式ページ](https://julialang.org/)を参照していただくとして、
私が認識している範囲でざっくりと特徴を述べると

- Pythonライクな高級言語で比較的学習コストが低い
- 処理が高速である（C++で実装されてる）
- 動的型付け言語である
- オープンソースである
- JupyterNotebookでインタラクティブに利用可能
- 科学計算用途に使える機能が豊富

# 各種リンク

- 公式サイト：[julialang.org](https://julialang.org/)
- Github：[julia](https://github.com/JuliaLang/julia)
- Github：[IJulia](https://github.com/JuliaLang/julia)（JupyterNotebookで利用するのに必要）

# この記事の内容

- macOS + VSCode + Julia の環境構築方法の説明
- IJuliaを導入してJupyterNotebook上でJuliaを動かす方法の説明

※VSCodeのインストールは完了しているものとします

# macOS + VSCode + Julia 環境構築

## 開発環境

- macOS Mojave v10.14.6
- VSCode v1.40.2

## Juliaのdiscimageを取得

- [julialang.orgのダウンロードページ]((https://julialang.org/downloads/))から所望のバイナリファイルをダウンロードする
- 今回は`Current stable release : v1.3.0(64bit)`を取得しました
- <font color=red>安全に進めたい場合はLTSを取得してください</font>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181972/c93d9857-8d25-cb56-889c-156fca7126f2.png)

## Juliaのインストール

- diskimageからインストールしてApplicationフォルダにjulia-1.3.appを格納する
- Terminalから`julia`コマンドで起動するためにシンボリックリンクを`/usr/local/bin`に作成
    - `sudo ln -s /Applications/Julia-1.3.app/Contents/Resources/julia/bin/julia /usr/local/bin/julia`
    - <font color=red>ご自分がインストールしたJuliaのバージョンに合わせて*.appの部分は修正してください</font>
- TerminalからJuliaを起動する方法は[こちらのQA](https://discourse.julialang.org/t/invoking-julia-from-the-terminal-on-macos/1124)を参考にしました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181972/889447f4-aa8a-e162-2042-f0ef8f94bc9e.png)

`julia`コマンドで上記のメッセージが出力されたら完了

## ちょっと動かしみる

せっかくなので軽くJuliaを触ってみましょう
公式ページの[Getting Started](https://docs.julialang.org/en/v1/manual/getting-started/)を参考に

### Interactiveに簡単な計算

`ans` コマンドで最後に格納された算出結果が出力されます

```bash
julia> 1 + 2 * 5
11
julia> ans
11
```

### Julia起動時に実行するスクリプトを書く

```bash
> echo 'println("Greetings!")' > ~/.julia/config/startup.jl
> julia
Greetings!
julia> 
```

## julia-vscode の導入

VSCodeのJulia用Extensionを導入します （Githubは[こちら](https://github.com/julia-vscode/julia-vscode)）

VSCodeのextension検索ウィンドウに `julia` と入力しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181972/939149e8-336a-95c7-f3fa-004f1b9c9749.png)

### 試しにスクリプトを動かしてみる

サンプルソースは[こちら](https://juliabyexample.helpmanual.io/)から拝借しました。
プロットしてみましょう。

```julia
using Pkg
Pkg.add("Plots")
Pkg.add("GR")
using Plots

# plot some data
plot([cumsum(rand(500) .- 0.5), cumsum(rand(500) .- 0.5)])

# save the current figure
savefig("plots.svg")
# .eps, .pdf, & .png are also supported
# we used svg here because it respects the width and height specified above
```
カレントディレクトリに下記のようなグラフがSVG形式で保存されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181972/38a25f2a-32db-1f4b-b6ce-b44d3eda7519.png)


# IJuliaを導入してJupyterNotebook上でJuliaを動かす

## Juliaを起動する

```bash
> julia
# =========略============
julia> 
```

## IJuliaパッケージをインストール

```julia
using Pkg
Pkg.add("IJulia")
```

[公式のREADME](https://github.com/JuliaLang/IJulia.jl)によれば

- 上記`add`コマンド時にはJupyterNotebook自体はインストールされず、次の`IJulia.notebook()`実行時にインストールされる
- インストールするJupyterのバージョンを指定したい場合は`Pkg.add()`の前に`ENV["JUPYTER"]`を設定する必要がある

## JupyterNotebook起動

```julia
using IJulia
notebook()
```

```bash
install Jupyter via Conda, y/n? [y]:
```
と聞かれるので `y` を入力します
<font color=red>※すでにJupyterインストール済みの場合はこの手順はありません</font>

インストールが完了したらJupyterNotebookが起動し、
ブラウザに画面遷移したら完了です

## JupyterLabの実行

```julia
using IJulia
jupyterlab()
```

jupyter notebook の時と同様に
ローカルにjupyterlabがない場合はconda経由でインストールされます

終了するには `Ctrl + C` 入力すればOK

# おまけ

## Juliaパッケージのアップデート

JuliaプロンプトかIJulia上いずれかで

```julia
using Pkg
Pkg.update()
```

## Juliaアップデート時にIJuliaを有効にする

Juliaをアップデートした時は、Jupyterに新しいJuliaの場所を伝えないといけません
Juliaプロンプトにおいて（<font color=red>IJulia上ではありません</font>）

```julia
Pkg.build("IJulia")
```