Slide 1

Slide 1 text

京急とNode-REDで始める 俺得RPA ポキオ

Slide 2

Slide 2 text

ポキオ? ● @pokiiio ● R&D園児にゃー ● 2児の父 ● https://pokiiio.github.io/ ● https://relativelayout.hatenablog.com

Slide 3

Slide 3 text

京急が好き 京急はネ申 (個人的な見解です) 京急ファミリー鉄道フェスタ 2019に行ってきまし た

Slide 4

Slide 4 text

はい

Slide 5

Slide 5 text

RPA

Slide 6

Slide 6 text

R・P・A! R・P・A! ● ロボティック・プロセス・オートメーション ○ 認知技術(ルールエンジン・機械学習・人工知能等)を活用した、主にホワイトカラー業務 の効率化・自動化の取組みである。人間の補完として業務を遂行できることから、仮想知的 労働者とも言われている。また、デスクトップ作業のみに絞ったものをロボティック・デス クトップ・オートメーションと呼び、 RPAと区別することもある。 ○ RPAが目指すのは伝統的な IT部門スタッフ向けのプログラミングベースの自動化ではなく、 ITナレッジの少ない業務部門スタッフ向けの直観的な操作で構築可能な自動化である。 ○ https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3 %83%83%E3%82%AF%E3%83%BB%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%83%BB %E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83 %B3

Slide 7

Slide 7 text

雑な理解 ● RPA = (なるべく※)ノンコーティングで出来るような自動化 ※ちょっとだけコーディングしちゃいました。ちょっとだけ・・・。

Slide 8

Slide 8 text

ここでNode-RED

Slide 9

Slide 9 text

Node-REDとは? ● https://nodered.jp/ ● ノードとノードを繋ぐだけで処理やフローを設計・実行できる ● ノードにはいろいろな種類があり様々な処理が可能 ● Node.js上で動作 / Raspberry Piにプリイン / enebularなどを利用

Slide 10

Slide 10 text

こんな感じのUI

Slide 11

Slide 11 text

他サービスとの連携が簡単に可能

Slide 12

Slide 12 text

ノードライブラリで広がる可能性 https://flows.nodered.org/

Slide 13

Slide 13 text

ノンコーティングで プログラミングできるNode-REDを使って 身近なRPAができないかやってみた

Slide 14

Slide 14 text

まずはNode-REDに京急ノードが なかったので作ってみた

Slide 15

Slide 15 text

https://flows.nodered.org/node/node-red-contrib-keikyu

Slide 16

Slide 16 text

出来ること ● 京急の運行情報ページから現在の運行情報をパース

Slide 17

Slide 17 text

ちょっぱやで京急の運行情報を取得可能

Slide 18

Slide 18 text

応用例:運行情報だけを表示するページ output先をLINEとかSlackに変更可能 ちょっとだけ夢が広がります

Slide 19

Slide 19 text

https://enebular.com/discover/flow/a3e88d36-f227-4aea-be21-339b5463154f enebularでフローを公開中です

Slide 20

Slide 20 text

● 汎用性なくね? ● JRは見られないの? ● Webページ見ればいいじゃん?

Slide 21

Slide 21 text

任意のWebページの スクリーンショットを撮影する ノードを作ってみた

Slide 22

Slide 22 text

https://flows.nodered.org/node/node-red-contrib-web-page-screenshot

Slide 23

Slide 23 text

出来ること ● 予め設定したWebページのスクリーンショットを撮影 ● Base64でエンコードしたStringを返す ● ページ全体のスクリーンショット以外にも IDやClassを指定することで一部分だけ撮影することも可能

Slide 24

Slide 24 text

応用例: 3路線の運行情報ページのスクリーンショットを 撮影しRaspberry Pi上に一括表示 京急線運行情報は京急HPから その他の路線はYahoo!から取得 ChromiumのKioskモードで表示

Slide 25

Slide 25 text

あまり大きな声では言えませんが ● 会社とかでも使えます! ○ 社内イントラ上のページを定期的に撮影したり・・・ ○ 勤怠のページを(ry ○ 悪いことに使っちゃだめですよ!

Slide 26

Slide 26 text

サマリ ● Node-REDでなるべくコーディングしないで、俺得RPAをやってみた ● さまざまなノードを使いこなせばいろいろ自動化できそう ● 任意のWebページの特定の部分だけのスクリーンショットが撮れると いろいろやれることは多そう ● 今回は出力先がWebページだけですが、他の出力先も設定可能 ● まずは身近なところから、Let's RPA!

Slide 27

Slide 27 text

Appendix 1:Puppeteerを使っています ● スクショ撮影にはNode.jsのモジュールであるPuppeteerを使用 ● ChromiumのHeadlessモードをいい感じにWrap ● どちらかというと、UIテストとかそっちにも使える

Slide 28

Slide 28 text

Appendix 2:Puppeteerは曲者 ● HeadlessなChromiumを使うために、PuppeteerのDependenciesに Chromiumが含まれる ● このChromiumはx86用で、Raspberry PiなどのARMアーキでは使えない ● 別途ARM向けでHeadlessモードが利用可能なChromiumをDL・Installし ておく必要がある ● 最新のRaspbianにはいい感じのChromiumが含まれている

Slide 29

Slide 29 text

Appendix 3:PuppeteerはHerokuで使うのは面倒 ● ARMじゃないし、Herokuならバリバリ使えるかなと思ってた ● DefaultのNode環境だと依存関係を満足できずPuppeteerは使えない ● Puppeteer向けに作られたBuild PackをHerokuに焼べる必要がある

Slide 30

Slide 30 text

Thank you!