予定日:2021年1月4日(月)
あるプロジェクトでかなり特殊なRPAを開発したのですが、そのときに「ものづくり」として感じたことを記載します。
そのシステムはアプリケーションでしか提供されていない解析ソフトウェアをウェブから操作して指定したものの解析結果を返すというシステムです。
本来は解析処理を実行しているコアとなるライブラリを使用して、解析機能を実行する様にAPIなどを作成するべきなのですが、解析機能がGUIと密接に連携しており、更にソースコードは何年も前にリリースされてからメンテナンスが行われていないというものだったため、RPAを開発して人間が操作するのと同じことを実行して結果を返す実装となりました。
一見すると人間が実行することなのでRPAなどのソフトウェアで代替できそうなのですが、実際に実装を行ってみると色々と分岐があったり結果の出力を画像で判断したりなど、人間にとっては簡単で意識をしていなかったことが、コンピューターにとってはかなり大変な処理となっていることを実感しました。
その中である解析処理を実行する際にはネットワークを切り替えなければならない事が分かり、切り替え自体はWindowsのレジストリを変更することで対応できたのですが、Webシステムと連携させて何回も解析処理を実行するといつの間にかネットワークを切り替えられなくなって処理が止まっていたことが何回も発生しました。
RPAを使った実装方式に無理があったのかと悩んだのですが、RPAを開発してきた工数や費用、後続のスケジュールなどを考えると、方針を切り替えるに値する理由が必要となります。また、まだやるべきことが残っているのではないかと思い、定期的にWebからリクエストを投げるテストスクリプトを作成し解析機能のRPAの実行統計を取ることにしました。
統計を取り始めて最初のうちは3時間ぐらいですぐに機能が停止してしまっており、何が原因なのかさっぱり分からなかったのですが、エラーが発生するたびにWindowsのコンソールにログインしてイベントログなどを調査してその都度対応を行っていきました。
統計と調査を重ねるごとにエラーの原因が分かり、その対応を実装するという形で精度を上げていくと、何日間統計を取り続けても全く停止しないRPAを開発するに至りました。
このプロジェクトで分かったことは、実装しただければ完成ではないということでした。実装を行って実際に動作させてみてエラーが出た場合に対応を行い、完全に動作するまでに至ることが閑静なのだという事がわかりました。
多分他の製造業でも同じだと思うのですが、例えば車のエンジンでも同じ様に、部品を削り出して組み立てただけでは完成ではないということです。実際にエンジンを回してみて軸のバランスや発火のタイミングを調整して、最高性能を出していく。そうした事がソフトウェア開発にも必要なのだという事がわかったのです。
これは経験しなければわからないのですが、このよう調整作業も加味して工程を作成することができると良いのではないかと思います。