Python JavaScript | プログラミングの繰り返し処理でマジックナンバーを避ける方法

JavaScript
スポンサーリンク

実務でよく使うシナリオとベストプラクティス例

ここでは「業務システムやWebアプリ開発でよく遭遇する繰り返し処理」を題材に、PythonJavaScript のコード例を示します。すべて「マジックナンバーを避ける」工夫を取り入れています。


1. CSVファイルをバッチ処理する

大量データを一度に処理せず、一定件数ごとに分割する。

Python

import csv

BATCH_SIZE = 100  # 1回の処理件数

with open("users.csv", newline="") as f:
    reader = list(csv.reader(f))
    for start in range(0, len(reader), BATCH_SIZE):
        batch = reader[start:start + BATCH_SIZE]
        process_batch(batch)
Python

JavaScript

const BATCH_SIZE = 100; // 1回の処理件数
const rows = loadCsv("users.csv");

for (let start = 0; start < rows.length; start += BATCH_SIZE) {
  const batch = rows.slice(start, start + BATCH_SIZE);
  processBatch(batch);
}
JavaScript

2. APIリトライ処理

ネットワークが不安定なときに、一定回数まで再試行する。

Python

MAX_RETRY = 5
TIMEOUT_SEC = 10

for attempt in range(MAX_RETRY):
    if call_api(timeout=TIMEOUT_SEC):
        print("成功")
        break
Python

JavaScript

const MAX_RETRY = 5;
const TIMEOUT_SEC = 10;

for (let attempt = 0; attempt < MAX_RETRY; attempt++) {
  if (callApi(TIMEOUT_SEC)) {
    console.log("成功");
    break;
  }
}
JavaScript

3. ログ監視で閾値チェック

エラーログが一定件数を超えたら通知する。

Python

ALERT_THRESHOLD = 50
error_logs = get_error_logs()

for log in error_logs:
    if log.level == "ERROR":
        error_count += 1
        if error_count > ALERT_THRESHOLD:
            send_alert(error_count)
            break
Python

JavaScript

const ALERT_THRESHOLD = 50;
const errorLogs = getErrorLogs();

let errorCount = 0;
for (const log of errorLogs) {
  if (log.level === "ERROR") {
    errorCount++;
    if (errorCount > ALERT_THRESHOLD) {
      sendAlert(errorCount);
      break;
    }
  }
}
JavaScript

4. ページネーション処理

Web画面で「1ページあたりの表示件数」を決めて繰り返す。

Python

ITEMS_PER_PAGE = 20
items = fetch_items()

for page in range(0, len(items), ITEMS_PER_PAGE):
    show_page(items[page:page + ITEMS_PER_PAGE])
Python

JavaScript

const ITEMS_PER_PAGE = 20;
const items = fetchItems();

for (let page = 0; page < items.length; page += ITEMS_PER_PAGE) {
  showPage(items.slice(page, page + ITEMS_PER_PAGE));
}
JavaScript

5. 定期ジョブ(スケジューリング)

一定間隔で処理を繰り返す。

Python

INTERVAL_SEC = 60  # 1分ごと

for _ in range(10):  # 10回だけ実行
    run_job()
    time.sleep(INTERVAL_SEC)
Python

JavaScript

const INTERVAL_MS = 60 * 1000; // 1分ごと

let count = 0;
const MAX_RUNS = 10;

const intervalId = setInterval(() => {
  runJob();
  count++;
  if (count >= MAX_RUNS) {
    clearInterval(intervalId);
  }
}, INTERVAL_MS);
JavaScript

✅ ポイントまとめ

  • 定数化MAX_RETRY, BATCH_SIZE, ITEMS_PER_PAGE)で数字の意味を明示。
  • データの長さを参照して固定値を避ける。
  • 単位を名前に含めるSEC, MS, PAGE)ことで誤解を防ぐ。

👉 これらは「CSV処理」「API呼び出し」「ログ監視」「ページネーション」「定期ジョブ」といった、実務で頻出するシナリオです。

タイトルとURLをコピーしました