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]
なんかを表示できる。
gistでプレビュー
ipynbファイルはGitHubでプレビューできる。
gistも。
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 にアクセス。
まとめ
つかってみると人気があるのはわかる気がする。
エディター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/*