Upload
nobutada-matsubara
View
110
Download
4
Embed Size (px)
Citation preview
ADVENTAR の Bot を作るwith Haskell
ひげ
$whoami名古屋の学生
研究テーマ: 型システムについて
好きなジャンル: 言語処理系
好きな言語: Haskell, 次点で Ruby
その他:
Haskell でバイトしてる
NGK2017b で Haskell × Elm × Kotlin でアプリを作った話について LT する予定
本題
悲しいことに...
〇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 でも作れるよ!
おしまい