見出し画像

劇的に変わった半年 - RPA・Pythonとの出会い

こんばんは。ペーパードライバー研修で及第点をいただけなかった出戻りガツオです!久々に真面目なノートを書きます!

noteを久しぶりに書こうと思ったきっかけ

年初に自分のキャリアを振り返って、マンネリ化を感じている・・・と呟いてしまった私・・・。会社内の組織変更、人との出会い別れ、仕事内容の変化を通じて、人生の中でも久しぶりの衝撃がありました。

それは

Pythonに挑戦して実運用で使えたこと!!

です。

これは私の人生で「VBAとの出会い」以来の衝撃。自分の人生を大きく変える、いや可能性を広げられるチャンスだと思ったのでその体験を書こうと思いました。

Pythonをやろうと思ったきっかけ

そもそも「なんでPythonをやろうと思ったか」これは社員の離職に伴い一定範囲の業務の担い手がいなくなり、その仕事が私を含めた一部社員に引き継がれることになったことがきっかけです。

その人を仮にAさんとしましょう。
Aさんの仕事は今まで一人で社内の特定の領域の管理を担っており、見積もり依頼から発注、契約、実績の管理まで幅広く担っていらっしゃいました。
タスクの内容は一人でよくやっていらっしゃったな!と思うほどのボリューム。かつ紙媒体の資料をデータにまとめ、実績と照らし合わせ、Webシステムに間違いなく正確に反映するというものです。
そして作業可能時間が指定されていて短期間に多大な負荷がかかるものでした。

要約すると、短い期間で細々したものからデータを正確に反映しないさいよ。大量で大変ですけどね!といったところです。

正直に言ってやりたくない

包み隠さずいうと、単純なデータ入力作業とか絶対にやりたくないと思いました。Googleスプレッドシートからデータを収集してExcelにサマリーを作って、それをわざわざ目で見ながら一つ一つWebシステムに入れていく・・・。

こんな作業を毎月単位で決まった日時にやらされるなんてたまったもんじゃないとババを引いた気持ちになりました。

かと言ってこの仕事を他人に押し付けるのもダサい。全然ハッピーじゃない。なんとかできないものか・・・。そう思ったわけです。

RPAによる問題解決

画像2

データのサマリがExcelでできているのであればそれをわざわざ手入力で埋めていくのはナンセンスです。残念なことにCSV受け入れのようなオプションはこの業務に用意されていなかったため、話題となったPower Automate Desktopにて問題解決にチャレンジしました!

Power Automate DesktopはWinAutomationの後釜であり、自分の知見も生かせる内容・・・いやいや誰でも使えるわかりやすいユーザーフレンドリーなシステムです!

興味のある方は大先生あーちゃんさんのご本をどうぞ!

問題解決の方法としては
1. Excelデータの形式をテーブル形式で整形して読み込み易くし
2. 行ごとのデータに合わせて入力フローを判別し、
3. キーコードから対象のWebページにアクセスし、入力する

このような仕組みを作ることにトライしました。

Excelデータの整形はVBAでもなんでもいいや〜くらいでしたので
問題は「3. キーコードから対象のWebページにアクセスし、入力する」ここです。

Power Automate Desktopで感動したところはWebページのテーブル取得が非常に簡単にできること!Webレコーダーで右クリックで選択すれば一発じゃ〜んっていう素晴らしいお手軽さ。あとはアクセスする方法をどう設定するか、ですよね。

Webページの構成要素は動的Webページで一定のものではありません。せめて一定の規則に則った形で詳細にアクセスする文字列の場所が設定されていればなんとかなるかもしれない・・・と思い、チョコチョコ調べてみました。

結論としてWebページのxpathがテーブルの行番号と関係していてUI要素の一部分に変数を設定すれば行ごとの選択に役立てることができるぞ!と発見

アクセスができればもうこっちのもの。入力先は一つ一つUI要素が固定的に決まっているからIF分岐でもなんとでもなる!

あーよかった!さすがRPA!

と思ったわけです。

遅い、エラーの有無がよくわからない。成功率も怪しい

RPAの弱点でもあり、無償で使わせていただいているものにケチつけるのも忍びないですがとにかく遅い。期待できるパフォーマンスとしては3、4時間フローを起動しっぱなしでやるというもの。

あとプライベートでもPADを使っているのですがよくわからん理由でフローが正常稼働しないケースも見受けられたため、運用に乗せるのはリスクを感じざるを得ませんでした。

ダメ元でPythonへ

この段階で諦めるしかないか、と思いましたが、諦めきれず今まで学習を放棄していたPythonに着手。Seleniumを利用したWebページ操作自動化にチャレンジしました

Pythonは教科書を読んでふんふん♪こんな感じね!ふんふん、ふんふん、すやあ・・・zzzというのが続き、勉強が長続きしませんでした。
何より自分の想像し得る業務課題の解決方法がVBAで事足りたため、やる必要性すら感じていなかった状態です。

ただその仕事をやりたくない気持ちが勝り、Pythonチャレンジスタート

画像3

Seleniumの利用は自社でも認められており、Qiitaにも豊富に参考Webページがあったため、習得する上での環境は整っていました。

PADのフローを設計書のように活用し、同じフローをそのままSeleniumでも実現するイメージでスクリプトの作成をスタート。
Pythonのコードの理解しやすさも相まって業務時間をいたずらに増やすことなくコードの作成は完了しました。

結果は超・超・超大成功

会心の一撃

画像4

「ひどいときは深夜までやってたんですよ~」というデータ入力作業が
な、な、な、なんと~

30分!!!!!

ヤバくないですか!
しかも運用して数カ月たっておりますが未だトラブルなし。円滑な運用に成功しております!!

Pythonにドハマりしました!!

この成功体験があって、Pythonの本格的な学習をスタート。クラスの概念とかが未修ですが、list、tuple、dictionaryといった部分まではVBAの応用でいけるので割とスッと使えています。

プログラムは毛嫌いせずにまず使うことやね

そう思った出来事です。

そして

Pythonはやれることが多い!!

Webスクレイピングをはじめ、PDFの表データ抽出・加工、OCRの利用、RPA的な使い方などなどできることの玉手箱や~と言わんばかりの豊富な機能。

ツヨツヨ勢からしたらPythonは遅いらしいですが、

ノンプロからしたらそんなの関係ねぇ~

画像1

手作業でやるよりかは遥かに速いわ、おっぱっぴーです。

最近の私の仕事はRPAの布教活動やPythonを使った大幅業務改善です。
しかしpipをはじめとしてアップデートの対応や持続的な利用のためには対策が必要なので、サステナビリティを考えると課題はまだまだあります。

とはいえ

仕事でやれる可能性が大幅に増えました!

大言壮語かもしれませんが、一事務職としては信じられないくらいのチート級の武器を手に入れたイメージ。

チートコード全開のグランドセフトとなんら変わりない。

画像5

調べればやれることは多いんや・・・
先日もこんな試験を受け、知識を習得しましたが

やればやるほど可能性はある。腐ってる暇はない!やったるでぇ~

※備忘録としてPythonのコードをnoteに記録しています。使用はご自由にどうぞ。知りえた中で最高のコードはWebページの表を二次元配列に格納するこのコードです!

##必要!
from selenium.webdriver.common.by import By
↑要注意
# テーブル内容取得
tableElem = テーブル要素を取得
trs = tableElem.find_elements(By.TAG_NAME, "tr")
# ヘッダなどに合わせて開始行はrangeで指定する
arr = []
for i in range(1,len(trs)):
  tds = trs[i].find_elements(By.TAG_NAME, "td")
  line = []
  for j in range(0,len(tds)):
      line.append(tds[j].text)
  arr.append(line)    

最近Twitterやらなんやらでキラキラノンプロ活躍勢と絡めてHappyです!
スペースやらZoom会参加させていただきますのでよろしくお願いします!

noteも自分のやれる範囲で更新するのでよろしくです!!

追伸

ショートカットキー対決募集です(Twitterではガン無視でしたw

興味あれば!ぜひ。今後もよろしくお願いします~♪

この記事が気に入ったらサポートをしてみませんか?