
Java超|配列のlengthと繰り返し処理
配列の数は、Javaに聞けばいい。
lengthを使いこなすと、配列の大きさが変わっても、ループが自然に最後まで巡回できる。
配列は、同じ型のデータをまとめて扱うための便利な仕組みです。
たとえば、5日分の修行時間、戦士たちの訓練回数、1週間分の巡回記録、補給品の残数など、同じ種類の値が並ぶ場面では、配列を使うとデータを整理しやすくなります。
ただし、配列を使うときには、もう1つとても大切な考え方があります。
それが length です。
length は、配列が持っている要素数を表します。
つまり、「この配列には箱が何個あるのか」をJavaに教えてもらうための情報です。
これまでの配列のプログラムでは、for文の条件に 5 のような固定の数字を書くことがありました。
for(int i = 0; i < 5; i++){
処理;
}この書き方でも、要素数が5個の配列なら正しく動きます。
しかし、あとで配列の要素数が7個や10個に増えた場合、for文の条件も一緒に書き直さなければなりません。
もし書き直しを忘れると、増えた分のデータが処理されないことがあります。
そこで役立つのが length です。
for(int i = 0; i < 配列変数名.length; i++){
処理;
}このように書くと、配列の要素数に合わせて、繰り返し回数を自然に調整できます。
ドラゴンボール風にたとえると、配列は「戦士たちの修行記録札が並んだ訓練棚」です。
length は、その棚に「記録札が何枚あるのか」を教えてくれるスカウターのようなものです。
5枚なら5。
7枚なら7。
10枚なら10。
棚の大きさをJavaが確認してくれるので、巡回役のfor文は、その枚数ぶんだけ自然に動けます。
この記事では、配列の長さとは何か、length の使い方、固定の数字を書く方法との違い、for文と組み合わせると便利な理由を、Sample7.java と Sample8.java を使って整理していきます。

配列の長さとは何か
配列には、あらかじめ「何個の要素を持っているか」が決まっています。
この要素の数を、配列の長さといいます。
たとえば、次のような配列があるとします。
int[] reading = {30, 45, 20, 50, 35};この配列には、5つの整数が入っています。
| 添字 | 値 |
|---|---|
| 0 | 30 |
| 1 | 45 |
| 2 | 20 |
| 3 | 50 |
| 4 | 35 |
この場合、配列の長さは 5 です。
ここで大切なのは、最後の添字は 4 だけれど、配列の長さは 5 だという点です。
| 項目 | 値 |
|---|---|
| 要素数 | 5 |
| length の値 | 5 |
| 最初の添字 | 0 |
| 最後の添字 | 4 |
Javaの配列では、添字は 0 から始まります。
そのため、要素数が5個なら、添字は 0、1、2、3、4 になります。
ドラゴンボール風にたとえると、5つの修行記録箱がある棚では、箱の番号札は0番から4番までです。
箱は5個あります。
でも、最後の番号は4番です。
length は「最後の番号」ではありません。
length は「箱が全部で何個あるか」を表します。
length は配列の要素数を表す
Javaでは、配列変数のあとに .length を付けると、その配列の要素数を表せます。
基本の形は次の通りです。
配列変数名.lengthたとえば、reading という配列なら、次のように書きます。
reading.lengthこれは、reading 配列が持っている要素数を表します。
| 書き方 | 表すもの |
|---|---|
| reading[0] | 添字0の要素 |
| reading[1] | 添字1の要素 |
| reading[2] | 添字2の要素 |
| reading.length | reading 配列全体の要素数 |
reading[0] のような書き方は、配列の中の1つの値を取り出します。
一方、reading.length は、配列全体の大きさを表します。
ここは混同しやすいところです。
| 書き方 | 見ているもの |
|---|---|
| 配列変数名[添字] | 指定した場所の値 |
| 配列変数名.length | 配列の要素数 |
ドラゴンボール風にたとえると、reading[0] は「0番の修行記録箱の中身を見る」ことです。
reading.length は「修行記録箱が全部で何個あるかを確認する」ことです。
中身を見るのか。
箱の数を確認するのか。
この違いを分けて考えると、length の役割がぐっと分かりやすくなります。
length は最後の添字ではない
length を学ぶときに特に注意したいのは、length は最後の添字ではないという点です。
たとえば、要素数が5個の配列なら、length の値は 5 です。
しかし、使える添字は 0 から 4 までです。
| 配列の要素数 | length の値 | 使える添字 | 最後の添字 |
|---|---|---|---|
| 3 | 3 | 0, 1, 2 | 2 |
| 5 | 5 | 0, 1, 2, 3, 4 | 4 |
| 7 | 7 | 0, 1, 2, 3, 4, 5, 6 | 6 |
この表から分かるように、最後の添字は length - 1 です。
要素数が5なら、最後の添字は 5 - 1 で 4 です。
要素数が7なら、最後の添字は 7 - 1 で 6 です。
ドラゴンボール風にたとえると、修行記録箱が5個ある棚では、箱の番号が0番から始まるため、最後の箱は4番になります。
length は「5個ある」という数です。
最後の添字は「4番」です。
この2つを同じものだと思わないことが大切です。
図:lengthは要素数、最後の添字はlength - 1

この図が示していること
この図では、reading 配列に5個の要素があることを示しています。
箱の上には 0、1、2、3、4 という添字が付いています。
配列の長さは5なので、reading.length の値は 5 です。
ここから分かることは、length は「箱の数」を表しているということです。
一方、最後の添字は 4 です。
つまり、要素数が5個の配列では、length は 5、最後の添字は length - 1 の 4 になります。
この違いを押さえておくと、for文で配列を安全に処理しやすくなります。
length の基本を確認する
まずは、配列の長さを表示する基本的なプログラムを見ていきます。
ここでは、5日分の精神修行時間を配列に入れて、順番に表示します。
最後に、配列の length を使って、記録が何日分あるのかも表示します。
ファイル名:Sample7.java
class Sample7
{
public static void main(String[] args)
{
int[] reading = {30, 45, 20, 50, 35}; // 5日分の精神修行時間を用意する
for(int i = 0; i < 5; i++){
System.out.println((i + 1) + "日目の精神修行時間は " +
reading[i] + "分です。");
}
System.out.println("精神修行記録は全部で " + reading.length +
"日分あります。"); // 配列の長さを表示する
}
}実行結果は次のようになります。
1日目の精神修行時間は 30分です。
2日目の精神修行時間は 45分です。
3日目の精神修行時間は 20分です。
4日目の精神修行時間は 50分です。
5日目の精神修行時間は 35分です。
精神修行記録は全部で 5日分あります。このプログラムでは、reading 配列に5個の値が入っています。
| 添字 | 値 |
|---|---|
| 0 | 30 |
| 1 | 45 |
| 2 | 20 |
| 3 | 50 |
| 4 | 35 |
そして、最後の表示で reading.length を使っています。
System.out.println("精神修行記録は全部で " + reading.length +
"日分あります。");reading 配列には5個の要素があるため、reading.length は 5 になります。
そのため、実行結果では 5日分あります と表示されます。
reading.length が表しているもの
Sample7.java では、reading.length は配列の要素数を表しています。
int[] reading = {30, 45, 20, 50, 35};この配列には、値が5個並んでいます。
| 値の並び | 要素数 |
|---|---|
| 30, 45, 20, 50, 35 | 5 |
そのため、reading.length の値は 5 です。
ここで、reading[i] と reading.length の違いを整理しておきましょう。
| 書き方 | 意味 |
|---|---|
| reading[i] | 添字 i の要素の値 |
| reading.length | reading 配列の要素数 |
reading[i] は、配列の中身を見ています。
reading.length は、配列の大きさを見ています。
ドラゴンボール風にたとえると、reading[i] は「i番の修行記録札を読む」ことです。
reading.length は「修行記録札が全部で何枚あるかを確認する」ことです。
中身の値と、箱の数は別物です。
Sample7.java ではfor文に固定の数字を使っている
Sample7.java の for文 では、条件に 5 が直接書かれています。
for(int i = 0; i < 5; i++){
System.out.println((i + 1) + "日目の精神修行時間は " +
reading[i] + "分です。");
}この配列は要素数が5個なので、i < 5 でも正しく動きます。
i は次のように変化します。
| i の値 | i < 5 | 扱う要素 |
|---|---|---|
| 0 | true | reading[0] |
| 1 | true | reading[1] |
| 2 | true | reading[2] |
| 3 | true | reading[3] |
| 4 | true | reading[4] |
| 5 | false | 処理しない |
この形なら、reading[0] から reading[4] までを順番に表示できます。
ただし、もしあとで reading 配列の要素数が変わった場合、for文の 5 も書き直す必要があります。
ここが固定の数字を書く方法の注意点です。
固定の数字を書くと修正が必要になる
for文の条件に固定の数字を書く方法は、最初は分かりやすいです。
for(int i = 0; i < 5; i++){
System.out.println(reading[i]);
}しかし、あとで配列の要素数が変わると、困ることがあります。
たとえば、精神修行記録を5日分から7日分に増やしたとします。
int[] reading = {30, 45, 20, 50, 35, 40, 25};このとき、for文が i < 5 のままだと、最初の5個しか表示されません。
| 配列の要素数 | for文の条件 | 結果 |
|---|---|---|
| 5 | i < 5 | 5個すべて表示できる |
| 7 | i < 5 | 最初の5個しか表示されない |
| 10 | i < 5 | 最初の5個しか表示されない |
配列の中身を増やしたのに、for文の条件を直し忘れると、一部のデータが処理されなくなります。
ドラゴンボール風にたとえると、修行記録札が7枚に増えているのに、巡回役の戦士が「5枚だけ確認する」と決めたまま動いている状態です。
6枚目と7枚目の記録札は確認されません。
length を使うとfor文が配列に合わせて動く
固定の数字を書く代わりに、for文の条件に length を使うと、配列の要素数に合わせて自然に繰り返せます。
for(int i = 0; i < reading.length; i++){
System.out.println(reading[i]);
}この書き方では、reading 配列の要素数がそのまま繰り返し条件に使われます。
| reading の要素数 | reading.length | ループ回数 |
|---|---|---|
| 5 | 5 | 5回 |
| 7 | 7 | 7回 |
| 10 | 10 | 10回 |
配列の要素数が変わっても、for文の条件を直す必要がありません。
配列の大きさをJavaが見て、その分だけループしてくれます。
ドラゴンボール風にたとえると、巡回役の戦士が、訓練棚にある記録札の枚数をスカウターで確認してから、全員分を見て回るようなものです。
5枚なら5枚。
7枚なら7枚。
10枚なら10枚。
棚の大きさに合わせて自然に巡回できます。
for文の条件に length を使う
次に、for文の条件に length を使ったプログラムを見ていきます。
ここでは、神殿の仙豆畑に水やりした回数を配列に入れ、配列の長さに合わせて表示します。
ファイル名:Sample8.java
class Sample8
{
public static void main(String[] args)
{
int[] watering = {1, 2, 1, 3, 2};
for(int i = 0; i < watering.length; i++){ // 配列の長さを使って繰り返す
System.out.println((i + 1) + "日目の仙豆畑の水やり回数は " +
watering[i] + "回です。");
}
System.out.println("水やり記録の日数は " + watering.length +
"日です。");
}
}実行結果は次のようになります。
1日目の仙豆畑の水やり回数は 1回です。
2日目の仙豆畑の水やり回数は 2回です。
3日目の仙豆畑の水やり回数は 1回です。
4日目の仙豆畑の水やり回数は 3回です。
5日目の仙豆畑の水やり回数は 2回です。
水やり記録の日数は 5日です。このプログラムでは、for文の条件に watering.length を使っています。
for(int i = 0; i < watering.length; i++){
System.out.println((i + 1) + "日目の仙豆畑の水やり回数は " +
watering[i] + "回です。");
}watering 配列には5個の値が入っているため、watering.length は 5 です。
そのため、i は 0 から 4 まで変化します。
| i の値 | 条件 i < watering.length | 扱う要素 |
|---|---|---|
| 0 | true | watering[0] |
| 1 | true | watering[1] |
| 2 | true | watering[2] |
| 3 | true | watering[3] |
| 4 | true | watering[4] |
| 5 | false | 処理しない |
このように、i < watering.length と書くと、存在する要素だけを安全に順番に処理できます。
図:for文でlengthを使うと配列の最後まで自然に処理できる

この図が示していること
この図では、watering.length が 5 であるため、for文の条件 i < watering.length によって、i が 0 から 4 まで変化することを示しています。
i が 0 のときは watering[0] を処理します。
i が 1 のときは watering[1] を処理します。
同じように進み、i が 4 のときに watering[4] を処理します。
そのあと i が 5 になると、i < watering.length は false になります。
そのため、存在しない watering[5] には進みません。
ここから分かることは、length を使うことで、配列の範囲を超えずに、存在する要素だけを順番に処理できるということです。
length を使うと要素数の変更に強くなる
length の大きな利点は、配列の要素数が変わっても、for文を直さずに済みやすいことです。
たとえば、Sample8.java の watering 配列を、5日分から7日分に増やしたとします。
int[] watering = {1, 2, 1, 3, 2, 2, 1};この場合、watering.length は 7 になります。
for文が次のようになっていれば、i は 0 から 6 まで進み、7個すべての要素を処理できます。
for(int i = 0; i < watering.length; i++){
処理;
}| 配列の中身 | watering.length | 処理される添字 |
|---|---|---|
| 1, 2, 1, 3, 2 | 5 | 0から4 |
| 1, 2, 1, 3, 2, 2, 1 | 7 | 0から6 |
もし for文の条件が i < 5 のままだと、7個あるのに最初の5個しか処理されません。
| 書き方 | 要素数が7個になったとき |
|---|---|
| i < 5 | 最初の5個だけ処理する |
| i < watering.length | 7個すべて処理する |
ドラゴンボール風にたとえると、仙豆畑の水やり記録が5日分から7日分に増えても、length を使っていれば、記録札の枚数に合わせて全部確認できます。
固定の数字だけで巡回していると、増えた分を見落とすことがあります。
固定の数字とlengthの違い
for文で固定の数字を使う方法と、length を使う方法を比べてみましょう。
| 書き方 | 特徴 |
|---|---|
| i < 5 | 要素数が変わると修正が必要 |
| i < 配列変数名.length | 要素数が変わっても対応しやすい |
固定の数字を使う場合、その数字が何を意味しているのか、あとから見たときに分かりにくいことがあります。
for(int i = 0; i < 5; i++){
System.out.println(watering[i]);
}この 5 は、配列の要素数を表しているのか、別の意味の数なのか、コードが長くなるほど判断しづらくなります。
一方、length を使うと、配列の長さに合わせて処理していることがはっきりします。
for(int i = 0; i < watering.length; i++){
System.out.println(watering[i]);
}この書き方なら、「watering 配列の要素数ぶん繰り返している」とすぐに分かります。
| 観点 | 固定の数字 | length |
|---|---|---|
| 意味の分かりやすさ | 数字だけでは意味が見えにくい | 配列の長さだと分かりやすい |
| 要素数変更への強さ | 修正が必要 | 修正が少なくて済む |
| ミスの起きにくさ | 修正漏れが起きやすい | 配列に合わせて動きやすい |
| 読みやすさ | 数字の意味を考える必要がある | 意図が伝わりやすい |
length を使うと、配列の大きさに合わせたループであることが読み手にも伝わりやすくなります。
length を使うと修正が楽になる
プログラムでは、あとからデータの数を変えたくなることがよくあります。
| 変更例 | 起こりやすい修正 |
|---|---|
| 5日分の記録を7日分にする | 配列の値を増やす |
| 3人分の点数を6人分にする | 配列の要素数を増やす |
| 1週間分を1か月分にする | データ数が大きく変わる |
| 補給品の種類を増やす | 配列の中身が増える |
このとき、for文の条件に固定の数字が書かれていると、その数字も一緒に修正する必要があります。
しかし、length を使っていれば、配列の中身を変えるだけで、繰り返し回数も自動的に変わります。
これは、保守しやすいコードを書くうえでとても大切です。
ドラゴンボール風にたとえると、任務記録が増えるたびに巡回回数を手書きで直すのは大変です。
length を使えば、訓練棚の記録札の枚数を確認して巡回できるため、記録が増えても自然に対応できます。
length を使うときの基本形
配列を最初から最後まで処理したいときは、次の形を基本として覚えておくと便利です。
for(int i = 0; i < 配列変数名.length; i++){
配列変数名[i] を使った処理;
}この形では、i は 0 から 配列変数名.length - 1 まで変化します。
たとえば、watering.length が 5 なら、i は 0、1、2、3、4 と変化します。
これは、watering 配列で使える添字とぴったり一致します。
| for文の部分 | 役割 |
|---|---|
| int i = 0 | 最初の添字 0 から始める |
| i < 配列変数名.length | 配列の要素数より小さい間だけ続ける |
| i++ | 次の添字へ進む |
| 配列変数名[i] | 現在の添字の要素を扱う |
この形は、配列を使うJavaプログラムで何度も登場します。
ドラゴンボール風にたとえると、i は巡回番号です。
i が 0 なら0番の記録札、i が 1 なら1番の記録札を確認します。
そして、i が length と同じ値になる前に止まるため、存在する記録札だけを安全に確認できます。
i < 配列名.length と書く理由
for文では、i <= 配列名.length ではなく、i < 配列名.length と書くのが基本です。
理由は、添字が0から始まるからです。
たとえば、要素数が5個の配列では、使える添字は 0 から 4 です。
| i の条件 | i の値 | 結果 |
|---|---|---|
| i < 5 | 0, 1, 2, 3, 4 | ちょうど5個を処理できる |
| i <= 5 | 0, 1, 2, 3, 4, 5 | 存在しない添字5まで進んでしまう |
i <= 配列名.length と書くと、最後に i が length と同じ値になります。
要素数が5なら、i は 5 になります。
しかし、添字 5 は存在しません。
使える最後の添字は 4 です。
だから、配列を先頭から最後まで処理するときは、次の形が自然です。
i < 配列変数名.lengthドラゴンボール風にたとえると、5個の記録箱がある棚では、0番から4番までを巡回すれば十分です。
5番の箱まで行こうとすると、存在しない箱を探すことになります。
length は配列の中身の値ではない
length は、配列の中に入っている値ではありません。
配列が持っている要素数を表す情報です。
たとえば、次の配列を考えます。
int[] watering = {1, 2, 1, 3, 2};この配列の中身は、1、2、1、3、2 です。
一方、watering.length は 5 です。
| 式 | 表すもの | 値 |
|---|---|---|
| watering[0] | 0番の要素 | 1 |
| watering[1] | 1番の要素 | 2 |
| watering[3] | 3番の要素 | 3 |
| watering.length | 要素数 | 5 |
watering.length は、配列のどこかに入っている 5 を取り出しているわけではありません。
配列そのものが持っている「要素数の情報」を表しています。
ドラゴンボール風にたとえると、watering[0] は0番の記録札の中身です。
watering.length は、記録札が全部で何枚あるかを示す棚の情報です。
札の中身と、棚の枚数は別物です。
図:固定の数字ではなくlengthを使うと変更に強くなる

この図が示していること
この図では、固定の数字を使うfor文と、length を使うfor文の違いを示しています。
左側では、配列の要素が7個あるのに、for文の条件が i < 5 のままです。
そのため、0番から4番までしか処理されず、5番と6番は未処理になります。
右側では、for文の条件に watering.length を使っています。
配列の要素数が7個なら watering.length は 7 になるため、i は 0 から 6 まで進みます。
ここから分かることは、length を使うと配列の要素数が変わっても、最後まで自然に処理しやすいということです。
length を使うと配列の範囲外アクセスを防ぎやすい
配列では、存在しない添字を指定すると問題になります。
たとえば、要素数が5個の配列で使える添字は 0 から 4 までです。
watering[5] は存在しません。
for文で i < watering.length と書くと、i は 0 から 4 までしか進みません。
そのため、配列の範囲外に進みにくくなります。
| 条件 | 最後に処理される i | 安全性 |
|---|---|---|
| i < watering.length | length - 1 | 範囲内に収まりやすい |
| i <= watering.length | length | 範囲外に進む |
| i < 固定値 | 配列の要素数と合わない可能性がある | 修正漏れに注意 |
もちろん、length を使っていても、書き方を間違えれば範囲外になることはあります。
でも、配列全体を先頭から最後まで処理したいときは、i < 配列名.length が安全で読みやすい基本形です。
ドラゴンボール風にたとえると、巡回役の戦士が length を確認して「0番から最後の箱まで」と決めて動くので、存在しない箱へ進みにくくなります。
length は配列処理の土台になる
length は、配列を扱ううえでとても大切です。
配列では、値を入れることや取り出すことだけでなく、「何個あるのか」を知ることも重要です。
length を使うと、次のような処理につなげやすくなります。
| 処理 | length の役割 |
|---|---|
| 全要素の表示 | 何回ループするかを決める |
| 合計の計算 | 全要素を順番に足す範囲を決める |
| 平均の計算 | 合計を length で割る考え方につながる |
| 最大値の探索 | 最後の要素まで確認する |
| 条件に合う値の検索 | 全要素を調べる範囲を決める |
今後、配列の合計、平均、最大値、最小値などを扱うときにも、length はよく使います。
ドラゴンボール風にたとえると、length は「訓練棚に記録札が何枚あるか」を確認するための基本情報です。
札の枚数が分かるからこそ、全員分を表示したり、合計したり、最高記録を探したりできます。
length を使うとコードの意図が伝わりやすくなる
length を使う利点は、修正が楽になることだけではありません。
コードの意味が読み取りやすくなることも大きなメリットです。
for(int i = 0; i < watering.length; i++){
System.out.println(watering[i]);
}このコードを見ると、「watering 配列の要素数ぶん繰り返している」とすぐに分かります。
一方、次のように固定の数字だけが書かれていると、5 が何を意味しているのか、少し考える必要があります。
for(int i = 0; i < 5; i++){
System.out.println(watering[i]);
}| 書き方 | 読み手に伝わること |
|---|---|
| i < 5 | 5回繰り返すことは分かるが、配列との関係が見えにくい |
| i < watering.length | watering 配列の長さに合わせていることが分かる |
Javaのコードは、自分だけでなく、未来の自分や他の人が読むこともあります。
そのとき、length を使っておくと、意図が伝わりやすくなります。
length を使うときに押さえたいポイント
length を使うときは、次の点を押さえておきましょう。
| ポイント | 内容 |
|---|---|
| length は配列の要素数を表す | 配列に何個の箱があるかを表す |
| length は最後の添字ではない | 最後の添字は length - 1 |
| 配列変数名.length と書く | 配列名のあとに .length を付ける |
| for文と相性がよい | 配列の要素数ぶん繰り返しやすい |
| 固定の数字より修正に強い | 要素数が変わっても対応しやすい |
| i < 配列名.length が基本 | 0から最後の添字まで安全に進みやすい |
特に大切なのは、length と添字の関係です。
| 配列の長さ | 最初の添字 | 最後の添字 |
|---|---|---|
| length | 0 | length - 1 |
この関係が分かっていると、for文の条件も自然に理解できます。
length を使う習慣をつけよう
配列を扱うときは、要素数を固定の数字で書くよりも、できるだけ length を使う習慣をつけると安心です。
もちろん、学習の初期段階では、i < 5 のように固定の数字を使うと動きが見えやすいこともあります。
ただ、配列の要素数に合わせて処理したい場合は、length を使うほうが自然です。
| 状況 | おすすめの書き方 |
|---|---|
| 配列の要素をすべて処理したい | i < 配列名.length |
| 要素数が変わる可能性がある | i < 配列名.length |
| 学習用に回数を見せたいだけ | 固定の数字でもよいことがある |
| 実用的な配列処理を書きたい | length を使うとよい |
ドラゴンボール風にたとえると、固定の数字を書く方法は「今日は5枚だけ確認する」と決め打ちする巡回です。
length を使う方法は「棚にある記録札の枚数を確認して、その分だけ巡回する」やり方です。
記録札の枚数が変わっても対応しやすいのは、length を使う方法です。
配列のlengthを理解すると、この先の処理が書きやすくなる
length は、配列を実用的に扱うための大切な土台です。
これから先、配列を使って、合計、平均、最大値、最小値、検索などを学ぶときにも、length は何度も出てきます。
たとえば、全員分の修行時間を合計したいなら、配列の最初から最後まで順番に足していく必要があります。
そのとき、どこまで繰り返すかを決めるのが length です。
for(int i = 0; i < training.length; i++){
sum += training[i];
}この形なら、training 配列の要素数がいくつであっても、全要素を順番に処理できます。
ドラゴンボール風にたとえると、length は「修行記録棚の全体を確認するための基本スカウター」です。
何枚の記録札があるか分かるから、全部を巡回できます。
全部を巡回できるから、合計や平均、最高記録の探索へ進めます。
配列を扱うときは、length を「配列の大きさを教えてくれる大切な情報」として意識しておくと、この先のJava学習がかなり楽になります。








