23
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCode+Jupyter拡張機能でJulia1.5の開発環境を構築する

Last updated at Posted at 2021-01-31

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を実行する。

image.png

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. インストール確認

  1. Visual Studioを起動し、Terminalウインドウを開く(CTRL+@)
  2. Terminalウィンドウで julia --version を入力し、インストールされたJuliaのバージョンを確認する。
    image.png

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
2021124 22:00:07

julia>
PowerShellの実行(シェルの実行)
shell> powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\> date
2021124 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>  = [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.

image.png

4.2. パッケージのインストール

  • Plotsパッケージをインストールする。
    • REPL ジュリアモードにおいて、Pkg.addを行うことで、対象パッケージをインストールできる。
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パッケージがインストールされた状態で実行すると、以下のように実行される。

image.png

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を終了すること。
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)を選択する。
    image.png

  • settings.jsonにおいて、以下を入力する。

    • jupyter.insidersChannelは、Jupyter拡張機能のUpdate確認用なので、必要に応じて設定すること。
settings.json
{
    "jupyter.experiments.optOutFrom": ["NativeNotebookEditor"],
    "jupyter.insidersChannel": "daily",
}

5.3. Jupyter Notebookの設定

  • コマンドパレット(CTRL + SHIFT + P)を実行し、Jupyter: Select a Kernelを選択後、Juliaを選択する。
    image.png
    image.png

5.4. Jupyter Notebookの実行

  • コマンドパレット(CTRL + SHIFT + P)を実行し、Jupyter: Create New Blank Jupyter Notebookを選択する。
    • または任意の.ipynbファイルを作成する。
      image.png

6. まとめ

  • VSCodeをフロントエンドとしてJuliaの実行環境を構築できることを確認した。
    • REPLモードの実行
    • Juliaファイルの編集、および実行
    • Jupyter Notebookを実行できた。
  • Python以外の言語でも、VSCode内でJupyter Notebookが利用できるのは良いことです('ω')
23
26
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?