IGGG アドベントカレンダー 2016 6日目の記事です.

やっと手に入れた Arukas のアカウント使って簡易的なテストをしました.

タイトル通り,使ったコンテナは IHaskell です.

結論を先に言うと,結局 Arukas ではうまくいってません. しかし,ローカルで試したところうまく行きました. サービスが重いせいかもしれませんが,今後うまくいったら追記します.

Arukas

Arukas とはさくらインターネットさんが運営する Web サービスの一つで,Docker コンテナ専用のホスティングサービスです.

Docker とは任意の用途に特化させた軽量な仮想環境(コンテナ)という感じのモノです. 自分も触り始めたばっかでちっっっとも詳しくないので自分でググって調べてください.

現在 Arukas はまだ試験運用中(β版)であり,そのため3月までコンテナを10個まで無償で作成できます.

10月中旬位に登録ユーザーが予想以上になったため,一時的に新規ユーザー登録を停止していましたが,11月末日に再開始されました.

どうやら,以前にも停止していた(ニュースのリンクを張っていたがリンク切れになった…)みたいなので,新規登録はお早めに.

IHaskell

IHaskell とは IPython で有名な Jupyter Notebook 上で動作する Haskell のことです. IPython は強力でインタラクティブな Python の実行環境です.

コッチの方も自分はちっっっとも詳しくないのでググってみてください.

試しに,公式のデモを使ってみるのも良いのかもしれません try.jupyter.org

アプリケーションを作成

アカウント登録したら,アプリを新しく作成をします.

のように設定しました. (エンドポイントを指定しない場合ランダムに生成される)

現状,Arukas は Docker Hub に公開されているパブリックなコンテナしか Docker イメージしか使えない点に注意です.

今後,他の方法も可能になるかはわかりません.

なので使い方としては,完成したモノをアップロードするために使うべきなんですかね. テストは別の環境で行って.

あとは,Apps のところの今作ったアプリ名をクリックして,デプロイ (起動) を押し,Endpoint の URL にアクセスすれば良い.

テスト

適当に有名な FizzBuzz プログラムでも実行してみます.

全体のコードはこんな感じ.

import Control.Monad (guard)
import Data.Maybe (fromMaybe)
import Data.Monoid ((<>))

fizzbuzz :: Integer -> String
fizzbuzz = fromMaybe . show <*> 3 ~> "Fizz" <> 5 ~> "Buzz"
  where
    (d ~> s) n = s <$ guard (n `mod` d == 0)

ココより参照した(自分は解説しません).

これを Jupyter に書き加えて実行.

え,エラー?

IPython (2系) の方ではうまくいくのに….

ローカルでやってみた.

うまくいった. なかなか遅いが,一応動く.

Arukas の方はときおりコンテナのデプロイすらうまくいかない(時間がめちゃくちゃかかる)ようになったので,向こうの負荷がひどいのかも.

おしまい

結果,うまくいかなかったという話. カレンダー用にとはいえ,手抜きですいません. 前述したとおり,うまくいったら追記します.

ホントは Arukas を LINE Bot に使おうかと思ったけど,別の案を考えたほうがよさそうだなぁ.