【Julia】Docker上で次世代型ノートブック『Pluto』を動かす

Julia

Pythonのように書けてC言語並みに高速動作すると話題が、プログラミング言語Juliaです。
Juliaの優れた言語設計により、それによって作られたライブラリもまた優秀なものが多いです。

今回は、Juliaによる開発で欠かせない次世代型ノートブックのPlutoをDocker上で動かします。

Plutoとは

PythonのJupyter Notebookのように対話操作可能な開発方式として、REPL(Read-Eval-Print-Loop)と呼ばれます。
簡単なコードを書き、それを出力して、コードを修正するという一連の作業が簡単にできます。

機械学習のように試行錯誤を繰り返すような場合に、非常に有用な方式で、広く利用されています。

REPL方式は、Julia言語のデフォルト機能の一つとして提供されていますが、「Pluto」を利用することで全く新しいものになります。
私のTwitterでも紹介し、大きな反響がありました。

Plutoの詳しい機能については、公式の紹介動画が非常にわかりやすいです。
英語ですが、見た目だけでわかるので、その素晴らしさを理解できます。

日本語では以下の記事があります。

https://qiita.com/SatoshiTerasaki/items/d7a4296a77c76589f3a6

Docker上でPlutoをインストール

Plutoに興味を持ったところで、インストール作業を行いましょう。
今回は、手元のローカル環境を汚さないように、Dockerコンテナ上でPlutoを起動します。

Dockerイメージを作成

Dockerイメージを作成するために、Dockerfileを作成します。
以下のようなファイルをDockerfileという名前で保存してください。

FROM julia:1.6.2

# Pluto
RUN julia -e 'using Pkg; Pkg.add(["Pluto"])'

ここでは、JuliaとPlutoをインストールしているだけです。

同じフォルダ内で、以下のコマンドを用いてビルドを行います。
julia_plutoはイメージ名なので、好きなものに変更できます。

$ docker build -t julia_pluto .

Plutoを起動

ビルドが終わったら、早速起動してみましょう!

以下のコマンドで起動が可能です。

$ docker run -it --rm \
    -p 1234:1234 \
    -v $(pwd):/workdir \
    -w /workdir \
    julia_pluto \
    /usr/local/julia/bin/julia -e 'using Pluto; Pluto.run(host="0.0.0.0")'

ポイントはPluto.run(host="0.0.0.0")の部分です。
公式ではPluto.run()でPlutoを起動しますが、Dockerコンテナ内で動かすには、hostを指定する必要があります。

また、ローカル環境とソースコードを共有するために、-vオプションで共有フォルダの設定を行っています。

起動が環境すると、以下のようなメッセージが出ます。

Go to http://0.0.0.0:1234/?secret=xxxxxx in your browser to start writing ~ have fun!

Press Ctrl+C in this terminal to stop Pluto

ここまでできたら、表示されたURLにブラウザからアクセスします(http://0.0.0.0:1234/?secret=xxxxxx )。
この際に、secret以下までしっかりとコピーしてください。

ちゃんと起動できていれば、以下のような画面がブラウザに表示されます。

Plutoを停止するときは、コマンドラインに戻り、Ctrl+Cで停止します。

まとめ

PlutoをDockerコンテナ上で動かす方法について解説しました。

Docker上で動かすには、Pluto.run()hostオプションを指定する必要があります。
この方法は、日本語の解説記事は見つからなかったので、今回の記事を書きました。

Plutoのような素晴らしいツールが、早く世の中に普及することを願っています!

コメント

タイトルとURLをコピーしました