1,はじめに
下記の企画に参加しています!
本日は表題の通りに 「稼働時間7時間かつ残業なしでインボイスの案件を含めて20ロボットを1か月で対応した。」 です。
2,前提
本番稼働(テスト用端末)、自己の端末の2台、ディスプレイ2台を使用して、対応しました。
最大4画面で最低3画面で改修対応していました。
3,改修を早く行うコツ
ログを入れて、Orchestratorで出力されたログからエラーで検討を付ける。
どこでコケているのかを理解するために、全ロボットに一定の基準でロボットに入れる。
ログの入れ方(市民開発者向け)のコツは後日記事にします。
優先度、テスト難易度、ロボット修正難易度を整理する。
各ロボットに対して優先度(高、低)があるため、現場の方に確認をしながら改修順位をつけていました。
テスト難易度はテストに時間がかかりそうなものを低とそうでないものは高で分けました。
ロボット修正難易度は修正時間がかかりそうなものは低とそうでないものは高で分けました。
これら3つの優先度、テスト難易度、ロボット修正難易度で高に該当するものから対応していきました。
特にテストに時間がかかりそうなものは、テストケースに漏れがないかや仕様の確認でユーザーとMTGをする必要があります。
効率よく改修を行う。
規模が大きい場合は、テストした部分だけ切り出して、テスト用xamlを作成して単体を行う。
また気になる箇所やテストしたいときだけ入れているアクティビティには「*」をアクティビティ名に追加する。
これらを行うことで時間短縮と不要なアクティビティの消し忘れミスを防ぐことができます。
テストするときは「デバック」ではなく「実行」で行う。
本番稼働はテストのみを行い、その裏で自己端末でロボットの修正を行う。
テストして得たい結果を得ることができたか?を覚えながら、自己端末で修正していました。
1ヵ月間これをして頭がパンクしそうで、甘いものを食べたり、ランニングしたりしないと体調管理が難しかったです。
当時にこれがあったらどれだけらくだったかと思いました。
改修後に改修内容の履歴を残す。
これに工数をかけるのは勿体ないかもしれないですが、私はこれをすることによって、今回の事象をインプットができ、困ったときに辞典の役割をしてくれるため、工数がかかってもまとめています。
まとめるポイントとしては下記です。
(1)Orchestratorで出力されたログをエラーの前後がわかるようにスクショ
(2)ロボの改修前後をスクショ
(3)次の案があるときはそれを書き残す。
これをすることによって、辞典のように使用し、問題の切り分けで過去に試したことは何か確認もできてよかったです。
ロボの品質はどうあれ、開発を仕上げること
ここからインボイス対応の話になります。
インボイスの対応を始めたのが初期稼働の2週間前で、場合分けによって計算処理が異なり、この計算処理を4ロボットでも適応できる共通部品の作成、さらに他のロボットの改修もあだあるため、明らかに時間が足りないと判断しました。
そこで、下記のように方針を立てました。
(1)場合分けによる計算処理をExcel関数で処理させる。
(2)現場では引数を使うことは禁止されていて、市民開発者が多いこともあり、共通部品化は簡単な形式で作成する。
引数を使用できないのが辛く、ロボットによってアウトプット数が異なるため、その点の制御も大変でした。
さらにデータテーブルを範囲に書き込みにすると、たとえ空白でもExcel関数の上に空白で書き込んでしまい、Excel関数が消えてしまう事象が発生しました。
これはExcel関数がある列を除き、Excel関数が複数あったのでその分シートを用意しました。
書き込む手順は下記で解決しました。
例えば、A~H列があり、D列、G列にExcel関数があるとします。
(1)A~CまでをD列にExcel関数があるSheet1に書き込む
(2)A~C列をデータテーブル1にする。
(3)データテーブル1とE列をF列にExcel関数があるSheet2に書き込む
(4)Sheet2をデータテーブル2にする。
(5)データテーブル2とH列をアウトプットとなるSheet3に書き込む
これでできたと思いきや、、、。
アウトプットはcsvなので、Excelではいけないです。
なので、Excel→csvに変換作業もありました。
これはF12キーで名前を付けて保存機能があったので、それで対応しました。
これで完成し、約一週も早く仕上げることができ、初期稼働も問題なく正常終了しました。
この結果、現場から高く評価をいただくことができました。
4.おわりに
振り返ってみると柔軟に開発するスキルと保守運用スキルがついたと思いました!
この大変さがあったので、現在は外的要因でしかエラーが起きないです。
これを解消するのが次のタスクとなります。