HOME/ AINOW編集部 /RPAを実際に使ってみた!
2019.01.25

RPAを実際に使ってみた!

最終更新日:

2018年は有効求人倍率が1を超える状況が続き、賃金の高騰が話題になりました。と同時に、業務効率化の一つの手法としてRPAが注目され、上場したRPA関連企業の初値が公募価格の4倍を上回るなどして、話題になっています。

それに加えて、NTT東日本はイチロー選手を起用してRPAのプロモーションを行っているなど、「RPA」という言葉が多くの方の目に触れられるようになってきました。

しかし、インターネット上ではRPAに関するさまざまな記事がありますが、「画像つきで使用方法を解説している記事」は、それほど多くありません。

ということで、この記事では実際にRPAを活用して、その利用方法を紹介してみようと思います。今回は、RPAツールの中でもクラウド上でSaaSとして使える「RoboticCrowd」を、実際に使ってみました。

画面の見やすさ、わかりやすさはもちろん、ドラックアンドドロップで直感的かつ気軽に使える操作性が魅力のツールです。

今回は「定期代を検索し、セルに書き込む」ような「任意駆動の自動ロボット」を作っていこうと思います。

まず最初に、今回の処理の大まかな流れを目次で示しておきます。

RPAをうまく活用すれば、これら一連の面倒な手作業を自動化できるわけです。
定形作業から解放し、食べて寝て遊ぶ時間を増やしてくれるわけです。

目次

1. ログイン等を行い、ロボットの作成準備をする

1-1. ログインする

まずはログインします。

1-2.プロジェクトの作成

部署名など、利用者や用途別で管理することが可能です。

今回は既存のプロジェクトに入ります。

1-3.ワークフローの作成

プロジェクトに入った後、既にワークフロー(各作業ロボットのこと。定期代計算や株価取得などの作業別)がある場合は、以下の画像のように表示されます。

今回は新たにプロジェクトを作成してみましょう。下記がプロジェクト作成画面になります。

作成されたワークフローに移動します。

1-4.定期代ロボットを作っていく

さあ、ここから実際にロボットを作っていきます!
こちらが白紙状態のワークフローです。

2 使用するExcelファイルの準備・設定をする

2-1. 表計算に用いるシートやブックを利用可能にする

まずは定期代の検索に必要な「駅名」「定期代記載欄」が入力されたExcelを読み込む必要があります。

なお、この例ではExcelを使用していますが、もちろんGoogleSpreadSheetでも行うことが可能です。

※※こちらの画像が今回使用するExcelのテストデータです。

Excelの場合は、そもそものブックがローカルストレージ(パソコンの中のドキュメントフォルダ等)にあるため、RoboticCrowd上で利用できるようにしなければなりません。

2-2 ブックを選択し、使用するシート名を指定する

左のメニューのExcelという欄に「ワークシートを選択」という項目があるので、それをドラックアンドドロップでワークフロー中央に持ってきます。

その後

直上の画像のようにします。どこが変わったのでしょうか?

この画像の「ワークシートを選択」欄の右のほうを見ると「File get_file_1 x(閉じるボタン)」という表示があるのをが確認できますか?

RoboticCrowdの場合、先ほどの画像の同じ位置にあったハンバーガーメニューをクリックしていくと、合計3クリックで使用する出力を選択できます。この「使用する出力」とは、先ほどの画像でいうファイルを取得とワークシートを選択の間にある「File get_file_1」に相当します。

3. 使用するExcelファイルの中から、駅名や行数の情報を取得する

3-1.行数の情報を取得する

なぜ行数を取得する必要があるのでしょうか?後で使うからです。よって後から説明します。

まずは「行情報を取得する」から始まります。

これはつまり、「使用するExcelのSheetの行数」を取り出しています。

そしてその行数を、後で使いやすくするために「rowNumという変数(中身は数字)」として保存します。(画像内の「行数をカウント」)

このrowNumの中身は、今回は「6」となります。keyの欄には、必ず「rows」と入力しましょう。こうしなければ行数が取得されません。

3-2.駅名を読み込む

次に、駅名を読み込みます。
※画像内「範囲から駅名を読み込む」は、RoboticCrowd内では「範囲を読み込む」に相当します。(処理の名前を変更しています。)

この「範囲」から駅名を取得しますが、駅名が書かれているのはB列です。そのため、列の情報のみを取得します。

起点は、最初の駅名が記入してある「B2」です。
終点は、さっき取得した行数の数字、即ち「B6」となりますが、この「6」については既に変数に保存してあります。

よって、範囲欄には

B2:B${rowNum}

と書きます。

行数を変数として扱っているため、終点をいちいち手打ちで「B6」みたいな感じで入力する必要がありません。楽ですね。

RoboticCrowdはこのような具合で変数を組み込める上、使い方によってはJavaSciptのコードを直接書きこむ事も可能な点が大きな魅力です。

3-3. 読み込んだ駅名を変数に保存する

読み込んだ範囲 = 駅名のリスト(配列)を、「stations」という名前の変数として保存しています。
こうしておかないと、今回の肝である「繰り返し処理」を行う事が出来ないため、このような手順を踏んでいます。

こうする事によって、駅名が下記画像のような配列という形で取得されます。

4. 繰り返し処理の下準備となる数字(カウント変数)を指定する

4-1.書き込み始めるセルの行の初期位置を変数として保存しておく

ちょっと何を言っているのかわかりにくいかもしれませんが、これは後半でわかります。

要点は以下です。

・行の初期値を変数に保存 = 中身はエクセルに書き込む際の列の数字になります。

これは先ほどのB${rowNum}と似た立ち位置となります。繰り返し処理の中で、「無くてはならない存在」となるため、覚えておいてください。

5. 繰り返し処理を開始する

いよいよ定期代の取得と、取得した情報の加工、エクセルへの書き込みが始まります。
大まかな流れを再掲します。

6. 出発駅、到着駅などを自動入力させ、検索を行わせる
7. クローリング:検索結果の中から期間別定期代の価格情報を取得させる
8. 手順7で取得した価格情報を、Excelに書き込めるような形に加工する
9. Excelのセルに手順8で加工した情報を実際に書き込む
10. 手順6から手順9を、駅名の個数と同じ回数だけ繰り返した後、ファイルに保存する
11. 10で出来たファイルをダウンロードする

5-1.ロボットにブラウザを開かせ、定期代検索サイトへ移動させる

6から始まる繰り返し処理を開始したいところではありますが、その前に、ロボットにブラウザだけ開かせておきましょう。

これはURLを指定するだけになります。実行時は当然ブラウザ(Chrome)によって指定されたページが開かれています。

5-2.繰り返し処理の開始

まずは画面左から繰り返し処理をドラックアンドドロップでワークフローと中央に追加して、「繰り返すリスト」と「要素を格納する変数名」に適切な値を入力します。

「繰り返すリスト」には、先ほど変数に保存した駅名の配列、即ち「stations」を記号付きで「${stations}」と入力します。「要素を格納する変数名」の中には、駅名が1つ1つ入っています。これを1つ1つ取り出すためには、名前が必要です。

よって、呼び出す時に使う名前を、好きに入力します。ここではstationsの単数形ということで「station」としています。

上記の画像に、「各要素について繰り返す」とありますが、これが繰り返しの組み立てになります。

「各要素について繰り返す」
「繰り返す処理(テキスト入力など)」
「各要素について繰り返す 終わり」

ここでいう「繰り返す処理(テキスト入力など)」の部分に、上で再掲した6~9の処理を追加していく事になります。

5-3. URLへ遷移させる

繰り返しの最初に、指定されたURLに移動しています。この後に検索を行うと、ブラウザは「検索後のURLに遷移」します。

そのため、ここに「URLへ遷移させる」を挟まなければ、検索結果のページから検索画面に戻っていない扱いになるため、エラーになってしまいます。この「URLへ遷移させる」は比較的よく使用される、無くてはならない機能です。

6. 出発駅、到着駅などを自動入力させ、検索を行わせる

6-1. 出発駅、到着駅を自動入力させる

まずは出発駅を検索欄に自動入力させましょう。今回は某交通系サイトを利用させていただきました。

ここの入力欄のCSSを、Chromeの拡張機能であるCopy Css Selectorを用いるなどして取得します。

※ChromeであればF12ボタンを押す等して、検証機能を用いる事によっても取得可能ですが、非常に手間がかかります。

Copy CSS Selectorを利用すれば、入力欄等のWebページ内の要素を右クリックすると「Copy CSS Selector」といった表示されるようになります。それをクリックすると、CSSのコードが取得されます。取得したCSSのセレクタを、画像中にあるCSSセレクタ欄にペーストすればOKです。

6-1-1 出発駅を自動入力

さて、画像中の「出発駅の自動入力」の中の「文字列」に、先ほどExcelから取得した駅情報を入力させましょう。文字列欄には、呼び出すための名前である「station」を、記号付きで入力しましょう。

6-1-2 到着駅の自動入力

これも、文字列欄以外は上記と同じ要領で入力することになります。ただし、この到着駅はオフィス最寄駅として、単純にオフィス最寄駅を手入力しておけばOKです。

6-1-3 検索を実行させる

この時点で、先ほどの画像にあるような出発駅/到着駅欄には駅名が入力されています。あとは検索するだけなので、検索ボタンをクリックさせましょう。

これも先ほどのCopy CSS Selectorと同じ要領で、クリックすべき位置のCSSを取得させます。

7. クローリング:検索結果の中から期間別定期代の価格情報を取得させる

検索が実行されたため、ロボットは上記画像を表示している状態になっています。

ここから、期間別の価格情報を取得していきましょう。

7-1 スクレイピングで価格情報を取得

文字通り、スクレイピングで価格情報を取得しましょう。

ここも、取得したい位置のCSSセレクタのデータを取得し、入力しています。オプションで「文字情報のみ抽出(text_only)」を選択しておきましょう。これをしない場合、改行記号 \n などが混じってしまいます。

8. 7で抽出した価格情報を、Excelに書き込めるような形に加工する

7-1で抽出した価格情報は、「12,435円」といった形で抽出されていますが、これは「円」という文字列を含んでいます。Excelには「円」という文字列は必要ありません。よって、「円」を省く必要があります。

ここから「円」を取るための方法はほかにもありますが、今回はすぐ上にある画像のようなやり方で行います。

8-1 取得した情報を正規表現用に変換

取得した情報を加工するために、正規表現を用います。
正規表現というのは、自然現象を数字と記号で表現する数学のようなものです。

たとえば天気予報士は、「雲の流れ」という自然現象を観測し、その観測結果を数字と記号、即ち数学といった一定の形式で表現しています。(流体力学など)
これと同じように、英語や数字といった、コンピューター上の文字情報という事象を、一定の形式(上の例では数学)で表現しようという試みがありますが、
この一定の形式の事を「正規表現」といいます。

数字のみを抽出する下準備として、抽出した文字情報を正規表現用に変換しています。

8-2 正規表現で検索(数字のみを抽出)

上記8-1で変換された文字情報の中から、正規表現を用いて数字のみを抽出します。

\d{4,}という暗号が書かれていますが、これは「4ケタ以上の数字のみを取得しろ」という命令になっています。
これによって、数字のみが配列形式で取得されます。

正規表現についての詳細は、こちらをご参照いただくのもよろしいかと思われますが
こちらのページで実際に数値を入力するなどして、命令が正しいかどうかを確認することも可能です。

8-3 テキストを作成(書き込み用)

上記8-2によって、数字のみが取得されました。

しかし、上述したように配列形式のままでは、Excelの1つのセルに入力することはできません。
そのため、取得した情報をテキスト形式にする必要があります。
この「テキストを作成」によって、やっとExcelに書き込む準備ができたと言えます。

8-4 期間別の処理を追加

7-1から8-2にかけての処理を、期間別(3ヶ月、6ヵ月の分)に指定します。
要は、7-1で指定するCSSセレクタの内容だけを変えて、7-1から8-2の処理を追加していきます。

9. Excelのセルに手順8で加工した情報を実際に書き込む

9-1 書き込むセルラベルを指定する

これは以前に掲げた今回使っているExcelのシートですがC列に1ヶ月定期代、D列に3ヶ月定期代、E列に4ヶ月定期代を入力する仕様になっています。

そのため、書き込むセルラベルは下記の

のような形で記入する事になります。

ここの「値」ですが、これはハンバーガーメニューから鎖マークを選び、対応するTextデータ、即ち8-3で出てきたデータを入力しましょう。

9-2 行数カウントを+1する

ところで、すぐ上の画像には行数カウントを加算という処理が入っています。

これは、4-1.書き込み始めるセルの行の初期位置を変数として保存しておくで設定した数値の事です。

そもそも、今回のテストで書き込み始める最初の位置はCの2行目になります。この2行目の「2」がrowCountの中身でした。

しかし、このrowCountが2のままでは、延々とC2、D2、E2欄に価格が上書きされてしまいます。ではどうするか?処理が1順する毎に、rowCount値を「+1」すればよいのです。

その場合の書き方として${Number(rowCount) + 1}という書き方が挙げられます。具体的には、すぐ上の画像のようにすることによって、行数カウントが+1されます。

そして次の繰り返しから、セルに書き込む処理の際は自動でC3,D3,E3といった形になっていきます。

10.手順6から手順9を繰り返した後、ファイルに保存する

処理が終わりました!変更を保存しましょう!

このファイル名の場所には、2-2で使用した画像と同じ手順で、File get_file 1 を指定します。

11. 10で出来たファイルをダウンロードする

まずはストレージに移動します(上記画像)

その後、できあがったファイルをダウンロードします

完成

完成しました!Excelファイルはこのようになっているはずです!

全自動です!

さいごに

今回はtutoial社のRoboticCrowdを使用してみました。
ドラッグ&ドロップのみならず、処理の出力も色分けされており、その選択も非常に行いやすいアプリケーションです。

今回は具体的な記述のためにかなり冗長になってしまいましたが、

このような

冗長で
面倒で
時間のかかる

作業を、RPAは自動でやってくれます!
これら一連の流れによって獲得された時間をどう使うか?といったことを考えてみるのも、日々の生活を彩る一つの要素になるかもしれません。

AINOWでは、RPAに関連するサービスや代理店、導入支援サービスをまとめたRPAカオスマップを公開しています。

合わせてぜひご覧ください。

日本最大掲載数!102件のRPAサービスをまとめた「RPAカオスマップ 2018」を公開!

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する

あなたにおすすめの記事

生成AIで“ウラから”イノベーションを|学生起業家が描く、AIを活用した未来

特許技術×AIでFAQを次のステージへ|Helpfeel

GPUの革新からAI時代の主役へ|NVIDIA

あなたにおすすめの記事

生成AIで“ウラから”イノベーションを|学生起業家が描く、AIを活用した未来

特許技術×AIでFAQを次のステージへ|Helpfeel

GPUの革新からAI時代の主役へ|NVIDIA