VB.NETの配列(Array)を完全マスター!初心者でも基礎からわかる宣言・初期化ガイド
生徒
「先生、変数の使い方は分かりましたが、データが100個とか1000個あるときはどうすればいいんですか?100個も名前を付けるのは大変そうです……。」
先生
「そんなときに役立つのが『配列(はいれつ)』という仕組みですよ。一つの名前で、たくさんのデータをまとめて管理できるようになります。」
生徒
「まとめて管理!それは便利そうですね。具体的にはどのように使うんですか?」
先生
「それでは、配列の基本的な作り方や使い方を、初心者の方にも分かりやすく解説していきますね!」
1. 配列(Array)とは?
プログラミングにおける配列(はいれつ)とは、同じ種類のデータを一つのグループとしてまとめて扱うための仕組みです。よく例えられるのが、マンションやアパートです。
これまでの「変数(へんすう)」は、一つのデータを入れるための一軒家のようなものでした。名前が一つに対して、住人も一人です。しかし、データが大量になると、「佐藤さんの家」「田中さんの家」「鈴木さんの家」……と、一軒ずつ家を建てて名前を確認するのは非常に手間がかかります。そこで、一つの建物に複数の部屋を作り、「マンションAの1号室」「マンションAの2号室」というふうに、一つの共通した名前と番号(インデックス)で管理するのが配列の考え方です。
VB.NETの配列を使うと、例えばクラス全員のテストの点数や、一週間の天気予報、商品リストなど、関連性のある複数のデータを効率よくプログラムで処理できるようになります。データの管理が楽になるだけでなく、プログラム自体も短くシンプルに書けるようになるという大きなメリットがあります。
2. 配列の宣言:データの箱を用意する
配列を使うためには、まず「これから配列を使いますよ」という宣言(せんげん)が必要です。宣言とは、コンピューターに対して「これくらいの大きさの箱を、この名前で準備してね」と命令することです。VB.NETでは Dim というキーワードを使って宣言します。
ここで重要なルールが一つあります。それは、「配列のサイズ(要素数)」をあらかじめ決める必要があるということです。また、VB.NETの配列の番号(添字:そえじ)は、必ず「0(ゼロ)」から始まるという点に注意してください。もし5つのデータを保存したい場合、番号は0, 1, 2, 3, 4となります。
宣言するときは、データの種類(データ型)も指定します。数字を入れるなら Integer(インテジャー:整数型)、文字を入れるなら String(ストリング:文字列型)といった具合です。
' 5つの整数を入れることができる配列を宣言する
' カッコの中には「最大インデックス」を書くので、4を書くと0~4の計5つになります
Dim scores(4) As Integer
' 3つの名前を入れることができる配列を宣言する
Dim names(2) As String
3. 配列の初期化:中身を詰め込む
配列を宣言しただけでは、箱の中身は空っぽ(または0など)です。そこに具体的なデータを入れることを初期化(しょきか)や代入といいます。宣言と同時に中身を入れる方法もあります。
配列の特定の部屋にアクセスするには、名前の後のカッコの中に番号を書きます。この番号をインデックスと呼びます。何度も言いますが、最初の部屋は1番ではなく「0番」であることに気をつけてくださいね。パソコンの世界では「0」がスタート地点であることが非常に多いのです。これは「オフセット(ズレ)」という考え方が元になっている専門的な知識ですが、初心者のうちは「配列は0から!」と呪文のように覚えておくだけで大丈夫です。
' 宣言と同時に初期化する方法(波カッコ {} を使います)
Dim fruits() As String = {"リンゴ", "バナナ", "オレンジ"}
' 宣言した後に一つずつ代入する方法
Dim weekDays(6) As String
weekDays(0) = "日曜日"
weekDays(1) = "月曜日"
weekDays(2) = "火曜日"
' ...以下続く
4. インデックス(添字)のルールとエラーの注意点
配列を操作する上で、一番つまずきやすいのがインデックス(番号)の扱いです。もし、3つの部屋しかない配列(インデックスが0, 1, 2)に対して、「3番の部屋にデータを入れて!」と命令するとどうなるでしょうか?
結果は、プログラムが「そんな部屋はありません!」と怒って止まってしまいます。これを専門用語で「例外(れいがい)」が発生するといい、具体的には IndexOutOfRangeException(インデックス・アウト・オブ・レンジ)というエラーが表示されます。これは「配列の範囲外ですよ」という意味です。
初心者のうちは、部屋の数と最大の番号が「1つズレている」ことに混乱しがちです。5部屋なら最大番号は4。10部屋なら最大番号は9。常に「個数マイナス1」が最後の番号になると意識しておくと、エラーを未然に防ぐことができます。この感覚を身につけることが、配列マスターへの第一歩です。
[Image showing the relationship between array length and index starting from zero to n-1]5. 配列の要素数を確認する方法
プログラムを作っていると、「この配列には全部でいくつデータが入っているんだっけ?」と確認したくなることがあります。そんなときに便利なのが Length(レングス)プロパティです。
配列名.Length と書くことで、その配列の全体の個数(要素数)を取得できます。例えば、3つのデータが入っている配列なら、数値の「3」が返ってきます。これを使うことで、後で学ぶ「繰り返し処理(ループ)」などと組み合わせて、大量のデータを一気に処理することが可能になります。
Dim colors() As String = {"赤", "青", "黄", "緑"}
' 配列の個数を表示する
Console.WriteLine("色の数は " & colors.Length & " つです")
色の数は 4 つです
6. 配列のサイズを後から変える:ReDimの基本
通常、配列は一度作るとサイズを変えられません。しかし、どうしても後から「あと2部屋増やしたい!」という場面が出てきます。そんな時に使うのが ReDim(リディム)という命令です。
ただし、普通の ReDim を使うと、今まで入っていたデータがすべて消えて、真っさらな状態になってしまいます。中身を残したままサイズだけを変えたいときは、必ず ReDim Preserve(リディム・プリザーブ)と書きます。「Preserve」は「保存する」という意味の英語です。初心者のうちは、データを消さないように Preserve をセットで使う癖をつけておくと安心です。
7. 2次元配列:縦と横の表形式データ
これまで説明してきたのは、データが一列に並んだ「1次元配列」です。しかし、プログラムでは「表」のような縦と横のデータを扱いたいこともあります。これを2次元配列(にじげんはいれつ)と呼びます。
例えば、学校のクラスの座席表や、カレンダー、エクセルのような表データがこれにあたります。宣言するときは Dim table(2, 3) As Integer のように、カッコの中にカンマで区切って数字を2つ書きます。最初の数字が「行(たて)」、次の数字が「列(よこ)」を表します。少し複雑に見えますが、これも基本の配列の応用ですので、まずは一列の配列に慣れてから挑戦してみましょう。
8. 配列を使うときのベストプラクティス
配列を上手に使いこなすためのコツをいくつか紹介します。まず一つ目は、「意味のある名前を付ける」ことです。ただの a や b という名前ではなく、点数なら scores、名前なら userNames のように、複数形の名前にすると「あ、これは配列だな」と一目でわかります。複数形にするのは、データがたくさん入っていることを示すためのプログラミングにおける共通の工夫です。
二つ目は、「同じ型のデータだけを入れる」ことです。VB.NETの配列は、一つの配列に数字と文字を混ぜて入れることは推奨されません。型を統一することで、プログラムの動作が安定し、不具合の少ないコードになります。これらのルールを守ることで、あなた以外の人があなたのプログラムを見たときも、すぐに内容を理解できるようになります。プログラミングは「読みやすさ」がとても大切なのです。
9. 配列を学ぶ上で次に大切なこと
配列そのものについては理解できましたでしょうか。配列は、単体で使うよりも「繰り返し処理(ループ)」と組み合わせて使うことで、真価を発揮します。たとえば、1000個ある点数データを全部足して平均を出す、といった作業は、配列とループがあれば数行のコードで終わります。
また、VB.NETには配列に似た List(リスト)という、もっと自由度の高い「コレクション」という仲間も存在します。まずは基本である今回の配列をしっかりマスターして、「箱がたくさん並んでいる状態」をイメージできるようになりましょう。実際に自分の手でコードを書いて、0番から順にデータを入れて表示させてみる……という練習を繰り返すことで、自然と指が配列の書き方を覚えていきます。失敗を恐れずに、たくさんの配列を作ってみてくださいね!