WinActorを扱うとき『変数』は避けて通れないもの。
ところが初心者にはなかなか考え方が難しく、使いこなせるようになるまで苦労される方もいらっしゃいます。
それはWinActor研修や開発支援をさせていただく中でも感じています。
「どういう使い方をするものかピンとこない」「変数でないとダメと言う理由が分からない」といったお声もたびたび聞きます。
私も例外ではなく、ずっと事務職でプログラミングの知識がないままWinActorを使い始めた立場からすると、『変数』は初めて聞いた言葉で、概念すらなかなかピンとこなかったんですよね。
今回は『変数』について、難しくて使い方が分からないという方向けに、プログラミング未経験から使えるようになった私の経験談を交えつつお話ししたいと思います。
1.変数とは
プログラミングにおける変数(へんすう、英: variable)とは、高水準言語のプログラムのソースコードにおいて、扱うデータを読み書きする記憶域 (storage) のことであり、固有の名前(識別子)によって識別される。変数を用いることで、データを一定期間記憶し必要なときに利用することができる。高水準言語において、変数は記憶装置(メモリ)を抽象化する役割を果たす。
分からない言葉が出てきたときはまず言葉の意味を調べる!ですね。
変数はRPA独自の用語ではなく、プログラミングで使われている用語です。
なおWinActorでは下記の様に定義されています。
変数はデータをしまっておく箱のようなものです。変数を使うことでシナリオの中で収集したデータを保持したり、保持しておいたデータを参照したりすることができます。
WinActor Operation Manualより引用
言葉の説明だけでピンとこない方は箱をイメージしてみてください。
一つの箱には一つの値(数字と文字列)をしまっておくことができます。
この箱は、中に値をしまっておくことができて、シナリオ実行中なら好きな時に値を取り出すことができたり、中身を上書きしたり空にしたりすることができます。
箱から取り出した値はエクセルに貼り付けたり、システムの入力欄に貼り付けたりするのに使います。
このような箱を用途に分けて複数作ることができます。
作った箱は「変数一覧」で管理でき、箱の名前はユーザーが自由に決められます。(変数名には一部使えない文字があります)
私が『変数』の説明をするときに、似ているものとして例に挙げるのが「クリップボード」と「数学のxやy」です。
クリップボードは、PC上で文字やファイルや図形をコピーをした際に一時的に保存される領域のことです。
「コピーしたものが一時的に保存される」点は同じですが、変数ではファイル自体や図形は保存できず文字列のみです。
数学で出てくるxやyは数字を代入することのできる文字です。
関数の「y=2x+1」のような式があったときにxやyにはどんな数でも入ります。変数も仕組みは同じで、任意の値を代入して使うことができます。
WinActorにおける変数は、クリップボードや代入できるxやyとは異なる点もありますので把握しておきましょう。
2.どうして変数を使うのか
WinActorにおける変数の意味と特徴が分かったら、次は「使うタイミングについて」です。
WinActorで実務レベルの複雑な業務を自動化しようと思ったら変数の使用は不可避です。
便利ですし、できることの範囲が広がったりシンプルな構成でシナリオを作成することができますので、慣れれば使わずにシナリオを作る方が難しいくらいです。
しかし私の場合、勉強し始めた頃は変数のことがよく分からないので、なるべく使いたくないと考え、なんとか変数を使わずにシナリオを作れないかと挑戦したこともありました。するとすぐに壁にぶつかってしまい、使わざるを得ないということになりました。
例えば当初「Excel操作(値の取得2)」において【セル(行)】という設定項目に変数を使う意図が分からずにシナリオ作成作業は難航しました。
そして直値だけで乗り切ろうとして試行錯誤した結果、変数を使った方が簡単だということに気づきました。
1⃣ 変わる値には変数を!
下記は、あるエクセルのA列「商品名」の値を上から取得して画面上に表示させるシナリオをなるべく直値だけで作ろとしたときのイメージです。
変数を使わず直値でセル位置を指定してしまうと、値を取得したい数だけノードが必要になってきます。
そして、取得したい値の数が固定ではなく1だったり10だったりしたらこの方法だとうまくできないぞ、と気づいたわけですね。
そこで教わった通りに変数を使ってみます。
すると「Excel操作(値の取得)」のノード自体は一つでよくなり、しかも値を取得したいデータ数がいくつであっても対応できるようになりました!
変数は「変わる数」というその名の通り、変わる値に対して使うと効果的です。
上記の例でいうと、商品名を上から取得したいとき、2行目の値を取得したら3行目、4行目、と行が変わっていきます。
こうした変化していくものを変数に入れておき、2行目の値取得が終わったら「行」という変数の中身を【2】から【3】へ上書きしておくことでループの2週目にきちんと3行目の値を取得できるようになります。
反対に列については商品名はずっとA列に記載されています。A列の値を取得するという点は何行目になっても変わりませんので固定値でOKということで直値入力しています。もちろん、列も変数にしていいのですが、変数の値が変わらないものまでなんでも変数にしてしまうと、変数の数が膨大になり、今度は変数の管理が大変になるので直値と変数をうまく使い分けることが必要です。
2⃣ メンテナンスの必要がある値にも変数を使う
値が変わらないにも関わらず、変数を使った方がいい場合もあります。それは「メンテナンス」する必要があるときです。
例えば、システムへのログインIDやPWといった、シナリオの中では変わらない値です。
ですがこういったものには定期的にシステムから変更を求められるタイプのものがあり、そうなると当然シナリオも修正する必要が出てきます。
その際に、変数を使っていないとログインIDやPWを使っているノードを探すのはちょっとした手間になります。
変数を使っていれば、変数一覧で該当の変数を見つけて初期値を修正するという作業のみで済むため、直値の場合に比べてメンテナンスの時間をかなり短縮することができます。
ログインID以外にも、例えばWebEDIのURLや、フォルダパスなども同じ理由で変数にしておくと管理がしやすくなり、メンテナンスすることになっても手間を省くことができるのでおススメです。
3.さいごに
いかがでしょうか。
『変数』に手こずっていた頃を思い出しながら、どのように使えるようになったのかをお話させていただきました。
インターネット上にも『変数』の説明はいくらでも出てきますので、自分にとってしっくりくる説明が見つかるまで探してみていただくのも手だと思います。
また、時間はかかりますが私の様に使わずに乗り切る+どうしようもない場合だけ変数に切り替えていくという風に少しずつ慣れていってもいいと思います。
変数を使えるようになると、シナリオ作成の自由度が格段に向上しますのでどんどん使っていただきRPA活用を更に広げていってくださいね!
最後までお読みいただきありがとうございました。
また次回お楽しみに!
▼こちらもおすすめ