1. はじめに
- 科学技術計算指向のプログラム言語として、Julia(ジュリア)が注目を集めている。
- 本ページでは、Visual Studio Code(以下VSCode)でJuliaの開発環境を構築する。
- また、VSCodeにJupyter拡張機能を導入することで、VS CodeからJupyter Notebookを利用する。
- 対象OSは Windows 10 Home 64bit とする。
- 本ドキュメントの記載内容まとめ
- VSCodeからREPLモード(対話型)のJuliaを実行する。
- VSCodeでJuliaファイル(
.jl
)の編集、および実行する。 - VSCodeでJulia用のJupyter Notebookを実行する。
2. インストール
-
以下のパッケージをダウンロードおよびインストールする(執筆時点の最新版)。
-
Python以外の言語でJupyterをVSCodeで実行したい場合、Stable版ではなく、Insiders版を利用する必要がある点に注意。
項目 | バージョン | URL |
---|---|---|
Julia | 1.5.3 installer (windows-64bit) | https://julialang.org/downloads |
Visual Studio Code Insiders | 1.53.0-insider (x64) | https://code.visualstudio.com/insiders/ |
Julia (VSCode Extension) | v1.0.10 | https://marketplace.visualstudio.com/items?itemName=julialang.language-julia |
Jupyter (VSCode Extension) | 2020.12.414227025 | https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter |
2.1. 環境変数の設定
- ユーザ環境変数 Path に Julia の実行ファイルのパスを追加する。
- [コントロールパネル] > [システム] > [システムの詳細設定] > [環境変数] > [ユーザ環境変数] > [Path]
2.2. インストール確認
- Visual Studioを起動し、Terminalウインドウを開く(CTRL+@)
- Terminalウィンドウで
julia --version
を入力し、インストールされたJuliaのバージョンを確認する。
3. 動作確認(REPL)
- JuliaにはREPL(read-eval-print loop)と呼ばれる対話的実行環境が存在している。
- 構文の評価、過去の入力履歴の検索、タブ補完、キーバインド、専用のヘルプモードとシェルモードなどを備えている。
- 本章ではVSCodeでREPLを利用する方法を解説する。
- 以降の作業は、VSCodeのTerminalウィンドウ(CTRL+@)にて実行する前提とする。
-
Ctrl+L
を押すと、Terminalウィンドウの表示がクリアされる。
-
3.1. REPLの開始/終了
- Terminalウィンドウ(デフォルトはPowerShell)で、
julia
を引数なしで実行すると、REPLが開始される。 - REPL実行中はプロンプトに
julia>
が表示される。 -
CTRL+d
または、exit()
を実行することで、REPLが終了される。
3.2. REPLプロンプトモード
- REPLには以下の動作モードが存在している。
- ジュリアモード(The Julian mode)
- シェルモード(Shell mode)
- ヘルプモード(Help mode)
- 検索モード(Search modes)
- パッケージモード(Pkg mode)
- デフォルトの動作モードはジュリアモードとなる。
3.2.1. ジュリアモード
-
julia>
プロンプトに「式」を入力すると、以下の処理が行われる。- 入力式が評価され、式の結果が変数
ans
に代入される。 - プロンプトの応答に式の結果が表示される。
- 入力する「式」の行末にセミコロン
;
を指定すると、結果が表示されなくなる。
- 入力式が評価され、式の結果が変数
- 実行した関数はキャッシュされる為、同一の関数を複数回実行すると2回目以降の計算速度が早くなる。
変数の代入
julia> a = 1 + 2
3
julia> a
3
結果表示の抑制/変数ansへの代入
julia> string(3 + 4);
julia> ans
"7"
3.2.2. ヘルプモード
-
julia>
プロンプトにクエスチョン?
を入力すると、ヘルプモードとなる。 - ヘルプモード実行中はプロンプトに
help?>
が表示される。 -
help?>
プロンプトに「型」や「関数」「マクロ」などを入力すると、該当するヘルプが表示される。
型のヘルプ例(UInt64)
help?> UInt64
search: UInt64 UInt16
UInt64 <: Unsigned
64-bit unsigned integer type.
関数のヘルプ例(SubString)
help?> SubString
search: SubString SubstitutionString
SubString(s::AbstractString, i::Integer, j::Integer=lastindex(s))
SubString(s::AbstractString, r::UnitRange{<:Integer})
Like getindex, but returns a view into the parent string s within range i:j or r respectively instead of making a copy.
Examples
≡≡≡≡≡≡≡≡≡≡
julia> SubString("abc", 1, 2)
"ab"
julia> SubString("abc", 1:2)
"ab"
julia> SubString("abc", 2)
"bc"
マクロのヘルプ例(@elapsed)
help?> @elapsed
@elapsed
A macro to evaluate an expression, discarding the resulting value, instead returning the number of seconds it took to
execute as a floating-point number.
See also @time, @timev, @timed, and @allocated.
julia> @elapsed sleep(0.3)
0.301391426
3.2.3. シェルモード
-
julia>
プロンプトにセミコロン;
を入力すると、シェルモードとなる。 - シェルモード実行中はプロンプトに
shell>
が表示される。 -
shell>
プロンプトにてpowershell
またはcmd
でシェルコマンドを実行できる。
Windowsの場合、シェルを指定せずに直接コマンドは実行できない点に注意。-
powershell [command]
を入力すると、PowerShellのコマンドを実行できる。-
[command]
を入力しない場合、PowerShellが実行される(PS C:\>
プロンプト)-
exit
でPowerShellを終了できる。
-
-
-
cmd
を実行するとコマンドプロンプトのシェルが実行される(C:\>
プロンプト)-
exit
でコマンドプロンプトを終了できる。
-
-
PowerShellの実行(直接コマンド実行)
shell> powershell date
2021年1月24日 22:00:07
julia>
PowerShellの実行(シェルの実行)
shell> powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\> date
2021年1月24日 22:05:05
PS C:\> exit
julia>
cmdの実行(シェルの実行)
shell> cmd
Microsoft Windows [Version 10.0.18363.1316]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\>date /T
2021/01/24
C:\>exit
julia>
3.2.4. 履歴モード
- REPLにて実行されたすべてのコマンドは履歴ファイルに保存され、履歴モードでインクリメンタルサーチできる。
- プロンプトにおいて
CTRL+S
(順方向)またはCTRL+R
(逆方向)を入力すると、履歴モードとなる。 - 履歴モード実行中はプロンプトに
(forward-i-search):
または(reverse-i-search):
が表示される。-
(forward-i-search)
: 履歴を順方向で検索する。CTRL+S
で次の履歴(順方向)に遷移する。 -
(reverse-i-search)
: 履歴を逆方向で検索する。CTRL+R
で次の履歴(逆方向)に遷移する。
-
履歴モード(順方向及び逆方向)
(forward-i-search)`p': powershell
(reverse-i-search)`p': powershell
3.2.5. パッケージモード
-
julia>
プロンプトに]
を入力すると、パッケージモードに遷移する。 - パッケージモード実行中はプロンプトに
Pkg>
が表示される。 - コマンドにおいて、以下を実行できる。
-
add
: パッケージの追加 -
remove
: パッケージの削除 -
update
: パッケージの更新 -
status
: インストールしたパッケージの一覧を表示
-
パッケージの追加/削除
(@v1.5) Pkg> add <パッケージ名> #パッケージの追加
(@v1.5) Pkg> remove <パッケージ名> #パッケージの削除
パッケージの更新
(@v1.5) pkg> update Plots # 指定したパッケージのみ更新
Installing known registries into `C:\Users\nomunomu\.julia`
Added registry `General` to `C:\Users\nomunomu\.julia\registries\General`
Updating registry at `C:\Users\nomunomu\.julia\registries\General`
No Changes to `C:\Users\nomunomu\.julia\environments\v1.5\Project.toml`
No Changes to `C:\Users\nomunomu\.julia\environments\v1.5\Manifest.toml`
(@v1.5) Pkg> update # Generalの全パッケージを更新
Updating registry at `C:\Users\nomunomu\.julia\registries\General`
No Changes to `C:\Users\nomunomu\.julia\environments\v1.5\Project.toml`
No Changes to `C:\Users\nomunomu\.julia\environments\v1.5\Manifest.toml`
パッケージ一覧の確認
(@v1.5) pkg> status
Status `C:\Users\nomunomu\.julia\environments\v1.5\Project.toml`
[91a5bcdd] Plots v1.10.2
3.2.6. Tab補完
- ジュリアモードなどで、最初の数文字を入力してから、
[Tab]
キーを押すことで一致するすべてのリストを取得できる。
Tab補完の例
julia> stri[TAB] # stri から始まる関数が表示されている
stride strides string strip
julia> Stri[TAB] # Stri から始まる型/構造体が表示されている
StridedArray StridedMatrix StridedVecOrMat StridedVector String
- LaTeX数学記号を同等のUnicodeで置き換えたり、LaTeX一致のリストを取得することもできる。
LaTex数学記号
julia> \pi[TAB]
julia> π
π = 3.1415926535897... # πの定義値が表示される
julia> e\_1[TAB] = [1,0]
julia> e₁ = [1,0] # 変数名が e₁
2-element Array{Int64,1}:
1
0
julia> e\^1[TAB] = [1 0]
julia> e¹ = [1 0] # 変数名が e¹
1×2 Array{Int64,2}:
1 0
julia> \sqrt[TAB]2 # √はsqrt関数(平方根)と同等
julia> √2
1.4142135623730951
- フィールドや関数の戻り値の補完もタブ補完が可能となる。
フィールドおよび関数の戻り値のタブ補完
julia> import UUIDs
julia> UUIDs.uuid[TAB] # UUIDs構造体内における uuid から始まるフィールド一覧が表示される
uuid1 uuid4 uuid_version
julia> split("","")[1].[TAB] # split型の戻り値である SubString{String} のフィールド一覧が表示される
lastindex offset string
4. 動作確認(ファイル実行形式)
- 本章ではファイル実行形式でサンプルプログラムを動作させる。
- 以降の作業は、VSCodeのエディタウィンドウでソースを編集・保存・実行する前提とする。
4.1. サンプルプログラム
- 以下のようなファイルを作成し、任意の名前(Juliaソースファイルの拡張子は
.jl
)で保存する。
sample.jl
using Plots
x = 0: 0.01:2pi
f(x) = x ^ 2
plot(x , f)
4.1.1. プログラムの実行
- エディタにおいて
SHIFT + ENTER
を押下することで、Juliaプログラムを実行できる。 - Plotsパッケージが見つからない場合、エラーとなる。
ERROR: LoadError: ArgumentError: Package Plots not found in current path:
Run `import Pkg; Pkg.add("Plots")` to install the Plots package.
4.2. パッケージのインストール
- Plotsパッケージをインストールする。
- REPL ジュリアモードにおいて、
Pkg.add
を行うことで、対象パッケージをインストールできる。
- REPL ジュリアモードにおいて、
julia> import Pkg
julia> Pkg.add("Plots")
Installing known registries into `C:\Users\nomunomu\.julia`
C:\Users\nomunomu\.julia`
Added registry `General` to `C:\Users\nomunomu\.julia\registries\General`
4.2.1. プログラムの実行
- エディタにおいて
SHIFT + ENTER
を押下することで、Juliaプログラムを実行できる。 - Plotsパッケージがインストールされた状態で実行すると、以下のように実行される。
5. 動作確認(Jupyter)
- 本章ではVS Codeにおいて Jupyter Notebookを動作させる。
- 以降の作業は、VSCodedeで作業を行う前提とする。
5.1. インストール
- JupyterをVSCodeで実行するためには、Jupyterのカーネルがインストールされている必要がある。
- 以下のパッケージをREPLのパッケージモードでインストールする(執筆時点の最新版)。
-
CTRL+@
でターミナルを開き、コマンドラインからjulia
を実行することでREPLを実行できる。
-
項目 | バージョン | URL |
---|---|---|
IJulia | 1.23.1 | https://github.com/JuliaLang/IJulia.jl |
IJuliaのパッケージのインストール
julia> import Pkg; Pkg.add("IJulia")
Installing known registries into `C:\Users\nomunomu\.julia`
Added registry `General` to `C:\Users\nomunomu\.julia\registries\General`
-
notebook()
を実行すると、デフォルトブラウザ上でJupyter Notebookが起動する。- VSCodeのターミナルから
CTRL+C
でJupyter Notebookを終了すること。
- VSCodeのターミナルから
notebook()を実行する。
julia> using IJulia
[ Info: Precompiling IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a]
julia> notebook()
install Jupyter via Conda, y/n? [y]: y
(以下略)
5.2. エディタの設定
-
コマンドパレット(
CTRL + SHIFT + P
)を実行し、Preferences: Open Settings (JSON)
を選択する。
-
settings.json
において、以下を入力する。-
jupyter.insidersChannel
は、Jupyter拡張機能のUpdate確認用なので、必要に応じて設定すること。
-
settings.json
{
"jupyter.experiments.optOutFrom": ["NativeNotebookEditor"],
"jupyter.insidersChannel": "daily",
}
5.3. Jupyter Notebookの設定
5.4. Jupyter Notebookの実行
- コマンドパレット(
CTRL + SHIFT + P
)を実行し、Jupyter: Create New Blank Jupyter Notebook
を選択する。
6. まとめ
- VSCodeをフロントエンドとしてJuliaの実行環境を構築できることを確認した。
- REPLモードの実行
- Juliaファイルの編集、および実行
- Jupyter Notebookを実行できた。
- Python以外の言語でも、VSCode内でJupyter Notebookが利用できるのは良いことです('ω')