0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎓 GAS:反復(くり返し)を「日本語アルゴリズム → コード」で身につける

0
Last updated at Posted at 2025-12-07

GAS(Google Apps Script)を始めたての初学者がつまずきやすいのが、

  • 同じ処理を何回もくり返したい
  • for 文の仕組みがよく分からない
  • 「初期化」「条件式」「増減式」って何?
  • while 文との違いは?
  • ネスト(入れ子)for が難しい

この記事では、**「反復(for / while)のイメージをしっかりつかむ」→「実際に書ける」**を目的に進めます。


1. 反復(くり返し)とは?

「反復」とは、同じ処理を何回も自動でくり返す仕組みです。

🧠 日常のイメージ

  • 腕立て伏せを10回くり返す
  • 1ページ目から10ページ目まで読む
  • 駅から家まで 20 歩く

プログラミングでは、これを for 文や while 文で表現します。


2. 基本の for 文(超重要)

もっともよく使う反復が for 文 です。

for (let i = 0; i < 5; i++) {
  Logger.log(i);
}

読み下し(初心者向け)

部分 意味
let i = 0 カウンター変数 i を 0 からスタート(初期化)
i < 5 i が 5 未満のあいだくり返す(条件式)
i++ 1回終わるごとに i を 1 ずつ増やす(増減式)

👉 0,1,2,3,4 の5回くり返すという意味になります。

イメージ:

「数える係の i を 0 から出発させ、4 まで 1 歩ずつ進ませる。そのたびに中の処理を実行する」


3. while 文(条件が続く限りくり返す)

while 文は、「条件が true の間ずっとくり返す」タイプ。

let n = 0;

while (n < 3) {
  Logger.log(n);
  n++;
}

読み下し

  • n が 3 未満ならずっとくり返す
  • n が 3 になったら止まる

for と while の違い(初心者向け)

向いている場面
for 「回数が決まっている」くり返し
while 「条件が続く限り」くり返す

4. ネスト(入れ子)の for 文

🔹 ネストとは何か?(まず結論)

ネスト for 文とは、
「外側の for が 1 回動くたびに、内側の for が全部動く」仕組み
です。

👉 これが理解できると、一気に楽になります。


🔸 例のコード(今回の対象)

for (let day = 1; day <= 2; day++) {
  for (let meal = 1; meal <= 3; meal++) {
    Logger.log(day + "日目の " + meal + " 回目の食事");
  }
}

🧠 まず全体像(日本語で一文にすると)

1日目〜2日目まで順番に進み、
各日ごとに「1回目〜3回目の食事」をすべて表示する

つまり、

  • 外側:
  • 内側:食事の回数

という 役割分担 になっています。


🔹 役割の分解(超重要)

外側の for(親)

for (let day = 1; day <= 2; day++)
  • day = 1 から始める
  • 2 日目まで進める
  • 1 日ずつ増える

👉 「今日は何日目か」を管理する係


内側の for(子)

for (let meal = 1; meal <= 3; meal++)
  • meal = 1 から始める
  • 3 回目まで進める
  • 1 回ずつ増える

👉 「その日の何回目の食事か」を管理する係


🔁 実際の処理手順(ここが一番大事)

🟢 ステップ①:外側がスタート

  • day = 1
  • 条件 day <= 2OK

👉 「1日目」に突入


🟢 ステップ②:内側がフルで回る(重要)

この時点で meal が動き始める

内側1回目

  • meal = 1
  • 表示
    👉 1日目の 1 回目の食事

内側2回目

  • meal = 2
  • 表示
    👉 1日目の 2 回目の食事

内側3回目

  • meal = 3
  • 表示
    👉 1日目の 3 回目の食事

meal = 4 になった

  • 条件 meal <= 3false
  • 👉 内側 for 終了

⚠️ ここ重要
この時点で「1日目の処理は全部終わった」


🟢 ステップ③:外側が次へ進む

  • day++ → day = 2
  • 条件 day <= 2OK

👉 「2日目」に突入


🟢 ステップ④:また内側が最初から全部回る

※ ここが初心者が混乱しやすいポイント

meal は毎回 1 にリセットされる

内側1回目

  • meal = 1
    👉 2日目の 1 回目の食事

内側2回目

  • meal = 2
    👉 2日目の 2 回目の食事

内側3回目

  • meal = 3
    👉 2日目の 3 回目の食事

→ 内側終了


🟢 ステップ⑤:外側終了

  • day = 3
  • 条件 day <= 2false
  • 👉 全体終了 🎉

📋 実際に表示される順番(完全版)

1日目の 1 回目の食事
1日目の 2 回目の食事
1日目の 3 回目の食事
2日目の 1 回目の食事
2日目の 2 回目の食事
2日目の 3 回目の食事

👉 「日 → その日の全部」の順番になっているのがポイント


🔑 初心者がつまずくポイント整理

❌ よくある誤解

  • 「day と meal が交互に 1 ずつ進む」
  • 「meal は続きから始まる」

✅ 正しい理解

  • 外側が 1 回動く
  • 👉 内側は毎回 0(または 1)から最後まで全部回る

🧠 頭の中のイメージ(口頭説明向け)

「まず『今日は何日目?』を決める
その日が決まったら、
『朝 → 昼 → 夜』を全部こなす
それが終わったら、次の日へ行く」


🎯 一言で覚えるなら

ネスト for は
『外側が 1 回動くたびに、内側はフルで動く』


5. コメントだけで書く「日本語アルゴリズム」

ここからは、コードを書かずに日本語コメントだけでアルゴリズムを示します。
生徒が自分で GAS に変換する練習用に最適です。


🧪 サンプル①:1〜5 を順番に表示する(コメント版)

function showNumbers()

// ① カウンター変数を 1 から始める
// ② 5 まで 1 ずつ増やしながら表示する
// ③ for 文を使って「1,2,3,4,5」と順に出す

🕒 サンプル②:3 回だけ「おはよう」と表示する(コメント版)

function greet()

// ① for 文で 3 回くり返す
// ② 中で「おはよう」を Logger.log で表示する

💡 サンプル③:while 文で 0〜2 を表示する(コメント版)

function showWhile()

// ① 変数 n を 0 で用意する
// ② n が 3 未満の間 while 文でくり返す
// ③ 中で n を表示し、n を 1 増やす

🎯 サンプル④:九九(2の段)を表示する(ネストなし)

function twoDan()

// ① 1〜9 まで変数 i を動かしながら
// ② 「2 × i = 結果」を表示する

🎮 サンプル⑤:2日 × 3回(朝昼晩)を表示する(ネスト)

function nestedSample()

// ① 外側の for:1日目〜2日目
// ② 内側の for:1回目〜3回目の食事
// ③ 「●日目:●回目の食事」を表示する

6. 回答コード(翻訳版)

🧪 サンプル①:1〜5 を表示

function showNumbers() {
  for (let i = 1; i <= 5; i++) {
    Logger.log(i);
  }
}

🕒 サンプル②:3 回「おはよう」

function greet() {
  for (let i = 0; i < 3; i++) {
    Logger.log("おはよう");
  }
}

💡 サンプル③:while 文の例

let n = 0;

function showWhile() {
  while (n < 3) {
    Logger.log(n);
    n++;
  }
}

🎯 サンプル④:2 の段

function twoDan() {
  for (let i = 1; i <= 9; i++) {
    Logger.log("2 × " + i + " = " + (2 * i));
  }
}

🎮 サンプル⑤:ネスト(2日×3回)

function nestedSample() {
  for (let day = 1; day <= 2; day++) {
    for (let meal = 1; meal <= 3; meal++) {
      Logger.log(day + "日目の " + meal + " 回目の食事");
    }
  }
}

7. まとめ

  • for 文:回数が決まったくり返しに最適
  • while 文:条件が続く限りくり返す
  • ネスト for:組み合わせの処理を作れる
  • カウンター変数 i は「数える係」
  • 初期化、条件式、増減式の3つがセットで動く

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?