なでしこを使って、日本語でバッチを書こう!

第5回なでしこでバッチ「変数の定義」

前回は、なでしこを使った繰り返しの方法を説明しました。今回は、変数の定義方法を説明します。

今回利用するデータ

今回は、直接データをプログラム内部に持つ事にします。

基本データ
基本データ1とは整数
基本データ2とは文字列
基本データ3とは配列
基本データ1に100を代入。
基本データ2に「あいうえお」を代入
基本データ3に「1
2
3」を代入

基本その1:変数の中身をそのまま表示させる。

変数の中身をそのまま表示させる時は、単に変数を宣言するだけです。

リスト1 変数を使った基本的な表示
基本データとは文字列
基本データ2に「あいうえお」を代入。
基本データ2を言う。
終わる。

このリストを実行すると、以下のようなダイアログが表示されます。

図1 リスト1の実行結果
画像

上記の場合、変数をそのまま表示させています。一番基本的な使い方ですね。

基本その2:配列変数の一部を表示させる

配列変数を使うと、変数の中の一部表示が簡単です。

リスト2 変数の中身の一部を表示
基本データ3とは配列
基本データ3に「1
2
3」を代入。
基本データ3[0]を言う
終わる。

このリストを表示すると、以下のようなダイアログが表示されます。

図2 リスト2の実行結果
画像

なでしこの配列は常に0から始まるので、そこは要注意ですね。この場合0番目が1になりますので、1番目が2、2番目が3となります。配列は、プルダウンメニュー等でよく使われます。

基本その3:文字列の中に表示させる

文字列の中に変数を使って、任意の文字や数字を表示させてみます。

リスト3 文字列に変数を埋め込む
基本データ1とは整数
基本データ1に100を代入
「この商品は{基本データ1}円です。」を言う
『この商品は{基本データ1}円です。』を言う
終わる。

このリストを表示すると、以下のようなダイアログが表示されます。

図3 リスト3の実行結果1(左⁠⁠、リスト3の実行結果2(右)
画像 画像

括弧の使い方に注目してください。リスト3の実行結果1には、きちんと数字が表示されています。これは、文字列を表示させる時は小括弧(⁠⁠)を使ってますが、その中に変数を埋め込む時は中括弧({})を使っているからです。

同じ括弧でも大括弧(⁠⁠)を使うと、中括弧({})の中の変数は展開しませんので注意が必要です。リスト3の実行結果2は典型的な失敗例です。

基本その4:ハッシュで区切る

変数をわかりやすく利用する、少し難しい使い方を紹介しましょう。

リスト4 ハッシュを利用する。
バッチ学校@佐藤は「校長」
バッチ学校@田中は「教頭」
バッチ学校@斉藤は「先生」
バッチ学校を言う
バッチ学校@佐藤を言う
バッチ学校[2]を言う
バッチ学校を配列ソートして言う
終わる。
図4 リスト4の実行結果1(左上⁠⁠、リスト4の実行結果2(右上⁠⁠、リスト4の実行結果3(左下⁠⁠、リスト4の実行結果4(右下)
画像 画像 画像 画像

要素を@で区切ってハッシュを作成する事ができます。この場合、バッチ学校という要素の中に様々な情報が入っているわけですが、@以下を指定する事によって特定の要素を出力できます。

リスト4の実行結果1の「言う」命令では全員の氏名が表示され、
リスト4の実行結果2の「言う」命令では、佐藤さんの役職である「校長」が表示され、
リスト4の実行結果3の「言う」命令では、配列の4行目が表示され、
リスト4の実行結果4の「言う」命令では、配列の内容を整列して人の目で判断しやすく並び替えてから表示してます。なお、6行目の[]は、配列の中の何番目かを指定する時に使う括弧です。

基本その5:グローバルとローカル

変数は非常に便利なものですが、普通に使っているとどんどん増えてしまいます。ですが、プログラムの途中で変数の中身を入れ替えたり、初期化する事も多く、そこで間違うと結果的にプログラムが自分の意図と違う動きをしてしまうケースがよくあります。そこで、変数のスコープ(範囲)を利用して、変数の管理をわかりやすくしようと言うのが目的です。

ただそう言っても、ピンと来ないと思いますので例文で理解してください。

リスト5 変数の実践的な使い方
僕とは文字列
僕に2を代入
僕を言う
私処理
私変数を言う
終わる。

●私処理
 私変数とは整数
 僕を表示
 私変数に3を代入
 私変数を言う
図5 リスト5の実行結果1(左上⁠⁠、リスト5の実行結果2(右上⁠⁠、リスト5の実行結果3(左下)
画像 画像 画像

まず、僕と言う変数に数字の「2」を代入しています。次に僕と言う変数の中身を表示します。それがリスト5の実行結果1のように「2」が表示されます。

ここからが重要なのですが、私処理に注目してください。●が先頭に記述されてますよね? なでしこでは●を先頭に記述する事で、それ以降を関数として扱う事ができます。

●オレ処理
●あなた

基本的に関数名は何でもOKです(例外は、なでしこ側で持っている定数等を指定するとエラーで返されます⁠⁠。私処理の中では、私変数を宣言しています。これがローカル変数となります(リスト5の実行結果2がその結果になります⁠⁠。

関数の中で宣言した変数は、関数の外に出る事はできません。よって5行目の「私変数を表示」では、ローカル変数である「私変数」が普通に考えるとリスト5の実行結果2のように3が表示されるのですが、3を持っている11行目の「私変数」は関数の外に出れないため、5行目の「私変数」は名前は同じですが全く違う別の変数として生成されています(リスト5の実行結果3のように変数内部に何も値を持っていないため、変数名がそのまま表示されています⁠⁠。

逆に関数の外で宣言している変数はグローバル変数であるため、関数の中でも外でも使う事ができます。

簡単なようで、色々な使い方のある変数。まだまだ紹介しきれませんが、基本だけでも抑えられればと思います。

今回、変数の定義について説明しましたが、いかがでしたでしょうか? なでしこについて基本文法は今回でいったん終わります。次回以降は、いよいよ実務に特化した実例(RDBのバックアップやスケジューリングによる各種バッチ)をご紹介して行きますので楽しみにしていてください。

おすすめ記事

記事・ニュース一覧