ADVENTAR の Bot を作る
with Haskell
ひげ
$whoami
名古屋の学生
研究テーマ: 型システムについて
好きなジャンル: 言語処理系
好きな言語: Haskell, 次点で Ruby
その他:
Haskell でバイトしてる
NGK2017b で Haskell × Elm × Kotlin でアプ
リを作った話について LT する予定
本題
ADVENTAR というサイトを知ってますか?
アドベントカレンダーの作成や登録を管理してくれる
〇iita と違って何でもありって感じ(雑)
悲しいことに...
〇iita と違い RSS のような機能が ADVENTAR には無い
なので去年は作った
Google App Script でスクレイピング + Slack に通知
(貧者なので GAS を使った)
しかし
今年の ADVENTAR のソースを見てみると...
今年の ADVENTAR のソースを見てみると...
React...だと...
静的な DOM が生成されないので 
スクレイピングできない...
そこで Headless Browser
(e.g. Selenium, PhantomJS)
この時点で GAS はもう...
困った...
CircleCI 2.0 で cron 追加されたし
Docker イメージをプルすれば...
任意のプログラムを定期実行できる!
プログラムの流れ
コレを Haskell でやる!(なぜ)
各種 Haskell ライブラリ
(ほぼおまけ)
webdriver: Headless Browser を操作できる
scalpel: 関数型パーサーっぽいスクレイパー
aeson: JSON デコーダー・エンコーダー
slack-api: Slack API を簡単に扱える
Headless Browser は Java のスタンドアローンな
selenium-serverを使った
CircleCI のときは docker-compose でコレを使った
cron で回す
いい感じ
いやいや...
Bot ならこっちのメッセージからも
動けや(?)
という強い圧力を感じた(適当)
GAS から GitHub に commit すれば
いいんじゃね?
いい感じ
まとめ
まとめ
React系の Webページには Headless Browser
CircleCI + Docker で任意のプログラムを実行可
GAS から commit で好きなタイミングでも実行可
ただし無料枠は 1500 build min/month
Haskell でも作れるよ!
おしまい
ちなみに
細かい話は で記事にする予定

ADVENTAR の Bot を作る with Haskell