2019.01.07
開発を進めていく中で、必ず登場する「変数」ってどういうものかご存知でしょうか?
おそらくプログラミング未経験の方にとっては聞きなじみのない言葉だと思います。
私自身も開発を始めるまでは聞いたことすら無かった言葉でした。
今回は未経験でIT業界に入った自分が初期の段階でつまずいた「変数」について、UiPathを使いながらご紹介していこうと思います。
プログラミング言語において、「値を入れておく入れ物」です。
処理の中で
・値をいれる
・値の取り出し
が行えます。
変数に値を格納することを「代入」といいます。
代入にはある決まりがあります。
それは、変数を作成したとき(変数の宣言)に指定したデータ型に対応したものしか代入できません。
?データ型とは?
・String型⇒文字列
例:Hello、トマト、花、あいうえお 等
・Integer型⇒桁数が大きくない整数
例:1、1000 等
・double型⇒小数点
例:3.14、20.589、1.0 等
・boolean型⇒真(True)または偽(False)の真偽値
例:Ture または、False
など上記のもの以外にもたくさんあります。
実際にUiPathで変数を作成してみましょう。
最初に「text」という名前のString型の変数を作成(宣言)します。
アクティビティパネルから「シーケンスアクティビティ」をドラッグします。
次に「変数」をクリックし、「text」という名前のString型の変数を作成します。
先ほど作成したString型の変数 text に「Hello」を代入します。
値の代入には、「Assin(代入)アクティビティ」を使用します。
文字列は “”(ダブルコーテーション)で囲む決まりなので、右辺値の部分に「“Hello”」と入力します。
それでは変数textの中身を実際に確認してみましょう。
メッセージボックスアクティビティに変数名「text」を入力し、実行します。
「Hello」と入力されたメッセージボックスが表示されました。
この時点で変数textは「Hello」が代入されていることがわかります。
すでに「Hello」が代入されている変数 text にさらに「World」を代入したらどうなるでしょう。
次は、すでに値を保持している変数に対しての代入について説明していきたいと思います。
先ほどは空の変数に値「Hello」を代入したのですが、今度はすでに値が代入されている変数に対して代入を行うとどのような結果になるのか試してみます。
先ほどの変数textに「World」を代入し、実行してみましょう。
「World」と入力されたメッセージボックスが表示されました。
このように、同じ変数に対して新しい値を代入すると、古い値は削除され新しい値のみ保持されることがわかりました。
ここまではプログラミングを行っていく中でよく使用されるString型の変数について、実際にUiPathを使用してご紹介しました。
次にString型の変数と同じくらい使用する機会が多い、Integer型(数値)の変数についてご紹介したいと思います。
まず初めに、「2.String型の変数」と同様に、Integer型の変数を作成します。
新しく作成したInteger型の変数 numberに「1」を代入します。
先ほど文字列である「Hello」や「World」を代入する際に、“”(ダブルコーテーション)で値を囲んでいましたが、文字列以外の場合は何も囲まずに代入したい数値や真偽値などを右辺値に入力します。
今回の場合、代入する値は数値なのでそのまま代入したい「1」を右辺値に入力します。
String型の変数の時と同様に、メッセージボックスに今回作成した変数 number を表示させてみましょう。
メッセージボックスに変数名 number を入力したところ、エラー発生してしまいました。
「式 numberの処理中にコンパイルエラーが発生しました。Option Strict OnでIntegerからStringへの暗黙の型変換はできません。」
これは、メッセージボックスがString型(文字列)しか受け付けていないのに、Integer型(数値)の変数 number が設定されてしまったために発生したエラーです。
String型以外の変数は扱えないの・・・?
そんなことはありません。
こうした場合は、Integer型の変数を一時的にString型に変換することで解決できます。
変数名である「number」の後ろに、「.ToString」と入力してください。
先ほどまでのエラーが解決されました。
これはInteger型の変数であるnumberを「ToStringメソッド」を使用して、一時的にString型へ変換したためです。
String型にしたい変数名.ToString
それでは実行してみましょう。
変数numberに代入した「1」が表示されました。
次に計算式や変数と変数の計算について説明していきたいと思います。
変数には「Hello」や「1」などの値だけではなく、計算結果を代入したり、変数同士で計算したりと様々な値を代入できます。
イメージてきには、数学で登場した「x」や「y」と同じ意味です。
それでは先ほど作成したInteger型の変数numberに計算式「1+1」を代入し、実行してみましょう。
1+1の和が変数numberに代入されました。
「4.計算結果を求める」では、数値同士の計算結果をInteger型の変数numberに代入しました。
今回はInteger型の変数同士を計算し、その結果をさらに変数に代入してみましょう。
新たに計算用のInteger型の変数と、計算結果を代入するためのInteger型の変数を用意します。
さらに今回は変数numberとnumber2に初期値を設定してみます。
初期値とは、変数が宣言されたときにここで設定した値が代入されます。
今回はInteger型の変数answerに「number + 10 」の結果を代入しているので、メッセージボックスに「answer.ToString」と入力し、実行してみましょう。
変数numberに「1」が代入されているため、今回の場合は1+10の和である「11」が変数answerに代入されました。
次に変数と変数の計算結果をさらに変数に代入してみようと思います。
変数answerに「number + number2」を代入して、実行してみましょう。
変数numberには「1」が、変数number2には「5」が代入されているため、「1+5」の和である「6」が変数answerに代入されました。
先ほど変数answerには「number + 10」の和である「11」代入されていましたが、今回新しく「number + number2」の和「6」が代入されたため、古い値は削除され新しく「6」が代入されていることがわかります。
「2.String型の変数」でご紹介した、すでに値が代入されている変数に対して代入を行ったときと同様に、Integer型の変数でも同様のことが起こります。
これは、変数は新しい値を保持するようになっているため、変数の型が何であれ新しく代入された値を保持します。
画面から入力された文字列に文字列を連結してメッセージを表示するロボットを作成してみましょう。
アクティビティをパネルより、「シーケンス」をドラッグします。
「変数」をクリックし、
・入力された文字列を格納する、String型の変数 inputText
・表示用の文字列を格納する、String型の変数outputText
を作成します。
ユーザーに入力してもらうための「入力ダイアログアクティビティ」をアクティビティパネルからシーケンス内にドラッグしてください。
入力ダイアログアクティビティをクリックし、プロパティを開きます。
タイトルに「”タイトル”」、ラベルに「”ラベル”」、結果にString型の変数「inputText」を入力します。
入力ダイアログに入力された値と文字列「”が入力されました!”」を連結し、表示用のString型変数に代入します。
まず、代入アクティビティをシーケンスにドラッグしてください。
・左辺値(代入したい変数名)に、表示用のString型変数outputTextを入力
・右辺値(代入する値)に、inputText(入力した値を格納したString型変数) + “が入力されました!” を入力
それでは先ほど作成した表示用のString型の変数outputTextをメッセージボックスに設定し、実行してみましょう。
入力ダイアログが表示され、任意のメッセージを入力してください。
「OK」ボタンを押すと、入力した値が表示されます。
このように、「文字列 + 文字列」をString型の変数に代入すると、前後の文字列が連結されることがわかります。
変数はUiPpathにかぎらず、様々なプログラミング言語において重要な要素だと思うので、しっかり理解して開発を進めていくことが大切だと実際に業務を通して実感しました。
また、代入された変数の動きを想像することで、データの流れや処理の流れの理解がスムーズに進められるようになるかと思います。
これからプログラミングを始める方は変数と代入を理解しておくことをお勧めします。