seleniumで自動化は処理が楽になったけどメンテが面倒な件
日々の業務などをやっていて、
色々と面倒な作業などは、
自分がやったり、
他の人がやったり、
自動化できずに手動で頑張っていることは、
意外と多いなぁと思うことがあります。
そんな自動化していくべき、
今で言えば、
「DX化」
みたいなことにも通じるのかなと思うが、
自動化することで業務は効率化されていきます。
各種の使っているサービスなどで、
- APIが用意されている部分は自動化を実施
という形で、
業務の効率化に取り組んで、
ある一定の成果は、
目に見える形で起きたのだが、
面倒な業務は残ったまま。
この面倒な部分に対しても、
- 自動化することでヒューマンエラーを防ぐ
- 自動化することで、担当者の負担を減らす
- 自動化することでチェック結果を蓄積していく
みたいなことに、
どうにか取り組んで、
その後のメンテナンスをやっていったお話。
まずは、APIが用意されている部分を少しずつ自動化した
もともと、
色々なことが、
手動で行われていて、
大変だけど、やるしかないでしょ
みたいな形で、
それぞれが、
それぞれの抱えている業務を、
いつものフローで、
気合で頑張られていました。
ある意味、それでもうまく回ってはいたのです。
ただ、
やはり他の業務や突発的なできごとなどで、
他の対応に追われて、本来やるべき作業の精度が落ちている
という状況が、
側から見た時に見受けられました。
まぁ、
人がやることは、少なからずミスは起きるもの。
そのように、
個人的には考えているので、
業務を自動化していくことになりました。
そこで、
まず取り組んだのは、
各種サービス等でAPIが準備されているところを自動化する
ということ。
この辺りは、
色々と取り組んだので、
取り組んだ内容やよかったことなどは、
別の記事で書いていこうと思います。
今回の記事の前提としては、
このAPIを使った自動化が終わったというところが前提。
APIを使った自動化だけでも、
結構な業務の自動化になったと、
個人的に思っており、
新しく作ってもらった自動化してくれるやつ、
あれで、すごく楽になりました〜
みたいなことも言われるので、
ある程度の成果はでたのかなと。
APIが準備されてない部分でどうするかと悩む
APIでの自動化を進めた上で、
ある程度、業務が効率化できた部分など、
目に見える成果はでてきました。
しかし、
まだまだ人が手動で頑張っている部分があり、
- ネットで情報を検索して、その情報をまとめる
- 古いシステムでAPIなど準備されていない
みたいなこともあり、
APIがあることで、
自動化することもすごく楽で、
APIあるんで、
この部分の業務の自動化は任せてください
と言えていましたが、
どうしたら良いのかと悩む日々。
組織内では、
この前、色々と自動化してくれた分で、
いつもの業務がすごく楽になったので、
あとは、気合でやりますかねぇ…
という人もいて、
やはり、
「気合でやります」
を変えねばと考えて、
API以外での方法を考え始めました。
Seleniumで自動化を行い始める
APIがない時の対応を探っているなかで、
ネット上の情報から情報を取得したり、
知人などから、
そのAPIで自動化できていない部分、
Seleniumでなんとか頑張ったらいけると思うよ。
という話もあり、
「Selenium」
の公式サイトや、
実際の使い方を載せている記事などを調べて、
業務の中の処理を、
対応できそうな部分は自動化していきました。
この自動化に関しては、
「BeautifulSoup」
というライブラリも合わせて使いました。
なので自動化するにあたっては、
- 処理を実装する言語はPythonでコードを書いた
- BeautifulSoup4というライブラリも合わせて使った
ということで取り組んだ形でした。
ゆくゆくは、
サーバー側で同じことをやろうと考えるに至りましたが、
この自動化を最初に取り組んだ時点では、
まずは、PC上で動かすことまでを取り組んでおり、
業務を自動化したものが自分のPCにあり、
処理を行いたい場合に、
自分に連絡をいただいて処理を実施するような流れになりました。
このSeleniumでの処理の自動化をすることで、
簡単にざっくりいうとですが、
- 1時間作業が、10分程度で終わるようになった
という結果も、
一部ではでていたので、
やはり自動化して良かったとは思っています。
Seleniumで自動化した部分のメンテが面倒だった
処理を自動化していく中で、
最初に取り組んだAPIでの自動化も含めて、
- APIで自動化した業務と対象のコード
- Seleniumで自動化した業務と対象のコード
の2つにわけられるのですが、
APIで自動化した方に関しては、
「APIで使用が決まっていて変更もほとんどないので、メンテも楽」
ということが、
私が自動化した部分だけの経験で言えば、
すごくメンテが楽という結果になりました。
一方で、
Seleniumで自動化した部分に関しては、
「操作対象の画面が変わることでの変更が大きく、メンテも大変」
ということが、
自動化した前提で業務を進めていくと、
動くことが前提になっていることもあり、
急ぎの対応にもなることも含めて、
メンテ側がすごく大変になるという結果になりました。
実際にメンテをしていく上では、
- そもそも、自分のPC上だと管理が大変
- Seleniumの操作対象の画面の変更頻度が重要
ということがあり、
最初の1点目に関しては、
Seleniumの処理をサーバ側に持っていき、
そちらで動かすようにしていきました。
こちらの点に関しては、
別記事で対応のメモだけ残しましたが、
seleniumでドライバエラー:This version of ChromeDriver only supports Chrome version XX
みたいなことがおきながら、
都度、対応して動かすことができました。
ただ、サーバのミドルウェアのバージョンや、
Seleniumのバージョンなどの相性もあり、
うまく動かない場面もでてきたので、
その辺りに四苦八苦することになりました。
この辺りは、
対応した時のメモなどを記事に残していますが、
環境構成で挙動がちょっと怪しくなるなという印象があるので、
実挙動をサーバ側で試してみる(複数回実行など)のが、
チェックとして大切かなと思いました。
この1点目の
- そもそも、自分のPC上だと管理が大変
の部分だけでも、
メンテが大変でしたが、
2点目の
- Seleniumの操作対象の画面の変更頻度が重要
については、
画面が変わることで、
Seleniumで取得して解析しようとする対象のタグなど、
全てが変わっていくため、
その都度、
あ、画面のHTMLの構造がすごく変わってる…
この部分にクリックして遷移するボタンがあった気が…
いや、ボタンは無くなったのか….泣
みたいになり、
目的の操作をおこうなうために、
「どのような順序でその行動を達成するのか」
という点が、
完全に覆ることもあるので、
その点がすごくメンテナンスをしていく上で、
非常に大変だと感じた部分です。
この点は、
メンテナンスを少しでも楽にするために、
- 想定していた画面操作を動画で残しておく
- 想定していた操作対象の要素がどれかを残しておく
ということに取り組むことで、
変更が起きた時の自分が少しは楽になったので、
もし、同じように取り組まれる方は、
上記のことを取り組んでおくと、
同じように楽ができるかもしれません。
また、
この辺りについては、
コードをリファクタリングしたり、
対象の設定情報を設定ファイルとしてまとめることで、
メンテも楽になるという、
一般的なコードのリファクタリングが、
大きく影響を及ぼすなぁと取り組んで感じたので、
この辺りについては、
別記事で書いていこうかなと思います。
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。