Hatena::ブログ(Diary)

日々、とんは語る。

この日記のはてなブックマーク数 はてなスターカウンター Peace この日記をあなたのはてなアンテナに追加する。 rss
お問い合わせ先 mailto

2018-06-15 梅雨の日。

Puppeteerを使った保育園システムとSlackの連携。Add Star

11:30 |

20180615031039

先日、amachangがブログを再開したということで、僕も再開しようかなと思いネタを考えていたのですが、まずは軽いジャブ程度に最近作った便利ツールを紹介してみたいと思います

年末に生まれた我が子ですが、お陰様で無事にすくすく育っており、4月から0歳児で保育園に通っています

その保育園は、ポピンズ経営しているのですが、保護者保育園との連絡手段として、会員マイページが用意されており、ログインして連絡事項を確認できるようになっています

ポピンズメモリー

いつでもどこでも確認できますし、紙や口頭で連絡するよりもミスもなくなりそうで、とても良い仕組みなのですが、セッション有効期限がなかなか厳しいため、基本的毎日ログインしないと確認できないようになっています

そこで、情報を取得してSlackに定期的にポストするツールが欲しいと思って作成したのが「ポピンズメモリーレポーター」です。

ポピンズメモリーレポーター

ポピンズナーサリースクールの会員マイページ https://ps.poppins.co.jp/nursery/login/index にある連絡ページ「ポピンズメモリー」の情報を取得してSlackに通知を行うツールです。

tomoya/poppins-memory-reporter: ポピンズメモリーを取得して Slack に通知するツール

READMEには、上記説明を書いていますが、こちらはPuppeteerを使ったNodeアプリです。いわゆるスクレイピングによってポピンズメモリーという連絡ページから情報を取得して、Slackへと通知するわけですが、これをPuppeteerを使って実装してます

PuppeteerはヘッドレスChromeコマンドラインからChrome操作する仕組み)をNodeから扱うためのライブラリです。この手のライブラリは他にもあるのですが、最近はPuppeteerが最も有力な候補になってきています

ヘッドレスChromeリアルブラウザであるため、ブラウザ操作で行えることは基本的にすべて行えます。これをPuppeteerを通じて利用するということは、Nodeモジュール活用して、さまざまなWebサービスとも連携させることが可能だということになります

ポピンズメモリーレポーターの中でPuppeteerが行っていることは、

  1. ブラウザを開いてログイン
  2. リンククリックしてページを移動
  3. 必要情報コピーして取得

という感じであり、かつてのスクレイピングに比べると、とても原始的な内容となっています。ですが、原始的であるが故にページの解析はほとんど不要で、とても簡単実装することができました。

ポピンズメモリーレポーター

情報を取得した後は、Slack公式Node Slack SDKを利用して、上図のようにSlackポストするだけになります

Puppeteerの可能性。

実際に使ってみるとよく分かりますが、ヘッドレスChromeとPuppeteerの組み合わせはとにかく楽です。

その上、Dockerと組み合わせることで、ポータブルなパッケージにすることも可能であるため、ちょっとした業務ツール作成などにもぴったりだと思います。実際にこの後、業務デバイスをエミュレートしてスクリーンショットを撮るツール作成したりと大変活躍しています

このあたりに関しては、色々と知見が溜ってきているのでどこかで纏めて公開できればと思っています

それではまた。

トラックバック - http://d.hatena.ne.jp/tomoya/20180615/1529029834
<< 2018/06 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30