
「NAVITIME Location Cloud」のブラウザRPA環境構築で工夫したポイント
こんにちはskです。
ナビタイムジャパンで「NAVITIME Location Cloud」の開発を担当しています。
NAVITIME Location Cloudについて
「NAVITIME Location Cloud」は多店舗データの一元管理を軸に、GoogleビジネスプロフィールやYahoo!プレイス、SNSや自社メディアもまとめて管理!情報発信を効率化してローカル検索を最適化する、多店舗向けマーケティングツールです。
ブラウザRPAとは?
RPAは「Robotic Process Automation」の略で、定型化されたブラウザ操作やWebデータの収集、自動テストなど、膨大なWebサイトの運用作業を自動化することが可能です。
当社の「NAVITIME Location Cloud」でもWebシステムのデータ連携やデータ収集、自動テストで利用しています。

今回はブラウザRPAの仕組みを構築した際に工夫したポイントをご紹介します。
構成
当社では、Selenium + chromedriver + pythonを利用したRPAの仕組みを採用しています。
もしシンプルに開発を進めた場合には場合には以下のようになります。

この例ではブラウザにおける操作を一つずつコード化しています。
「文字入力のelementを取得。キーボード入力し、エンターキーを押す。文字入力フォームをクリアする」というように柔軟にブラウザ操作することが可能です。
しかし、もし様々なデータ連携・テストをする際にはその分だけ実装しなければなりません。
連携先・テスト環境を増やしたいといった要望に対処するためには、その分開発コストがかかります。
設定ファイル(yaml)化
そこで、当社ブラウザRPAでは、yamlファイルでブラウザ操作ができる仕組みを構築しました。

主にxpathを利用して該当のボタンをクリックしたり、入力フォームに対して指定の文字列を入力するなど柔軟なブラウザ操作が可能です。具体的なブラウザ操作:Actionは一連の操作:Flowに内包される形になっており、ブラウザ操作の流れが設定ファイルを見てわかりやすいような構造を意識しています。
実行データ / RPA設定切り分け
RPA設定内で以下のように、変数指定が可能です。

画像のようにデータファイルとブラウザ操作ファイルを切り分けることによって、「どのようなデータでブラウザ操作するか」「連携データや、操作の柔軟な拡張」も実現できます。
ログ出力の工夫
ブラウザRPAを開発した経験がある方は以下のようなご経験はありませんか?
・なぜかクリック操作が反応しない。なぜか再実行したら動く。
・headlessモードで実行する場合、「今どのような操作が行われているか」わからない。
開発環境では、実行ログの出力にも力を入れています。

ブラウザRPAでは、ページの構成が変更されたり、chromedriverのメモリ、通信状況など、様々な要因で失敗する場合があります。
問題を素早くキャッチして、スピーディに改修を行えるように、RPA操作のデバッグや、実行状況の監視が誰でもわかりやすくなるような工夫も行っています。

ブラウザRPA環境構築による成果
一緒にRPAを構築した開発メンバーより以下のフィードバックをもらいました。
良かったこと1
"Web管理ツールの新機能のRPAテストが半日で完成した。"
Webの新機能の開発デグレチェックの効率化・高速化により、開発全体の高速化が期待できます。
「NAVIEIME Location Cloud」では、今後いくつも新機能開発・機能改善を予定しているため、今回のRPA構成は今後もより一層の活躍が見込まれます!
良かったこと2
"ソースコードが不要、yamlのみで新規RPA機能が追加できた。"
現在では、開発者のみがyaml設定を行なっていますが、当社開発者以外でもRPA処理が構築できると考えています。
さらに今後yaml設定のUI化を取り組むことで、当社サービスを利用するお客様自身が、自由にブラウザRPA設定ができるかもしれません。
最後に
今回は、当社で構築したブラウザRPAの仕組みの一部を紹介させていただきました。
近年DXの文脈から効率良いデータ管理、データの正確性などが重要になってきています。
今後も「NAVITIME Location Cloud」ではこのような仕組みを用いて、様々な業種・業態へむけて貢献していきたいと考えています。
最後までお読みいただきありがとうございました。