Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/miolab/jupyterlab_elixir

JupyterLab + Poetry + Docker環境で、Elixirを実行する(「fukuoka.ex Elixir/Phoenix Advent Calendar 2020」投稿記事サポート用リポジトリ)
https://github.com/miolab/jupyterlab_elixir

circleci docker elixir jupyterlab poetry python

Last synced: 8 days ago
JSON representation

JupyterLab + Poetry + Docker環境で、Elixirを実行する(「fukuoka.ex Elixir/Phoenix Advent Calendar 2020」投稿記事サポート用リポジトリ)

Awesome Lists containing this project

README

        

# JupyterLab Elixir

[![miolab](https://circleci.com/gh/miolab/jupyterlab_elixir.svg?style=svg)](https://github.com/miolab/jupyterlab_elixir)

「fukuoka.ex Elixir/Phoenix Advent Calendar 2020」投稿記事のサポート用リポジトリ

- [JupyterLab + Poetry + Docker環境で、Elixirを実行する](https://qiita.com/im_miolab/items/01ba3987330a587bd757)

## 概要

__JupyterLab__ で、Python __以外__ の開発言語も実行できるようにする。

- 実行環境の構築は __Docker__ で行い、Pythonバージョン及びライブラリ管理は __Poetry__ で行います。
- Poetryでは仮想環境の構築はスキップします。(Dockerコンテナの構築やってるため)
- Elixirの対話型実行環境 __「IEx」__ をJupyterLabで実行します。
- JupyterカーネルのIElixirを使います。

### モチベーション

- JupyterLabではコマンドの実行結果をそのままファイル形式で保存できます。
- そのため、たとえばElixirならIEx実行コマンドのコード管理にも役立てられる、ということがJupyterLabを実行するメリットのひとつです。
- また、`Boyle` により、すぐにElixirライブラリの試用が可能となります。
(mixファイルの準備とかimport hogeとかしなくてもいい)

### 実行環境

- MacOS
- Docker (docker-compose)

## 環境構築

- 任意のプロジェクト名でディレクトリを作ります
- ディレクトリ直下に、以下の3ファイルを用意します

```terminal
.
├── Dockerfile
├── docker-compose.yml
└── pyproject.toml
```

## 実行

```terminal
$ cd hogehoge(ファイルを用意したディレクトリ)

$ docker-compose build

$ docker-compose up
```

- コンテナが起動したら、ブラウザで [localhost:8890](http://localhost:8890) を確認します。

jupyter_ex1

- Elixirカーネルを追加することができました。

jupyter_ex2

- Elixirのコマンド実行もできています。

- JupyterLabでの実行結果をファイルで保存できるので便利。

### ElixirのライブラリをJupyterLabで使う

- `Boyle.install({:math, "~> 0.5.0"})` のようにコードを書くことで、ライブラリの使用が可能となります。

math_ex

- [math (Hex)](https://hex.pm/packages/math)

---

### 参考

- GitHub

- [Jupyter kernels](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels)

- [IElixir](https://github.com/pprzetacznik/IElixir)

- [example Using](https://github.com/pprzetacznik/IElixir/blob/master/resources/example.ipynb)

- [ZeroMQ header files missing](https://github.com/pprzetacznik/IElixir#zeromq-header-files-missing)

```terminal
===> /IElixir/deps/erlzmq/c_src/erlzmq_nif.c:24:10: fatal error: zmq.h: No such file or directory
#include "zmq.h"
^~~~~~~
compilation terminated.
```

- [Boyle usage](https://github.com/pprzetacznik/IElixir/blob/master/resources/boyle%20example.ipynb)

- https://github.com/pprzetacznik/IElixir/blob/master/resources/boyle%20example%20-%20matrex%20installation%20and%20usage.ipynb

- https://github.com/pprzetacznik/IElixir/blob/master/resources/inlineplot%20example%20-%20gnuplot.ipynb

- Docker

- [Python](https://hub.docker.com/_/python)