はじめに
最近気になっている言語Nim。この言語は書きやすさと読みやすさ、実行速度の速さに魅力がある(参考:Nimを知ってほしい2022)。記事で比較対象に挙がっていたPythonにはGoogle Colaboratoryというオンラインサービスが存在しており、自分のパソコン上で環境構築しなくてもプログラミングできるというメリットがある。今回はNimでもGoogle Colaboratoryのように気軽にプログラミングができるオンライン環境を作ってみる。別記事でArraymancer(Nim版のnumpy+α)とNimData(pandas風)等をそれぞれ比較する記事を作成予定。
使用ツール
今回はAmazon SageMaker Studio Labというサービスを使用した。簡単に言うとアカウントを作成しただけで無料で利用できるJupyterLab環境である。アカウントの取得方法は容易なため解説しないが、【Amazon SageMaker Studio Lab】オンラインでPython/機械学習しよう(無料)などを参考にしてみるといい。
また、NimをAmazon SageMaker Studio Labに対応させるためのツールとしてJupyter Nimを使用した。
設定方法
この設定を行うにあたって無料でRustのJupyterLab機械学習環境を作る in AWSが非常に参考になった。
まずランチャーからTerminalを立ち上げ、Nimをインストールする。condaが使えるので、
conda install nim
でインストールするのが楽。次にJupyterNimをインストールする。動かすためには更にZeroMQが必要なようなので、
conda install zeromq
nimble install jupyternim -y
を行う。
参考記事の通り、このままではNimカーネルは認識されていない。jupyter kernelspec list
で表示してみると、
(studiolab) studio-lab-user@default:~$ jupyter kernelspec list
[ListKernelSpecs] WARNING | Config option `kernel_spec_manager_class` not recognized by `ListKernelSpecs`.
Available kernels:
python3 /home/studio-lab-user/.conda/envs/studiolab/share/jupyter/kernels/python3
jupyternimspec /home/studio-lab-user/.local/share/jupyter/kernels/jupyternimspec
(studiolab) studio-lab-user@default:~$
となっていた。参考記事の通りに以下のコマンドを用いて対応する。
conda create -n <my-lab-env>
mkdir -p ~/.conda/envs/<my-lab-env>/share/jupyter/kernels
cp -rf ~/.local/share/jupyter/kernels/jupyternimspec ~/.conda/envs/<my-lab-env>/share/jupyter/kernels
ln -s ~/.conda/envs/studiolab/nim/bin/nim ~/.conda/envs/<my-lab-env>/bin
この作業によってランチャーを開くとNimの環境が追加されるようになる(図は参考記事によりRustも追加されているが、上記のコマンドだけ実行するとNimのみが追加される)。
問題点: 実行に時間が掛かる
Nimのプログラムはコンパイルする必要があるため、コンパイル時間まで含めるとセルの実行には多少時間が掛かってしまう。しかし、普通にファイル作成する形式と比べ、markdown形式によるメモなどが同じファイル上で行えるという良さがあり、需要も多少はあると思う。