概要

    • 良い良いと噂のJuliaの実行環境を作ってみました

 

    • 最速で動作環境を作るということを目標に、Dockerを使って超お手軽に実行環境を構築します(最適化とかはまだ何も考えてない)

 

    まだ環境を作っただけでJuliaの嬉しさは何も理解できてないので、今後使ってみる

動作環境

    • macOS Big Sur (11.4)

 

    • Mac mini (M1, 2020)

 

    • チップ Apple M1

 

    • Docker

Engine 20.10.6
Compose 1.29.1

IDE

Visual Studio Code + Remote Development

Jupyter lab

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法)を実装して遊んでみることが目下の目標。

广告
将在 10 秒后关闭
bannerAds