ここでは 「繰り返し処理でマジックナンバーを避ける」 をテーマに、PythonとJavaScriptで 5つの具体的な課題 を設定し、それぞれのベストプラクティスのコード例を示します。
課題一覧
- リトライ処理(API呼び出し)
- ページ分割処理(バッチサイズ)
- 配列の全要素処理
- 時間単位の繰り返し(秒・分)
- 閾値チェック付きループ
1. リトライ処理(API呼び出し)
Python
MAX_RETRY = 3 # 最大リトライ回数
for attempt in range(MAX_RETRY):
success = call_api()
if success:
print("成功")
break
PythonJavaScript
const MAX_RETRY = 3; // 最大リトライ回数
for (let attempt = 0; attempt < MAX_RETRY; attempt++) {
const success = callApi();
if (success) {
console.log("成功");
break;
}
}
JavaScript2. ページ分割処理(バッチサイズ)
Python
PAGE_SIZE = 50 # 1ページあたりの件数
items = fetch_items()
for start in range(0, len(items), PAGE_SIZE):
batch = items[start:start + PAGE_SIZE]
process_batch(batch)
PythonJavaScript
const PAGE_SIZE = 50; // 1ページあたりの件数
const items = fetchItems();
for (let start = 0; start < items.length; start += PAGE_SIZE) {
const batch = items.slice(start, start + PAGE_SIZE);
processBatch(batch);
}
JavaScript3. 配列の全要素処理
Python
users = get_users()
# マジックナンバーを避けるために len(users) を使用
for i in range(len(users)):
process(users[i])
# さらに良い: for-in で直接要素を扱う
for user in users:
process(user)
PythonJavaScript
const users = getUsers();
// lengthを使う
for (let i = 0; i < users.length; i++) {
process(users[i]);
}
// さらに良い: for...of
for (const user of users) {
process(user);
}
JavaScript4. 時間単位の繰り返し(秒・分)
Python
SECONDS_PER_MINUTE = 60 # 1分 = 60秒
for second in range(SECONDS_PER_MINUTE):
tick(second)
PythonJavaScript
const SECONDS_PER_MINUTE = 60; // 1分 = 60秒
for (let second = 0; second < SECONDS_PER_MINUTE; second++) {
tick(second);
}
JavaScript5. 閾値チェック付きループ
Python
ALERT_THRESHOLD = 80 # 警告を出す閾値
scores = [72, 85, 90, 60]
for score in scores:
if score > ALERT_THRESHOLD:
print("警告:", score)
PythonJavaScript
const ALERT_THRESHOLD = 80; // 警告を出す閾値
const scores = [72, 85, 90, 60];
for (const score of scores) {
if (score > ALERT_THRESHOLD) {
console.log("警告:", score);
}
}
JavaScript✅ まとめ
- 定数化(
MAX_RETRY,PAGE_SIZE,SECONDS_PER_MINUTEなど)で「数字の意味」を明示する。 - データの長さを参照(
len(items),items.length)して固定値を避ける。 - for-in / for-of を使うと「意図が明確」になり、マジックナンバーを減らせる。
👉 これらの課題は「初心者がよく遭遇する場面」を想定しました。
もし「もっと実務的な課題(例: CSV処理やログ監視)」に合わせた例が欲しいなら、その方向でさらに展開できます。


