LoginSignup
5
7

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-07-21

概要

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

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7