morishitaです。 今回は小ネタを1つ。
VSCode の Jupyter 拡張は手軽に Jupyter Notebook が使えて便利です。
Python さえインストールされていれば、必要なライブラリがインストールされていなくても拡張子 .ipynb
の Notebook ファイルを開いたときにダイアログが表示され、指示に従うとインストールしてくれます。
その後は Notebook ファイル内でコードを実行することが可能になります。
ローカルで Jupyter サーバを動かすよりも手軽に Notebook ファイルを利用できます。
Jupyter Notebook で Ruby を使いたい
Juypter Notebook は Juypter kernel と呼ばれるライブラリが必要で、 Python を利用するときには
ipython kernel を利用します。
Juypter kernel は各種言語用のものが実装されており、次のページに一覧があります。
実に様々な言語向けの kernel がありますが、アクトインディでは主に Ruby を用いて開発しているので、 Ruby を使えるようにしたいと思いました。
前述のリストで調べると IRuby という kernel があるようです。
IRuby の README をざっと見ると Docker イメージがあるようなので、これを使ってみようと思います。
VSCode + Remote - Containers で IRuby 環境を作る
VSCode には Docker コンテナ環境をあたかもローカル環境のように利用できる Remote - Containers 拡張があります。 これを使って、 IRuby を使える Jupyter 環境を作ります。
必要なソフトウェアは次の通りです。
- VSCode
- Docker Desktop 等の Docker コンテナ実行環境
devcontainer.json を作る
適当なディレクトリ(ここでは仮に jupyter-ruby という名前とします)を作って、そこを VSCode で開きます。
その中に .devcontainer というディレクトリを作り、更にその中に devcontainer.json というファイルを作り、次の内容を書き込み保存します。
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.205.2/containers/ruby { "name": "rubydata/datascience", "image": "rubydata/datascience-notebook:latest", // Set *default* container specific settings.json values on container create. "settings": {}, // Add the IDs of extensions you want installed when the container is created. "extensions": [ "rebornix.Ruby", "ms-python.python", "ms-python.vscode-pylance", "ms-toolsai.jupyter", "ms-toolsai.jupyter-keymap", "julialang.language", "Ikuyadeu.r" ], "mounts": [ "type=bind,src=${localWorkspaceFolder}/notebooks,dst=/notebooks" ], "workspaceFolder": "/notebooks", "initializeCommand": "mkdir -p notebooks" }
次のような構成になったかと思います。
jupyter-ruby └ .devcontainer └ devcontainer.json
この.devcontainer/devcontainer.json ファイルは Remote - Containers の設定ファイルで接続するコンテナのイメージやコンテナ側にインストールする VSCode の拡張などを設定します。
ここまで準備できたら、VSCode の左下の赤い部分をクリックします。
コマンドパレットが開き、いくつかメニューが表示されると思います。
その中の Reopen in Container を選択します。
すると、必要なイメージが pull され、コンテナが起動し、それに接続した状態で VSCode が開き直します。
もしかすると右下に Pylance をインストールしろとかダイアログが表示されるかもしれません。素直に指示に従ってください。
これで準備完了です。
もし、コンテナでなくローカルファイルシステムで VSCode を開き直したい場合には再び、左下の赤い角をクリックして、Reopen Folder Locally を選択します。
Ruby の Notebook を作ってみる
試しに sample.ipynb というファイルを作ってみましょう。
右上の方に「Python 3.x.x 64-bit」というような表示があるのでクリックするとコマンドパレットが表示されます。その中から Ruby を選択します。
あとはコードブロックに Ruby のコードを書いて実行ボタンをクリックすると実行結果が表示されます。
pandas も使える
利用したイメージの Dockerfileを見ると、Pandas の Ruby ラッパーなどもインストールされており、利用できるようです。
他の言語も使える。
利用しているイメージでは Ruby の他に Python ももちろん使えますし、 Julia や R のカーネルもインストールされているようなのでこれらも利用できます。
まとめ
VSCode の Jupyter 拡張と Remote - Container 拡張を利用して、Ruby が利用できる Jupyter 環境の作り方について紹介しました。
本気でデータを集計したりするにはライブラリが揃っているし、情報量も多いので Python を使うほうがいいと思います。Pandas が使えると言っても所詮はラッパーで中で Python 使っているわけですし。
よく開発中にこのメソッドってどんな動きだったっけ ? と調べる場合に irb
などで実際に実行してみたりすると思います。そんなとき代わりに jupyter を使うと、実行結果が保存できて便利かなと思います。
最後に
アクトインディではエンジニアを募集しています。