Julia言語の実行環境をお手軽に構築する


概要

  • 良い良いと噂のJuliaの実行環境を作ってみました
  • 最速で動作環境を作るということを目標に、Dockerを使って超お手軽に実行環境を構築します(最適化とかはまだ何も考えてない)
  • まだ環境を作っただけでJuliaの嬉しさは何も理解できてないので、今後使ってみる

動作環境

  • macOS Big Sur (11.4)
  • Mac mini (M1, 2020)
  • チップ Apple M1
  • Docker
    • Engine 20.10.6
    • Compose 1.29.1
  • IDE

Julia開発環境構築

目標構成として以下の構成を目指します

  • jupyter labでインタラクティブに動作確認が行える
  • ソースコードの開発はVSCodeを利用する

Juliaのインストールについて公式には、Downloadページからバイナリを入手するか、Githubでソースコードを入手してビルドする方法が挙げられています。
しかしここでは、ポータブルな環境にしたかったのと、インストールの手間を省きたかったのでDockerを利用します。

ということで、DockerでJuliaの動作するコンテナを立ち上げ、VSCodeのRemote開発を使ってコンテナに直接入ってソースコードの開発と実行をする構成を作ります。

Docker Image

Imageはjupyter/datascience-notebookを利用します。

jupyter/datascience-notebookはdatascience向けの言語(R, Python, Julia)と基本的なパッケージが備わっていて、jupyter labを立ち上げるとそれぞれの言語のカーネルが選択できるようになっています。
めちゃくちゃお手軽。というか、これを立ち上げるだけです。

docker-compose.yml

オプションの設定をいちいち覚えるのはめちゃくちゃ手間なので、docker-composeを使います。docker-compose.ymlは以下の構成で作ってみました。

version: '3'

services:
    jupyter:
        image: jupyter/datascience-notebook:latest
        user: root
        ports:
            - "8101:8888"
        environment:
            - GRANT_SUDO=yes
            - JUPYTER_ENABLE_LAB=yes
        volumes: 
            - $PWD:/home/jovyan/work
        command: start-notebook.sh --NotebookApp.token='' --NotebookApp.notebook_dir='/home/jovyan/work'

jupyter/datascience-notebookはセキュリティの観点でrootユーザではなくデフォルトでjovyanユーザでjupyterを立ち上げます。なので、そのままだとapt-getなどできないので、rootユーザを指定しています。
また、jovyanにsudo権限を与えています(RANT_SUDO=yes)。

環境変数についての詳細は公式ドキュメントを参照してください。

これで以下のコマンドでコンテナが立ち上がります。上記の設定では、localhostの8101番でjupyter labにつながります。

docker-compose up -d

Hello Juliaする

jupyter

ということで、Hello Juliaをしてみました。

Gistでnotebookを貼っていたのですが、なぜか埋め込まれないのでリンクを置いておきます。

スクリプトファイル

次に、VSCodeでソースファイルを作成して実行してみます。

例. sample.jl

println("Hello $(ARGS[1])!")

Pythonのようにjuliaコマンドの後にファイルを指定するだけです。

> julia src/sample.jl Julia

Hello Julia!

今回はここまで

とりあえず実行環境をお手軽に構築してみたというだけです。
先にも書きましたが、まだまだJuliaの嬉しさがわかっていないので、今後触ってみようかなと思います。

MCMC(Gibbs Sampling, Metropolis法)を実装して遊んでみることが目下の目標。