Slide 1

Slide 1 text

スライドは全部で13枚と、付録3枚あります!

Slide 2

Slide 2 text

自己紹介 • 小﨑 肇(こざき はじめ⇒[ハナ]肇⇒はなっち!) • 60歳 もうすぐ61歳 • 東京都豊島区⇒神奈川県川崎市中原区 • 趣味 自転車だったけど、最近はINGRESS • 職歴 ⮚ かなり前に今の会社に入社。 ちょっと前に退社! ⮚ ちょっと前の翌日に今の会社に入社(契約社員)。 ⮚ UiPath歴は、2018年4月より ⮚ UiPath japan MVP 2019 Holder!! ⮚ UiPath japan MVP 2020 Holder!! Presented By [email protected]

Slide 3

Slide 3 text

Yマスタ(10列) MYキー MYix MYix MXix 仕様:メインを中心に、 サブA、サブBからの情報をCSVに設定する。 その際に配列項目の位置は、 Xマスタ、Yマスタから取得する Xマスタ(10列) MXキー MXix サブA(50列) K SA情報 サブB(50列) K SB情報 出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) メイン(170列) K A情報 MXキー MYキー

Slide 4

Slide 4 text

MYix MXix 方法:それぞれの情報をDataTable型に展開し、 「データテーブルの結合」にて情報を結合する。 ⇒EXCEL VBAなどでもできるが、 キー一致までのロジックが二重LOOPとなり、性能が出ない。 出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) メイン(170列) K A情報 MXキー MYキー サブA(50列) K SA情報 メイン(170列) K A情報 MXキー MYキー Yマスタ(10列) MYキー MYix Xマスタ(10列) MXキー MXix Xマスタ(10列) MXキー MXix サブB(50列) K SB情報 サブA(50列) K SA情報 サブB(50列) K SB情報 Yマスタ(10列) MYキー MYix

Slide 5

Slide 5 text

出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) メイン(170列) K A情報 MXキー MYキー サブA(50列) K SA情報 MYix MXix 予定:結合してしまえば、 出力レイアウトへの加工は 「データテーブルのマージ(Ingone)」で簡単! メイン(170列) K A情報 MXキー MYキー Yマスタ(10列) MYキー MYix Xマスタ(10列) MXキー MXix Xマスタ(10列) MXキー MXix サブB(50列) K SB情報 サブA(50列) K SA情報 サブB(50列) K SB情報 Yマスタ(10列) MYキー MYix

Slide 6

Slide 6 text

メイン(170列) K A情報 MXキー MYキー サブB(50列) K H1 S1情報 K H2 S2情報 出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) サブA(50列) K SA情報 MYix MXix メイン(170列) K A情報 MXキー MYキー Yマスタ(10列) MYキー MYix Xマスタ(10列) MXキー MXix Xマスタ(10列) MXキー MXix サブA(50列) K SA情報 サブB(50列) K SB情報 Yマスタ(10列) MYキー MYix 想定外の出来事!その1  メインファイルが 巨大! ⇒「結合」していくと列増大でメモリオーバー  メイン:サブB=1: n! ⇒「結合」していくと件数倍増でメモリオーバー

Slide 7

Slide 7 text

出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) メイン(170列) K A情報 MXキー MYキー サブA(50列) K SA情報 MYix MXix メイン(170列) K A情報 MXキー MYキー Yマスタ(10列) MYキー MYix Xマスタ(10列) MXキー MXix Xマスタ(10列) MXキー MXix サブB(50列) K H1 S1情報 K H2 S2情報 サブA(50列) K SA情報 サブB(50列) K SB情報 Yマスタ(10列) MYキー MYix メモリオーバーフロー対策 ⇒必要な列だけに事前処理!(EXCEL-VBA) ⇒突合順を組み換え、中間ファイル化して、 別ロボ作成! 想定外の出来事!その1  メインファイルが 巨大!  メイン:サブB=1: n!

Slide 8

Slide 8 text

MYix MXix 対策:ロボ分割! 出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) メイン(170列) K A情報 MXキー MYキー サブA(2列) K SA情報 メイン(30列) K A情報 Yマスタ(10列) MYキー MYix Xマスタ(10列) MXキー MXix Xマスタ(10列) MXキー MXix サブB(5列) K SB情報 Yマスタ(10列) MYキー MYix サブA(2列) K SA情報 サブB(5列) K SB情報 メイン(30列) K A情報 Xマスタ(10列) MXキー MXix Yマスタ(10列) MYキー MYix ロボ1 ロボ2

Slide 9

Slide 9 text

MYix MXix 想定外の出来事!その2 出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) メイン(170列) K A情報 MXキー MYキー サブA(2列) K SA情報 メイン(30列) K A情報 Yマスタ(10列) MYキー MYix Xマスタ(10列) MXキー MXix Xマスタ(10列) MXキー MXix サブB(5列) K SB情報 Yマスタ(10列) MYキー MYix サブA(2列) K SA情報 サブB(5列) K SB情報 メイン(30列) K A情報 Xマスタ(10列) MXキー MXix Yマスタ(10列) MYキー MYix ロボ1 ロボ2

Slide 10

Slide 10 text

MYix MXix 出力(324列) K A情報 SA情報 SB情報 X(1)~(30) Y(1)~(150) サブA(2列) K SA情報 サブB(5列) K SB情報 サブA(2列) K SA情報 サブB(5列) K SB情報 メイン(30列) K A情報 Xマスタ(10列) MXキー MXix Yマスタ(10列) MYキー MYix ロボ2 想定外の出来事!その2  「データテーブルのマージ(Ingone)」 ⇒基のデータテーブルの倍くらいのメモリ余裕が必要!  あとはレイアウト変更後、テキストファイルに出力するだけ! (業務ロジック処理)  元データテーブルから、指定行単位ごとに処理をしよう!

Slide 11

Slide 11 text

指定行単位ごとに処理(例えば3行) 1 A 2 B 3 C 4 D 5 E 6 F 7 G ① 緑DT = 青DT.Clone ② 緑DT.ImortRow = 青DT.Rows(0) 1 A 2 B 3 C 4 D 5 E 6 F 7 G 1 A ③ 青DT.Remove(0) 2 B 3 C 4 D 5 E 6 F 7 G 1 A 指定行単位まで 4 D 5 E 6 F 7 G 1 A 2 B 3 C 業務ロジック処理 ⑧ 緑DTで処理 ④ 緑DT.ImortRow ⑥ 緑DT.ImortRow ⑤ 青DT.Remove(0) ⑦ 青DT.Remove(0) 4 D 5 E 6 F 7 G ⑨ 緑DT.Clear 7 G 業務ロジック処理 ● 緑DTで処理(最終データ) 残DTが存在したら

Slide 12

Slide 12 text

Knowledge • 入力ファイルは、必要な情報のみに加工する (必要列情報は、ロボ内部に保有せず、EXCELで制御する) • 出力レイアウト変更する際は、「データ行の追加」ではなく、 「データテーブルのマージ」を使うと便利。その為、入力列名 を出力列名に合わせておく (改名列情報は、ロボ内部に保有せず、EXCELで制御する) • 1:nマッチングがあるかどうかを確認し、それを優先し処理 する(ダメな場合、早めに対策を練ることができる) • 中間ファイルとして保存する場合は、CSVとする。Excelにする と、前後空白がトリムされてしまう場合がある(See. 付録)

Slide 13

Slide 13 text

UiPathは32ビットソフトウェアなので、メモリは意外とシビア。 業務自動化ではなく、ツールとして使用する場合には、注意が必 要!(まぁそんな使い方は普通はしないですね(^^♪)  64ビット化は計画として挙がっているらしいけど、 優先度は低い模様  64ビットマシンを使用していても、 32ビットソフトウェアでは、宝の持ち腐れ!  64ビット化を望んでいる声を上げていきましょう!! An extra word

Slide 14

Slide 14 text

Appendix … 前後空白も文字列 Seq CSVファイル CSV EXCEL Result 1 <--FULL--> 0/<--FULL-->/ 0/<--FULL-->/ TRUE 2 <--RIGHT 1/<--RIGHT / 1/<--RIGHT / TRUE 3 LEFT--> 2/ LEFT-->/ 2/ LEFT-->/ TRUE 4 <--FULL--> 3/<--FULL-->/ 3/<--FULL-->/ TRUE 5 <--RIGHT 4/<--RIGHT / 4/<--RIGHT / TRUE 6 LEFT--> 5/ LEFT-->/ 5/ LEFT-->/ TRUE 7 '<--FULL--> 6/'<--FULL-->/ 6/'<--FULL-->/ TRUE 8 '<--RIGHT 7/'<--RIGHT / 7/'<--RIGHT / TRUE 9 ' LEFT--> 8/' LEFT-->/ 8/' LEFT-->/ TRUE 10 '<--FULL--> 9/'<--FULL-->/ 9/'<--FULL-->/ TRUE 11 '<--RIGHT 10/'<--RIGHT / 10/'<--RIGHT / TRUE 12 ' LEFT--> 11/' LEFT-->/ 11/' LEFT-->/ TRUE

Slide 15

Slide 15 text

Seq CSVファイル CSV EXCEL Result 13 123 12/123/ 12/123/ TRUE 14 456 13/ 456/ 13/456/ FALSE 15 789 14/789 / 14/789/ FALSE 16 "123" 15/123/ 15/123/ TRUE 17 " 456" 16/ 456/ 16/456/ FALSE 18 "789 " 17/789 / 17/789/ FALSE 19 '123 18/'123/ 18/'123/ TRUE 20 ' 456 19/' 456/ 19/' 456/ TRUE 21 '789 20/'789 / 20/'789 / TRUE 22 "'123" 21/'123/ 21/'123/ TRUE 23 "' 456" 22/' 456/ 22/' 456/ TRUE 24 "'789 " 23/'789 / 23/'789 / TRUE Appendix … 前後空白も数値(引用符があるとExcelでもOK)

Slide 16

Slide 16 text

Appendix … 前後空白も0から始まる数字(引用符があるとExcelでもOK) Seq CSVファイル CSV EXCEL Result 25 001 24/001/ 24/1/ FALSE 26 002 25/ 002/ 25/2/ FALSE 27 003 26/003 / 26/3/ FALSE 28 "004" 27/004/ 27/4/ FALSE 29 " 005" 28/ 005/ 28/5/ FALSE 30 "006 " 29/006 / 29/6/ FALSE 31 '007 30/'007/ 30/'007/ TRUE 32 ' 008 31/' 008/ 31/' 008/ TRUE 33 '009 32/'009 / 32/'009 / TRUE 34 "'010" 33/'010/ 33/'010/ TRUE 35 "' 011" 34/' 011/ 34/' 011/ TRUE 36 "'012 " 35/'012 / 35/'012 / TRUE