『RPAは、ノンプログラマーでも簡単に利用できます』
今まで何度も申し上げてきたことですが、このフレーズ、嘘です。
いや、物は言いようと表現した方が良いのかもしれません。
RPAソフトで作ったロボットを動かすのは ⇒ 簡単です。クリックするだけですから。
RPAソフトでロボット(シナリオ)を作成するのは ⇒ プログラミング知識ゼロだと無理です。
これが正しい表現だと思います。
RPAソフトというのは、プログラム言語を極力打ち込まずに、アプリケーションをまたいだ自動化を実現できるようにしたアプリケーションです。
RPAソフト上では、プログラム言語を打ち込む代わりに、アイコンをクリックしたり、簡単な数字や単語を入れて動かすことが出来ます。
とはいえ、ロボット作成の基本的な「流れ」は、プログラミングと同じです。
この「流れ」を理解していないと、「あれっ、この後、どのアイコンクリックするんだっけ?」とか「エラーが出ているけど、言っている意味がさっぱり分からない」となります。
シンプルなロボットであれば、あまり多くのプログラミング知識が必要ないというのも確かにありますが、それでも周りに質問できる人がいない環境では、ちょっとしたことですぐに詰むでしょう。
では、知識ゼロでRPAに挑戦すると、どこでつまずくのでしょうか?
ロボット作成においての障壁
■変数の使い方
変数というのは、プログラミングの教科書などでは、「いろいろなものを入れておく箱」と表現されます。
エクセルシートで計算しているとした場合、A1~A10までのセルに、最初は数字の「10」を入れたいとします。
A1=10、A2=10、A3=10・・・と「10」を10回入力することになります。
そして、今度は「10」の代わりに「5」を入れたいとします。
そうすると、A1=5、A2=5、A3=5・・・・と、これも10回打ち込み直す必要が出てきます。
それは大変なので、A1=変数、A2=変数、A3=変数・・・としておけば、最初に「変数=●」と宣言しておくことで、●のところを1回打ち直せば、希望の数字が反映されるという仕組みです。
まあ、これ自体はすぐに理解できると思います。
■変数の型
ビギナーの方にとって、最初の壁は「変数の型」でしょう。
変数自体は、任意の文字に代入して、それを使いまわすということになる、便利なツールです。
実は問題or厄介なのは、この変数の使い方ではなく、「型」の部分です。
変数というのは、色々なものが入る「箱」ではあるのですが、数字の入る箱、文字が入る箱、整数のみ入る箱、TureとFalseしか入らない箱等々。
一般的な利用方法においては、それほど沢山の型がある訳ではありませんが、意識して使い分けていかないと、途中で整合性が取れなくなり、エラーで処理が進まなくなってしまうのです。
複雑なロボット作成になればなるほど、数多くの型が登場します。
それが複雑に絡み合ってプログラムの体をなしていくのですが、慣れないうちは、自分の頭のメモリ容量を超えてしまい、「あれっ、今、この変数には何が入っているのだっけ?この変数Fの結果を変数Gに入れれば良いのかな・・・。あれ、エラーになる。うーん、よくわからん(汗)」となるのです。
■ループ
ループとは、「繰り返し」の意味です。
「綺麗なプログラム」と「汚いプログラム」を分ける大きな違いの1つとしても挙げられます。
動けばそれでいい!というのであれば、延々と同じようなコードを書けば良いのですが、それでは書くのが大変だし、修正が必要となった時も手間と時間が掛かります。
例えば、A = A +1 を100回繰り返すといった場合、これを100行書くことも出来ますが、現実的ではありません。
For i = 1 To 100
A = A + 1
Next i
といったようなループのコードを書けば、100回自動的に繰り返してくれます。
上記はとてもシンプルに書きましたが、実際にはループの中に別のループが入っていたり、変数も複数入ってくるので、慣れていないと読み解くのに時間が掛かりますね。
また、ループの方法にも複数あるので、使い分ける必要も出てきます。
■プログラミングの定石
プログラミングの本を読んでいると、「アルゴリズム」という単語が出てきます。
「アルゴリズム」=算法 という意味です。
プログラミング独特な考え方ともいえるでしょう。
例えば、エクセルシートにあるシートの行数を認識させる場合、
①上から順番に処理していく方法
⇒処理が終わる度に行数へ「+1」をしていく。
というのがあります。
これでも大体は処理できるのですが、もし途中の行に空欄があったら?
恐らく、そこでコンピュータは「ここが最終行だ!」と勘違いして止まる(終わる)のです。
では、それを防ぐ為にはどうすれば良いのでしょうか?
②(エクセルの)一番下の行から上に上がっていき、空欄が終わる行を見つける方法
Worksheets(1).Cells(Rows.Count,1).End(xlUP).Row
といった便利フレーズがありますので、これを使います。
これで最終行が分かるので、ループのところで
For i = 1 To 最終行
とすれば、途中に空欄があっても最終行まで読み込んでくれるはずです。
RPAソフトにも同じことが出来るアイコンがありますね。
上記はプログラムを書く場合の考え方の一例ですが、事前にこういったパターンを覚えておかないと、なかなかその場で解決方法を独力で閃くというのは困難だと思います。
RPAソフト作成会社が言うほど、RPAでのロボット作成は簡単では無いというのはお分かり頂けたでしょうか。
周りにRPAの操作方法に詳しい人が一人でもいれば、最低限の知識だけでやっていけるかもしれません。
しかし、そういった環境に無い場合、何か1つ簡単なプログラム言語をゼロから勉強した方が、「急がば回れ」になるかもしれませんね。