Pythonのように書けてC言語並みに高速動作すると話題が、プログラミング言語Juliaです。
Juliaの優れた言語設計により、それによって作られたライブラリもまた優秀なものが多いです。
今回は、Juliaによる開発で欠かせない次世代型ノートブックのPlutoをDocker上で動かします。
Plutoとは
PythonのJupyter Notebookのように対話操作可能な開発方式として、REPL(Read-Eval-Print-Loop)と呼ばれます。
簡単なコードを書き、それを出力して、コードを修正するという一連の作業が簡単にできます。
機械学習のように試行錯誤を繰り返すような場合に、非常に有用な方式で、広く利用されています。
REPL方式は、Julia言語のデフォルト機能の一つとして提供されていますが、「Pluto」を利用することで全く新しいものになります。
私のTwitterでも紹介し、大きな反響がありました。
Plutoの詳しい機能については、公式の紹介動画が非常にわかりやすいです。
英語ですが、見た目だけでわかるので、その素晴らしさを理解できます。
日本語では以下の記事があります。
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のような素晴らしいツールが、早く世の中に普及することを願っています!