【Unity連載】配列を使いこなそう!



はじめに

今回は、変数を便利に扱うことができる「配列」をご紹介します。
配列ではどの様に「変数を便利に扱うことができる」のか。。。まずは配列が必要となる場面を考えてみましょう。


配列の利便性

例えば、こんな状況を考えてみてください。あなたは学校の先生です。生徒は10人いて、全員のテストの点数をそれぞれ記録し、その点数を「可」か「不可」に評価するプログラムを作成したいとします。これを通常の変数のみで取り扱おうとすると、生徒の人数分、つまり10個の変数が必要となります。実際にプログラムを書くと↓の様になります。

int a = 80 ;
int b = 90 ;
int c = 70 ;
int d = 50 ;
int e = 80 ;
int f = 60 ;
int g = 100 ;
int h = 40 ;
int i = 80 ;
int j = 90 ;
if (a >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (b >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (c >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (d >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (e >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (f >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (g >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (h >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (i >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (j >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
 

変数10個は少し多いですよね。。。ただ、生徒の人数がさらに増えるとさらに多くの変数を用意する必要が出てきます。それは見にくいですよね。そこで「配列」が登場します。配列では1つの箱の中に複数の値を代入することができます。実際にプログラムを書くと↓の様になります。今回は「scores」という名前の箱の中に全生徒の点数を格納しています。

int[] scores = { 80,90,70,50,80,60,100,40,80,90 };
if (scores[0] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[1] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[2] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[3] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[4] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[5] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[6] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[7] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[8] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
if (scores[9] >= 60) {
     Debug.Log( “可” );
} else {
     Debug.Log( “不可” );
}
 

いかがでしょうか?先ほどの書き方では10行もあった変数代入の部分を1行に集約することができましたね。この様に値の扱い方を簡単にすることができるのが「配列」です。


配列の基本的な使い方

先ほどの例で何となく使い方が分かってしまった方もいらっしゃるかもしれませんが、実際の使い方を丁寧に解説していきます。
まず、配列の箱の作り方です。上の例では、配列を作ると同時に変数(初期値)を入れてしまっていますね。この書き方は↓の様になります。

データ型[] 配列名 = {初期値1,初期値2,・・・,初期値n};   //公式
int[] scores = { 80,90,70,50,80,60,100,40,80,90 };       //具体例

↑での[ ]の記号は配列を意味しています。

また、初期値はセットせず、箱のみ作ることもできます。その書き方は↓の様になります。

データ型[] 配列名 = new データ型[要素数]   //公式
int[] scores = new int[10];               //具体例

↑の[ ]内を見ると分かるように、箱を用意すると同時に箱の大きさは確定してしまいます。例えば、上の箱に11個目の要素を入れようをするとエラーになります。

次に、データの取り出し方です。最初の例の中で「scores[0]」という表現がありましたね。これの意味について解説します。これはズバリ、scoresという配列の0番目の要素ということを表しています。つまり、要素を取り出す方法なのですね。もう少し丁寧にお話します。配列の箱の中に入った値には、代入された順に「インデックス」という番号が割り当てられます。これが、箱の中で値が格納されている場所を示しています。配列内の値を取り出す際には、このインデックスを指定します。インデックスは1番ではなく0番から始まり、1ずつ増えていきます。実際の使用例は↓の様になります。

Debug.Log(scores[0]);   //0番目の要素を出力する→80
Debug.Log(scores[7]);   //7番目の要素を出力する→40

おわりに

みなさんいかがでしたでしょうか。配列を用いることによって、データの管理が楽になったことが実感できましたでしょうか?しかし、最初の例の中で、if文をたくさん書いている部分があり、「配列使ってもまだまだめんどいな。。。」と感じられた方もいらっしゃるのではないでしょうか?そうなんです、実はまだ配列の真の力をお見せしきっていないのです。次回は配列の真の力を使い、if文の箇所も一気に減らします。乞うご期待!

 

  • このエントリーをはてなブックマークに追加

PAGE TOP