はじめに
最近、科学技術計算などで注目を集めているプログラミング言語としてJuliaがあります。
JuliaはPythonのように書きやすく、Cのような実行速度を持つ言語としてデザインされています。
Pythonに慣れ親しんだ方であれば、ほとんど学習コストも必要なく習得することが可能です。
今回は学習するための環境をdockerを用いて作成しました。
julia+Pythonの環境をdockerで作るとなると、jupyter/datascience-notebook
が一般的です。
もちろんこれでもよいのですが、pyenvによるPythonのバージョン管理とPoetryによるライブラリ管理を行いたかったので自分で用意しました。
特にこだわりがなければ上記のイメージをpullしてくるのが最速です。
中身
用意したdockerfileは次の通りです。
juliaのイメージをもとにpyenvをinstallしました。poetryは別枠でinstallしています。
FROM julia:1.8.5
# installするpythonのバージョンを指定
ARG PYTHON_VERSION="3.9.16"
ENV TZ=Asia/Tokyo
RUN apt-get update -y \
&& apt-get install -y \
make \
build-essential \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
wget \
curl \
llvm \
libncurses5-dev \
libncursesw5-dev \
xz-utils \
tk-dev \
libffi-dev \
liblzma-dev \
git \
vim
# pyenvのinstall
ENV HOME /root
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/bin:$PATH
RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc && \
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc && \
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
RUN eval "$(pyenv init --path)"
# pyenvによってPythonをinstallし、globalで認識するように設定
RUN pyenv install $PYTHON_VERSION && \
pyenv global $PYTHON_VERSION
筆者は環境構築をvscodeのdevcontainerを通して行うので、poetryのinstall用にshも用意しました。
#!/bin/bash
# poetryのinstall
pip install --upgrade pip
pip install poetry
# poetryによるライブラリのinstall
poetry config virtualenvs.create false
poetry install --no-root
devcontainer用の設定ファイルは次の通りです。
{
"name": "dev-container2",
"dockerFile": "../dockerfile",
"postCreateCommand": "/bin/bash ./postCreateCommand.sh",
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"ms-python.black-formatter",
"njpwerner.autodocstring",
"mosapride.zenkaku",
"oderwat.indent-rainbow",
"christian-kohler.path-intellisense",
"0h7z.vscode-julia-format",
"julialang.language-julia"
],
}
さいごに
最近マイブームのdevcontainerを使ってJulia+Pythonの環境構築を行いました。
jupyter/datascience-notebook
はconodaベースなのが気に食わなかったので使いませんでしたが、こだわりがなければそっちでよいかと思います。
PythonとJuliaを組み合わせることで、大量のデータを効率よく処理できるようになると期待されるので筆者も勉強しています。
皆さんもこの機会にJuliaの世界に入門されてはいかがでしょうか。
Pythonにはない高速の世界があなたを待っています。