Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
ADVENTAR の Bot を作る
with Haskell
ひげ
$whoami
名古屋の学生
研究テーマ: 型システムについて
好きなジャンル: 言語処理系
好きな言語: Haskell, 次点で Ruby
その他:
Haskell でバイトしてる
NGK2017b で Haskell × Elm × Ko...
本題
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: ...
cron で回す
いい感じ
いやいや...
Bot ならこっちのメッセージからも
動けや(?)
という強い圧力を感じた(適当)
GAS から GitHub に commit すれば
いいんじゃね?
いい感じ
まとめ
まとめ
React系の Webページには Headless Browser
CircleCI + Docker で任意のプログラムを実行可
GAS から commit で好きなタイミングでも実行可
ただし無料枠は 1500 build min/...
おしまい
ちなみに
細かい話は で記事にする予定
ADVENTAR の Bot を作る with Haskell
Prochain SlideShare
Chargement dans…5
×

ADVENTAR の Bot を作る with Haskell

94 vues

Publié le

ADVENTAR と言うサイトのアドベントカレンダーのページをスクレイピングして更新を通知する Slack Bot を作った with Haskell の話
repository: https://github.com/IGGG/adventar-bot

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

ADVENTAR の Bot を作る with Haskell

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

×