【2026年7月最新】Java配列完全ガイド|宣言・初期化・要素操作・多次元配列・ArrayListまで徹底解説

Java配列の使い方完全ガイド

「Javaの配列ってどう書くの?」「宣言と初期化の違いが分からない」「ArrayListと何が違うのか混乱している」——Javaを学ぶ上で配列(Array)は最初の壁になりやすいテーマです。しかし基本を一度押さえてしまえば、データ処理のコアとして何度も活用できる重要な知識です。

この記事では、Java配列の宣言・初期化・要素アクセス・要素数取得・for文繰り返し・多次元配列・ソート・ArrayListとの比較まで、非エンジニアでも理解できるレベルで完全解説します。さらにClaude Codeを使った配列処理の自動化まで踏み込み、実業務への応用方法もご紹介します。

代表菅澤 代表菅澤
Javaの配列は「固定長のデータ棚」です。棚の数を最初に決めて、そこに番号付きで物を入れていくイメージ。このイメージさえ掴めれば、宣言から多次元配列まで一気に理解できます。
AI鬼管理山崎 AI鬼管理山崎
今日はJava配列を「ゼロから使えるレベル」まで一緒に解説します。コード例は全て実際に動くものを用意しました。非エンジニアの方も、用語の意味を都度解説しながら進めるので安心してください。
✔️配列の宣言・初期化の2パターン(newとリテラル)を完全理解
✔️インデックス・要素数(length)の使い方
✔️for文・for-each文での繰り返し処理
✔️2次元配列(行列データの扱い方)
✔️Arrays.sortでのソート方法
✔️ArrayListとの違いと使い分けの判断基準
✔️Claude Codeを使った業務での配列自動化
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】Java配列完全ガイド|宣言・初期化・要素操作・多次元配列・ArrayListまで徹底解説
Java配列を完全解説。宣言・初期化・要素数取得・要素追加・多次元配列・ArrayListとの比較・業務での活用・Claude Code自動化まで非エンジニア向けに解説します。

01 配列とは何か(リスト・コレクションとの違い) 「データの棚」をイメージするとすべてが分かる

📚 用語解説

配列(Array):Javaで同じデータ型の複数の値を一つの変数にまとめて格納するためのデータ構造。棚の番号(インデックス)で各要素にアクセスする。配列のサイズは作成時に固定され、後から変更できないのが最大の特徴。

配列を一言で説明すると、「同じ種類のデータを番号付きで並べて管理する箱」です。例えば、5人の社員の点数を管理したい場合、変数を5個作るよりも、5枠の配列を1個作る方がコードがシンプルになります。

方法変数の書き方要素数が増えたとき
変数を個別に宣言int score1, score2, score3 ...変数を追加する必要あり
配列を使うint[] scores = new int[5]サイズ変更(※後述)

配列はデータを「連続したメモリ領域」に格納します。これにより、インデックス番号で瞬時に特定要素にアクセスできる高速なランダムアクセスが可能になります。

📚 用語解説

インデックス:配列の各要素に割り振られた番号(添え字)。Javaの配列は0始まり(0オリジン)で、最初の要素はインデックス0、2番目はインデックス1となる。棚の「番号札」に相当。

1-1. 配列・リスト・コレクションの違い

データ構造特徴主な用途
配列(Array)固定長・高速アクセス・プリミティブ型OK要素数が決まっているデータ
ArrayList可変長・追加削除が容易・オブジェクト型のみ要素数が変わるデータ
LinkedList追加削除が高速・ランダムアクセスは遅い頻繁な挿入・削除
HashSet重複なし・順序なしユニークデータの管理
HashMapキーと値のペア辞書・連想配列的な用途

業務システム開発では、配列とArrayListが最も頻繁に使われます。「要素数が最初から決まっている=配列」「要素数が動的に変わる=ArrayList」というのが基本の使い分けです。

AI鬼管理山崎 AI鬼管理山崎
「配列かArrayListかどちらを使えばいいのか」は初学者がよく迷うポイントです。シンプルな判断基準は「件数が最初から決まっているか否か」。曜日(7件)・月(12件)は配列、フォームから追加されるデータはArrayListが適しています。

02 配列の宣言方法(型[] 変数名) 型と変数名を正しく書くだけでOK

Javaで配列を宣言するには、データ型の後に[](角括弧)を付けます。宣言はあくまでも「この変数は配列を入れる変数です」という宣言であり、この段階ではメモリの確保は行われません。

// 基本的な配列の宣言
int[] scores;           // int型の配列変数を宣言
String[] names;         // String型の配列変数を宣言
double[] prices;        // double型の配列変数を宣言
boolean[] flags;        // boolean型の配列変数を宣言

// 別の書き方(C言語スタイル)
int scores[];           // こちらも有効だがJavaでは非推奨

📚 用語解説

プリミティブ型:Javaの基本的なデータ型。int(整数)、double(小数)、boolean(真偽値)、char(文字)、byte、short、long、floatの8種類。クラスのインスタンスではなく、値そのものを直接格納する。配列はプリミティブ型とオブジェクト型どちらでも使える。

配列の宣言でよく使われる型の組み合わせは以下の通りです。

✔️int[]:整数の配列(社員番号、数量、点数など)
✔️String[]:文字列の配列(名前、住所、カテゴリなど)
✔️double[]:小数の配列(価格、割合、座標など)
✔️boolean[]:真偽値の配列(フラグ管理、チェックボックス状態など)
✔️Object[]:任意のオブジェクトの配列(汎用的に使う場合)
💡命名規則

Java配列の変数名は慣習として複数形にするのが読みやすいコードの第一歩です。score より scores、name より names、price より prices のように複数形にすることで「これは複数のデータを持つ配列」と一目で分かります。

代表菅澤 代表菅澤
宣言と初期化を混同してしまう方が多いです。宣言は「この変数を使います」という宣言だけ。データを入れるスペースを確保するのが初期化です。次のセクションで詳しく説明します。

03 配列の初期化(newとリテラル初期化) 2つのパターンを使い分ける

Java配列の初期化には2つのパターンがあります。「new演算子を使う方法」と「リテラル(初期値)を直接書く方法」です。どちらも最終的に同じ配列ができますが、使う場面が異なります。

3-1. new演算子による初期化

new演算子を使うと、指定したサイズの配列を確保し、各要素にはデフォルト値(int型なら0、boolean型ならfalse、String型ならnull)がセットされます。要素数が決まっているが初期値が未定の場合に使います。

// new演算子で配列を初期化(サイズ5のint配列)
int[] scores = new int[5];
// scores[0]=0, scores[1]=0, scores[2]=0, scores[3]=0, scores[4]=0

// 宣言と初期化を分けて書くことも可能
int[] scores;
scores = new int[5];   // 後から初期化

// 各要素に値を代入
scores[0] = 85;
scores[1] = 92;
scores[2] = 78;
scores[3] = 95;
scores[4] = 88;

📚 用語解説

new演算子:Javaでオブジェクトやデータ構造のメモリ領域を確保するためのキーワード。「new int[5]」は「int型の値を5個格納できる領域を確保してください」という指示。Javaでは配列もオブジェクト扱いになるため、newが必要になる。

3-2. リテラル初期化(初期値を直接書く)

初期値が最初から分かっている場合は、中括弧{}の中に値をカンマ区切りで並べるリテラル初期化が便利です。サイズは自動的に要素数に合わせられるため、new演算子もサイズ指定も不要です。

// リテラル初期化(初期値を直接指定)
int[] scores = {85, 92, 78, 95, 88};

// String型の例
String[] weekdays = {"月", "火", "水", "木", "金", "土", "日"};

// double型の例
double[] taxes = {0.08, 0.10};

// 宣言済みの変数に後からリテラル代入はできない
int[] scores;
scores = {85, 92, 78};   // コンパイルエラー!

// 後から代入する場合はnewが必要
scores = new int[]{85, 92, 78};   // こちらはOK
⚠️よくあるミス

宣言済みの配列変数にリテラル({...})だけで代入しようとするとコンパイルエラーになります。後から代入する場合は必ず「new int[]{...}」のように new 型[] を付けてください。

宣言のみ
int[] scores;
変数の枠だけ作る
new初期化
new int[5]
空の棚を確保
要素代入
scores[0]=85
各棚に値を入れる

リテラル初期化は上記フローを一気に行うショートカットです。値が最初から決まっているなら積極的に使いましょう。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 要素へのアクセスとインデックス インデックスは0始まり——ここを間違えると実行時エラー

配列の各要素にアクセスするには、変数名の後に角括弧[]でインデックス番号を指定します。重要なのはインデックスが0から始まるという点です。要素が5個の配列なら、インデックスは0〜4です。

int[] scores = {85, 92, 78, 95, 88};

// 要素の取得
System.out.println(scores[0]);   // 85(最初の要素)
System.out.println(scores[1]);   // 92(2番目の要素)
System.out.println(scores[4]);   // 88(最後の要素)

// 要素の変更
scores[2] = 80;
System.out.println(scores[2]);   // 80(変更後)

// インデックスに変数を使うことも可能
int idx = 3;
System.out.println(scores[idx]);  // 95
⚠️ArrayIndexOutOfBoundsException(配列の範囲外エラー)

要素数5の配列に対してscores[5]を参照しようとすると、実行時に「ArrayIndexOutOfBoundsException」が発生します。これはJavaで最も頻繁に遭遇するエラーの1つです。「インデックスは0から始まり、最大値は要素数-1」を必ず覚えてください。

📚 用語解説

ArrayIndexOutOfBoundsException:配列の有効なインデックス範囲を超えてアクセスしようとしたときに発生するJavaの実行時例外。コンパイルエラーではなく実行時エラーなので、プログラムが動いている最中に突然クラッシュする。インデックスの境界チェックを怠ると発生しやすい。

AI鬼管理山崎 AI鬼管理山崎
「0始まり」は最初は直感と反するかもしれません。1番目の要素が[0]というのは、C言語の伝統を引き継いでいます。「配列は0から数える」を脳に刷り込む方法として、「インデックスは先頭からの距離(オフセット)」と覚えると理解しやすいです。先頭要素自体は距離0なので[0]になります。

05 配列の要素数(length) scores.length で要素数を取得する

配列の要素数を取得するには、配列変数名.length を使います。メソッドではなくフィールド(プロパティ)なので、括弧()は不要です。これを知らないとfor文でインデックスの上限を書くのに困ります。

int[] scores = {85, 92, 78, 95, 88};

// 要素数の取得
System.out.println(scores.length);   // 5

// 最後の要素へのアクセス(scores.length - 1 がポイント)
System.out.println(scores[scores.length - 1]);   // 88

// String配列の場合も同じ
String[] names = {"田中", "鈴木", "山田"};
System.out.println(names.length);    // 3

📚 用語解説

length(レングス):配列の要素数を表すJavaの組み込みフィールド(プロパティ)。配列名.lengthで参照できる。注意点として、Stringのlength()はメソッド(括弧あり)だが、配列のlengthはフィールド(括弧なし)という違いがある。混同しやすいので注意。

💡length の使いどころ

scores.lengthはfor文のループ上限に使うのが最も典型的な用途です。配列のサイズをハードコーディング(直書き)せずにlengthを使うことで、配列のサイズが変わってもfor文を書き直す必要がなくなります。

// 悪い例:ハードコーディング
for (int i = 0; i < 5; i++) {   // 要素数が変わったら修正が必要
    System.out.println(scores[i]);
}

// 良い例:lengthを使う
for (int i = 0; i < scores.length; i++) {   // サイズが変わっても修正不要
    System.out.println(scores[i]);
}
代表菅澤 代表菅澤
lengthを使う習慣は保守性の高いコードを書く上で重要です。5と決め打ちで書いたコードは、後から要素数が変わったときにバグの温床になります。「magic number(マジックナンバー)を避ける」という原則の具体的実践がlengthの活用です。

06 for文とfor-each文での繰り返し処理 全要素を処理するループの書き方

配列の全要素に対して処理を行うには、for文またはfor-each文(拡張for文)を使います。どちらも配列の繰り返し処理に使えますが、使う場面が異なります。

6-1. インデックス付きfor文

インデックス(i)を使うfor文は、要素の位置(何番目か)を使いたいときや、一部の要素だけ処理したいときに使います。

int[] scores = {85, 92, 78, 95, 88};

// 全要素を順番に出力
for (int i = 0; i < scores.length; i++) {
    System.out.println((i + 1) + "番目のスコア: " + scores[i]);
}
// 出力:
// 1番目のスコア: 85
// 2番目のスコア: 92
// 3番目のスコア: 78
// 4番目のスコア: 95
// 5番目のスコア: 88

// 合計と平均を求める
int sum = 0;
for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
}
double average = (double) sum / scores.length;
System.out.println("合計: " + sum);         // 合計: 438
System.out.println("平均: " + average);     // 平均: 87.6

6-2. for-each文(拡張for文)

for-each文はインデックスが不要な場合に、よりシンプルに書けます。「各要素を順番に取り出して処理する」という意味が明確で、コードが読みやすくなります。

int[] scores = {85, 92, 78, 95, 88};

// for-each文(拡張for文)
for (int score : scores) {
    System.out.println(score);
}
// 読み方: 「scoresの各要素をscoreとして処理する」

// String配列でも同様
String[] names = {"田中", "鈴木", "山田"};
for (String name : names) {
    System.out.println(name + "さん");
}
ループ種別書き方向いている場面
インデックスfor文for (int i = 0; i < arr.length; i++)インデックスが必要・逆順ループ・一部要素処理
for-each文for (型 変数 : 配列)全要素を順番に処理するだけ・コードを短くしたい
💡逆順ループはインデックスfor文で

配列を逆順(末尾から先頭)に処理したい場合は、for-each文では実現できません。「for (int i = scores.length - 1; i >= 0; i--)」のようにインデックスfor文を使います。

AI鬼管理山崎 AI鬼管理山崎
プロのコードを読むと、for-each文が多用されています。理由は「インデックスの管理ミス(ArrayIndexOutOfBoundsException)」が起きないからです。インデックスが不要なら積極的にfor-eachを使いましょう。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 多次元配列(2次元配列) 表・マトリクスデータの扱い方

Javaでは2次元・3次元の多次元配列を扱えます。最もよく使われるのは2次元配列で、表形式のデータ(売上月次表、座席表、ゲームのグリッドなど)を管理するのに便利です。

📚 用語解説

2次元配列:行と列の2軸でデータを管理するデータ構造。「配列の配列」とも言える。matrix[行インデックス][列インデックス]という形でアクセスし、Excelの表のようなデータ管理に使われる。

// 2次元配列の宣言と初期化
int[][] matrix = {
    {1, 2, 3},   // 0行目
    {4, 5, 6},   // 1行目
    {7, 8, 9}    // 2行目
};

// 要素へのアクセス: [行][列]
System.out.println(matrix[0][0]);   // 1(0行0列)
System.out.println(matrix[1][1]);   // 5(1行1列)
System.out.println(matrix[2][2]);   // 9(2行2列)

// 行数と列数
System.out.println(matrix.length);       // 3(行数)
System.out.println(matrix[0].length);    // 3(0行目の列数)

7-1. 2次元配列のnew演算子による初期化

// newで2次元配列を確保(3行4列)
int[][] salesData = new int[3][4];

// 月次売上データの例(3ヶ月 × 4週)
salesData[0][0] = 120;   // 1ヶ月目 1週目
salesData[0][1] = 135;   // 1ヶ月目 2週目
salesData[0][2] = 98;    // 1ヶ月目 3週目
salesData[0][3] = 145;   // 1ヶ月目 4週目
// ...以下略

7-2. 2次元配列の繰り返し処理(二重for文)

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 二重for文で全要素を出力
for (int i = 0; i < matrix.length; i++) {         // 行のループ
    for (int j = 0; j < matrix[i].length; j++) {  // 列のループ
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();  // 改行
}
// 出力:
// 1 2 3
// 4 5 6
// 7 8 9
2次元配列
int[行][列]
表形式データ
外側ループ
i: 行を走査
matrix.length
内側ループ
j: 列を走査
matrix[i].length
要素処理
matrix[i][j]
個別値にアクセス
⚠️ジャグ配列(不規則2次元配列)

Javaの2次元配列は各行の列数が異なる「ジャグ配列(jagged array)」が作れます。matrix[0]とmatrix[1]の列数が違う場合でも動作しますが、処理が複雑になるため、通常は全行の列数を揃えることをお勧めします。

代表菅澤 代表菅澤
2次元配列は最初は難しく見えますが、「Excelの表と同じ」と思えばシンプルです。行番号と列番号で各セルにアクセスする——これだけです。

08 配列のソート(Arrays.sort) 1行で並び替えを実現する標準ライブラリ

Javaには配列をソート(並び替え)するためのArrays.sort()というメソッドが標準ライブラリに用意されています。自分でソートアルゴリズムを実装する必要はありません。

📚 用語解説

Arrays.sort():java.util.Arraysクラスに含まれるソートメソッド。int・double等のプリミティブ型配列には高速なデュアルピボットクイックソート、オブジェクト配列にはTimsortを使用する。使用前に「import java.util.Arrays;」が必要。

import java.util.Arrays;

public class ArraySortExample {
    public static void main(String[] args) {

        // int配列の昇順ソート
        int[] scores = {85, 92, 78, 95, 88};
        Arrays.sort(scores);
        System.out.println(Arrays.toString(scores));
        // 出力: [78, 85, 88, 92, 95]

        // String配列のソート(辞書順)
        String[] names = {"田中", "鈴木", "山田", "佐藤"};
        Arrays.sort(names);
        System.out.println(Arrays.toString(names));
        // 辞書順でソートされる

        // 部分的にソート(インデックス1から3まで)
        int[] data = {5, 3, 1, 4, 2};
        Arrays.sort(data, 1, 4);  // インデックス1〜3をソート
        System.out.println(Arrays.toString(data));
        // 出力: [5, 1, 3, 4, 2]

    }
}

8-1. 降順ソートの方法

Arrays.sort()はデフォルトで昇順ソートです。降順(大きい順)にしたい場合は、プリミティブ型(int[])では一手間必要です。

import java.util.Arrays;
import java.util.Collections;

// Integer配列(オブジェクト型)なら逆順に直接対応
Integer[] scores = {85, 92, 78, 95, 88};
Arrays.sort(scores, Collections.reverseOrder());
System.out.println(Arrays.toString(scores));
// 出力: [95, 92, 88, 85, 78]

// int[](プリミティブ型)の場合は手動で逆転させる
int[] primitiveScores = {85, 92, 78, 95, 88};
Arrays.sort(primitiveScores);
// 昇順ソート後に逆転
for (int i = 0; i < primitiveScores.length / 2; i++) {
    int temp = primitiveScores[i];
    primitiveScores[i] = primitiveScores[primitiveScores.length - 1 - i];
    primitiveScores[primitiveScores.length - 1 - i] = temp;
}
System.out.println(Arrays.toString(primitiveScores));
// 出力: [95, 92, 88, 85, 78]
💡Arrays.toString()の便利さ

配列の内容を確認したいとき、System.out.println(scores)とすると「[I@1b6d3586」のような参照アドレスが表示されます。Arrays.toString(scores)を使うと「[85, 92, 78, 95, 88]」と中身が表示されます。デバッグ時に必須のメソッドです。

AI鬼管理山崎 AI鬼管理山崎
手ソートアルゴリズム(バブルソート、クイックソートなど)は学習として面白いですが、本番コードでは必ずArrays.sort()を使ってください。標準ライブラリは高度に最適化されており、自作より必ず速く安全です。

09 ArrayListとの違い・使い分け 固定長の配列か、可変長のArrayListか

Javaで複数のデータを扱う際、配列と並んでよく使われるのがArrayListです。2つの最大の違いは「サイズが固定か変更可能か」です。

比較軸配列(Array)ArrayList
サイズ作成時に固定・変更不可後から追加・削除が可能
型の制約プリミティブ型OK(int, double等)オブジェクト型のみ(Integer, Double等)
アクセス速度非常に高速(O(1))高速(O(1))※ほぼ同等
追加・削除直接はできない(コピー操作が必要)add()・remove()メソッドで簡単
メモリ効率固定長で無駄がない余分な領域を確保するため少し多い
null格納可能可能
主な用途固定数のデータ(週7日、月12ヶ月等)件数が変動するデータ(ユーザーリスト等)
import java.util.ArrayList;

// 配列(固定長)
int[] fixedArray = new int[5];
fixedArray[0] = 10;
// fixedArray[5] = 60;  // エラー! 範囲外

// ArrayList(可変長)
ArrayList dynamicList = new ArrayList<>();
dynamicList.add(10);
dynamicList.add(20);
dynamicList.add(30);
System.out.println(dynamicList.size());   // 3(sizeメソッドで要素数)
dynamicList.remove(1);                    // インデックス1の要素を削除
System.out.println(dynamicList);          // [10, 30]
dynamicList.add(50);
System.out.println(dynamicList.size());   // 3(また3になった)

9-1. 配列とArrayListの変換

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

// 配列 → ArrayList
String[] array = {"A", "B", "C"};
ArrayList list = new ArrayList<>(Arrays.asList(array));
list.add("D");
System.out.println(list);   // [A, B, C, D]

// ArrayList → 配列
String[] backToArray = list.toArray(new String[0]);
System.out.println(Arrays.toString(backToArray));   // [A, B, C, D]

📚 用語解説

ジェネリクス(型パラメータ):ArrayList<Integer> や ArrayList<String> の<>内に書く型指定のこと。「この ArrayList は Integer 型だけ入れる」と明示することで、型の混入ミスをコンパイル時に検出できる。Java 5以降の標準機能。

💡どちらを使うべきか迷ったら

迷ったらArrayListを使いましょう。現代のJava開発では、件数が最初から固定と確定している場合(月の配列=12固定、週の配列=7固定など)以外は、ArrayListの方が保守しやすいコードになります。パフォーマンスが最優先の場合のみ、プリミティブ型配列を検討します。

代表菅澤 代表菅澤
実務のJavaコードを見ると、ArrayListとStreamAPIの組み合わせが圧倒的に多く登場します。ただし配列も確かに使われます。「両方を知っていて使い分けられる」状態を目指してください。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

10 業務での配列活用例 実際の業務システムで配列がどう使われるか

Java配列は、業務システムの様々な場面で活用されています。単純なデータ格納だけでなく、計算処理・データ検索・集計など多様な用途があります。ここでは実務に近い例を紹介します。

10-1. 月次売上集計

// 月次売上データの集計
int[] monthlySales = {
    150000, 180000, 210000, 190000, 220000, 240000,
    200000, 230000, 260000, 180000, 200000, 350000
};

int totalSales = 0;
int maxSales = monthlySales[0];
int minSales = monthlySales[0];
int maxMonth = 0;

for (int i = 0; i < monthlySales.length; i++) {
    totalSales += monthlySales[i];
    if (monthlySales[i] > maxSales) {
        maxSales = monthlySales[i];
        maxMonth = i + 1;  // 月(1月=1)
    }
    if (monthlySales[i] < minSales) {
        minSales = monthlySales[i];
    }
}

double averageSales = (double) totalSales / monthlySales.length;
System.out.println("年間売上合計: " + totalSales + "円");
System.out.println("月平均売上: " + (int)averageSales + "円");
System.out.println("最高売上月: " + maxMonth + "月(" + maxSales + "円)");
System.out.println("最低売上月: " + minSales + "円");

10-2. 点数のランク判定

// テストスコアのランク判定(配列で閾値を管理)
int[] scores = {85, 52, 93, 67, 78, 41, 99, 74};
String[] grades = {"F", "D", "C", "B", "A", "S"};
int[] thresholds = {0, 40, 60, 70, 80, 90};

for (int score : scores) {
    String grade = grades[0];
    for (int i = thresholds.length - 1; i >= 0; i--) {
        if (score >= thresholds[i]) {
            grade = grades[i];
            break;
        }
    }
    System.out.println("スコア" + score + ": " + grade + "ランク");
}

10-3. 在庫管理での使用例

// 商品在庫チェック
String[] itemNames = {"商品A", "商品B", "商品C", "商品D"};
int[] stockQuantity = {50, 0, 15, 8};
int[] reorderLevel  = {20, 10, 10, 5};  // 発注点

System.out.println("=== 在庫アラート ===");
for (int i = 0; i < itemNames.length; i++) {
    if (stockQuantity[i] == 0) {
        System.out.println("[欠品] " + itemNames[i]);
    } else if (stockQuantity[i] <= reorderLevel[i]) {
        System.out.println("[要発注] " + itemNames[i]
            + "(残り" + stockQuantity[i] + "個)");
    }
}
AI鬼管理山崎 AI鬼管理山崎
業務システムでは複数の配列を「インデックスで揃える」設計がよく使われます。itemNames[i]とstockQuantity[i]が同じ商品を指すように、インデックスを揃えることで関連データをグループとして扱えます。ただし規模が大きくなると管理が難しくなるため、その場合はクラスやMapを使う設計が適しています。
💡配列をクラスで包む設計へ

実際の業務開発では、商品名と在庫数を別々の配列で管理するより、「Productクラス(name, stock, reorderLevel)」のようにクラスに包んでArrayListで管理する設計が一般的です。配列の基礎を学んだ次のステップとして、オブジェクト指向設計を学ぶことをお勧めします。

11 Claude Codeで配列処理を自動化 AIが配列コードの生成・デバッグ・リファクタリングを担う

Java配列の基礎を理解したら、次はClaude Codeを活用して配列処理の自動化・効率化を実現しましょう。Claude Codeは、コードの生成・デバッグ・リファクタリングを対話的に行えるAIコーディングアシスタントです。

📚 用語解説

Claude Code:Anthropic社が提供するターミナルベースのAIコーディングアシスタント。ファイル操作・コマンド実行・コード生成を自律的に行う。JavaのコードをIDEなしでも生成・実行・修正できるため、非エンジニアでも実務的なコードを書けるようになる。

11-1. Claude Codeへの具体的な依頼方法

Claude Codeに配列処理を依頼する際は、具体的なデータ形式・処理内容・出力形式を明示することがポイントです。以下のような依頼が効果的です。

✔️「int配列で月次売上データを持ち、合計・平均・最大値・最小値を計算するJavaコードを書いて」
✔️「String配列の商品名とint配列の在庫数を使って、在庫切れ商品一覧を出力するコードを書いて」
✔️「この2次元配列のデータをCSV形式で出力するコードを書いて」
✔️「ArrayIndexOutOfBoundsExceptionが出ているこのコードのバグを見つけて修正して」
✔️「この配列処理コードをArrayListとStreamAPIを使ってリファクタリングして」

11-2. Claude Codeが得意な配列作業

作業内容Claude Codeに頼む効果
配列の初期化・宣言コード生成データ仕様を伝えるだけで完全なコードを生成
ソート・集計ロジックの実装ビジネスロジックを日本語で説明すると実装してくれる
ArrayIndexOutOfBoundsException対応エラーコードを貼ると原因特定と修正コードを提示
配列→ArrayListへのリファクタリング既存コードを渡すだけで変換案を提示
2次元配列の表形式出力出力形式(表、CSV等)を指定すると実装
単体テストコードの生成メソッドを渡すとJUnitのテストケースを自動生成
# Claude Codeへの依頼例(ターミナルでの入力)
$ claude

> 以下の仕様のJavaコードを書いてください:
> - String配列で商品名(5件)を管理
> - int配列で対応する売価を管理
> - 売価の降順で商品名と売価を出力する
> - メインメソッドを含む完全なクラスとして

# Claude Codeがコードを生成・確認・実行まで行う
代表菅澤 代表菅澤
Claude Codeを使うと、Javaの文法を細かく覚えていなくても「やりたいこと」を日本語で伝えれば動くコードが得られます。配列処理で詰まったとき、エラーメッセージをそのまま貼り付けると原因と修正法を教えてくれます。プログラミング学習のコーチとして最強のツールです。
要件整理
どんなデータを
どう処理したいか
Claude Codeに依頼
日本語で仕様を
説明する
コード生成
完全なJavaコードを
自動生成
実行・確認
エラー時は
自動修正
業務に組み込み
本番システムへ
統合

AI鬼管理では、Claude Codeを活用して業務システムの配列処理・データ集計・自動レポート生成を実践しています。「Javaは書けないけどデータ処理を自動化したい」という方向けに、Claude Codeを使った業務自動化の導入支援を行っています。

AI鬼管理山崎 AI鬼管理山崎
Claude Codeは「Javaができる人がさらに速くなるツール」だけでなく、「Javaを知らない人でも業務コードを作れるツール」になっています。配列処理の自動化を機に、ぜひClaude Codeの活用を検討してみてください。

12 まとめ:Java配列の基礎から業務活用まで 押さえておくべきポイントを最終整理

✔️配列は固定長・同一型のデータを番号付きで管理するデータ構造
✔️宣言は「型[] 変数名」、初期化はnew演算子またはリテラル{}の2パターン
✔️インデックスは0始まり——最後の要素は length-1
✔️lengthフィールドで要素数を取得(メソッドではないので括弧なし)
✔️for文はインデックスが必要な場合、for-each文は全要素を順番に処理する場合
✔️2次元配列は[行][列]でアクセス、二重for文で全要素を処理
✔️Arrays.sort()で1行でソート(import java.util.Arrays が必要)
✔️可変長データにはArrayList、固定長データには配列が適している
✔️Claude Codeで配列コードの生成・デバッグ・リファクタリングを自動化できる

Javaの配列は基礎中の基礎ですが、業務システム開発では繰り返し登場する重要な要素です。基本をしっかり押さえた上で、ArrayListやStreamAPIへと応用の幅を広げていきましょう。

Java配列の業務活用、Claude Codeと一緒に始めませんか

「Javaのコードを書けるようになりたい」「業務データの処理を自動化したい」という方向けに、AI鬼管理ではClaude Codeを使った業務自動化の導入支援を行っています。配列処理から始まるデータ自動化の第一歩を、一緒に踏み出しましょう。

代表菅澤 代表菅澤
プログラミング経験がなくても大丈夫です。Claude Codeと一緒に業務の自動化を進めるサポートをします。まずは無料相談で、どの業務を自動化できるか一緒に考えましょう。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. Java配列の宣言と初期化の違いは何ですか?

A. 宣言は「この変数は配列を格納する変数です」という型と変数名の定義(例: int[] scores;)。初期化はメモリ領域を確保して実際に使えるようにすること(例: scores = new int[5];)。宣言だけした状態では配列は使えず、初期化が必要です。

Q. Javaの配列のインデックスが0から始まる理由は何ですか?

A. インデックスを「先頭要素からの距離(オフセット)」と考えると自然です。先頭要素自体はオフセットが0なので[0]。この設計はC言語の伝統を引き継いだもので、メモリ計算の効率が良い設計です。

Q. ArrayIndexOutOfBoundsExceptionを防ぐ方法は?

A. ループ条件を「i < array.length」にする(i <= array.length は境界外)、インデックスに負の数が来ないようにする、for-each文を積極的に使うことで防げます。また、array.lengthで事前に要素数を確認する習慣も重要です。

Q. 配列のサイズを後から変更できますか?

A. Javaの配列は一度作成するとサイズを変更できません。サイズを変えたい場合は、新しいサイズの配列を作ってコピーするか、最初からArrayListを使うのが適切です。Arrays.copyOf()メソッドを使うと配列のコピーとリサイズが1行で書けます。

Q. 配列とArrayListはどちらを使うべきですか?

A. 要素数が最初から固定なら配列、後から増減するなら ArrayList が適切です。迷ったら ArrayList を選んでおくと保守しやすいコードになります。パフォーマンスが最優先の場合のみ、プリミティブ型配列の使用を検討します。

Q. 2次元配列と1次元配列の使い分けは?

A. 1次元配列は「ひとつの列のデータ(スコア一覧・名前リスト等)」、2次元配列は「表形式のデータ(月×週の売上、行×列のマトリクス)」に使います。表形式でないデータを無理に2次元にするとコードが複雑になるため、データの形に合わせて選んでください。

Q. Claude Codeで配列処理コードを書いてもらうにはどうすればいいですか?

A. ターミナルでclaudeと入力してClaude Codeを起動し、「int配列で○○を管理し、○○を計算するJavaコードを書いて」のように具体的に依頼します。エラーが出た場合はエラーメッセージをそのまま貼り付けると原因と修正法を教えてくれます。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月18日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。