Haskell
Jupyter

iHaskellを試してみる

More than 1 year has passed since last update.


iHaskellとは

iHaskell は Jupyter用のカーネルの一つです。

Jupyter NotebookでHaskellが利用できます。



Jupyterとは

Juyter NotebookはWebアプリケーションで共有するためのの文書作成アプリケーション

文書内には実行できるコードを書いて、数式を表示したり、可視化したりとか、対話可能なウィジェットを表示することも可能。



iPythonとは

以前はiPythonというプロジェクトだったようですが、Python限らずに使えるようになってJupyterになったみたいです。(知らんけど)

iPythonはPryのPython版のイメージ。(個人のイメージ)



Jupyterの普及

プログラマー以外が使うツールとして普及してきているイメージがあります。(要出典)

特にR言語を活用していた領域にJupyter Notebookが侵食してきているようにみえてます。(感想)



Jupyterを試す

Juypter試すだけなら公式のお試しページで試すことができます。

もちろん(?) iHaskell もつかえます



使える言語


  • Scala (Sparkとの統合がある)

  • Bash (お、おう)

  • Haskell

  • Julia (科学技術で人気でてきている)

  • Python 2 (扱いやすい汎用言語)

  • Python 3 (扱いやすい汎用言語)

  • R (もともとデータサイエンスで人気ある)

  • Ruby (扱いやすい汎用言語の対抗馬)

Jupyterの機能に対して需要がある言語が用意されているのが伺えます



iHaskellの利用



iHaskellのインストール

dockerを使うと簡単に試せます。

docker run -it -v "${PWD}:/notebooks" -p "8081:8888" gibiansky/ihaskell:latest

http://localhost:8081 にアクセス。



基本的な使い方

hでヘルプが表示される。

viっぽいキーバインド

–--


デモ

(あとでgistのリンクがあるのでdemoの内容はそっちで)



ihaskellで表示できるデータ型

型クラスIHaskellDisplayのインスタンスであれば表示可能。

デフォルトで IO a Display DisplayData [a]なんかを表示できる。

https://github.com/gibiansky/IHaskell/tree/master/ihaskell-display



gistでプレビュー

ipynbファイルはGitHubでプレビューできる。

gistも。

https://gist.github.com/eiel/7de62ec8f36d1667a79968c30629fc40



Google Claud Datalab でプレビュー

DatalabはJupyterをベースにBigQueryなどGoogle Cloud Platform(以下GCP)と連携できるようにカスタマイズされたもの。

表示もカスタマイズされていて、素のJupyterより綺麗。

Google Chatring Apisにアクセスするchartコマンドが用意されている。

stack driverにアクセスしてインスタンスのレポートをだしたりもできる。

iHaskellを動かすことはできないけどプレビューはできる。



Google Cloud Datalabのローカル起動

GCPのプロジェクトIDが必要。

docker run -it -p "127.0.0.1:8081:8080" -v "${HOME}:/content" \

-e "PROJECT_ID=${PROJECT_ID}" \
gcr.io/cloud-datalab/datalab:local

http://localhost:8081 にアクセス。


Kobito.w6Ur0J.png



まとめ

つかってみると人気があるのはわかる気がする。

エディターwith対話環境という感じ。

ページャーをOFFにしたときの表示がバグってるのがつらい。

GHC 8系はPull Requestはきてるけどまだ未対応


リソース


Makefile

docker起動するのにつかった

IMAGE := eiel/ihaskell

PORT := 80
VOLUME := /home/docker-user
PROJECT_ID := <project-id>

.PHONY: ihaskell
ihaskell:
docker run -it -v $(VOLUME):/notebooks -p $(PORT):8888 $(IMAGE)

.PHONY: datalab
datalab:
docker run -it -p $(PORT):8080 -v "$(VOLUME):/content" \
-e "PROJECT_ID=$(PROJECT_ID)" \
gcr.io/cloud-datalab/datalab:local


Dockerfile

R言語いれただけ eiel/ihaskell にpush済み

FROM gibiansky/ihaskell:latest

RUN apt-get update && \
apt-get install -y \
r-base
&& rm -rf /var/lib/apt/lists/*