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