話題の記事

[VS Code Insiders] MicrosoftからJupyter 拡張機能が提供されたのでさっそく触ってみた #VSCodejp #VSCode #拡張機能 #Jupyter #Python

2020.11.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、Mr.Moです。

MicrosoftからJupyter 拡張機能が登場しましたね!今のところ Visual Studio Code Insiders のみでの提供のようですが今後に大変期待が持てる拡張機能なのでさっそく記念に使ってみたいと思います。

image.png

Jupyter 拡張機能とは

image.png

今日の Jupyter Notebooks でサポートされている言語カーネルの基本的なノートブックのサポートを提供する Visual Studio Code 拡張機能です。多くの言語カーネルは変更なしで動作します。高度な機能を有効にするには、VS Code 言語拡張で修正が必要な場合があります。

ちなみにこれまではPython拡張機能で Jupyter Notebooks の作成/編集 などの機能が提供されていました。そちらの方は下記の記事を参考にしていただければと思います。

さっそく使ってみる

Jupyterと、公式の記事の方でJuliaを使ったデモを公開していたのでそちらも試してみようと思います。

事前準備

公式のQuick Startも参考にしながら、下記の準備を行います。

# Juliaのインストール
$ wget https://julialang-s3.julialang.org/bin/linux/x64/1.5/julia-1.5.3-linux-x86_64.tar.gz
$ tar zxvf julia-1.5.3-linux-x86_64.tar.gz

# ~/.bashrc (or ~/.bash_profile) に下記を追加
# export PATH="$PATH:/path/to/<Julia が入っているディレクトリ>/bin"

$ source ~/.bashrc

# JuliaをNotebookに追加する
$ julia
julia> using Pkg
julia> Pkg.add("IJulia")

※ 今回はLinux環境で行います。

Jupyter Notebook 新規作成してみる

下記のようにNotebookを新規作成すると、セル単位で様々な言語を選択できそうでした。

vscode-jupyter3.gif

機能の確認

機能としては下記の「IntelliSense」と「Jupyter Notebooks ファイルの作成/編集 など」が記載されていました。

image.png

  • IntelliSense

下記は言語はPythonを選択して実施してますが、IntelliSense は下記のような感じで動いていました。やはりこの機能は便利ですね!

vscode-jupyter2.gif

  • Jupyter Notebooks

次はJupyterです。実行やグラフの描画が問題無くできました!ただ、Python拡張機能の時にはあった変数エクスプローラーやデータビューアーといった機能はまだ無さそうでしたので今後のUPDATEに期待ですね。

image.png

(また、Python拡張機能では出来ていたGather拡張機能との連携も今のところ無さそうでした)

Juliaも使ってみる

Juliaが使えるということでやってみました。コードは下記になります。

using Pkg
Pkg.add("PyPlot")

using Plots
# define the Lorenz attractor
Base.@kwdef mutable struct Lorenz
    dt::Float64 = 0.02
    a::Float64 = 10
    p::Float64 = 28
    b::Float64 = 8/3
    x::Float64 = 1
    y::Float64 = 1
    z::Float64 = 1
end

function step!(l::Lorenz)
    dx = l.a * (l.y - l.x);         l.x += l.dt * dx
    dy = l.x * (l.p - l.z) - l.y;   l.y += l.dt * dy
    dz = l.x * l.y - l.b * l.z;     l.z += l.dt * dz
end

attractor = Lorenz()

# initialize a 3D plot with 1 empty series
plt = plot3d(
    1,
    xlim = (-30, 30),
    ylim = (-30, 30),
    zlim = (0, 60),
    title = "Lorenz Attractor",
    marker = 2,
)
# build an animated gif by pushing new points to the plot, saving every 10th frame
@gif for i=1:1500
    step!(attractor)
    push!(plt, attractor.x, attractor.y, attractor.z)
end every 10

上記のコードを実行すると、下記のようなアニメーションが動きます。Juliaも簡単に動かすことができました!

vscode-jupyter4.gif

まとめ

まだVisual Studio Code Insidersのみでの提供ということもあって、Python拡張機能のJupyter機能にはあった機能も実装されてないものがありそうだったり正直もう少しという感じはありましたが、専用の拡張機能として改めて注力していくことがうかがえて今後のUPDATEが楽しみだと思いました。今後の動向にも注目していきたいと思います!

参考