業務システム特化シナリオとベストプラクティス例
ECサイトや社内管理システムで「繰り返し処理にマジックナンバーを避ける」具体例を Python と JavaScript で示します。
1. ECサイト:注文処理のバッチ分割
大量注文を一度に処理せず、一定件数ごとに分割。
Python
ORDERS_PER_BATCH = 50 # 1バッチで処理する注文数
orders = fetch_orders()
for start in range(0, len(orders), ORDERS_PER_BATCH):
batch = orders[start:start + ORDERS_PER_BATCH]
process_orders(batch)
PythonJavaScript
const ORDERS_PER_BATCH = 50; // 1バッチで処理する注文数
const orders = fetchOrders();
for (let start = 0; start < orders.length; start += ORDERS_PER_BATCH) {
const batch = orders.slice(start, start + ORDERS_PER_BATCH);
processOrders(batch);
}
JavaScript2. 在庫管理:閾値チェック
在庫が一定数を下回ったら補充アラート。
Python
LOW_STOCK_THRESHOLD = 20 # 在庫が20未満なら補充
products = get_products()
for product in products:
if product.stock < LOW_STOCK_THRESHOLD:
send_restock_alert(product)
PythonJavaScript
const LOW_STOCK_THRESHOLD = 20; // 在庫が20未満なら補充
const products = getProducts();
for (const product of products) {
if (product.stock < LOW_STOCK_THRESHOLD) {
sendRestockAlert(product);
}
}
JavaScript3. 社内勤怠管理:遅刻判定
出勤時刻が規定時間を超えたら「遅刻」と判定。
Python
WORK_START_HOUR = 9 # 始業時間 9時
employees = get_attendance_records()
for emp in employees:
if emp.check_in.hour > WORK_START_HOUR:
mark_late(emp)
PythonJavaScript
const WORK_START_HOUR = 9; // 始業時間 9時
const employees = getAttendanceRecords();
for (const emp of employees) {
if (emp.checkIn.getHours() > WORK_START_HOUR) {
markLate(emp);
}
}
JavaScript4. ECサイト:ページネーション
商品一覧を「1ページあたりの表示件数」で分割。
Python
ITEMS_PER_PAGE = 30 # 1ページの商品数
items = fetch_items()
for page in range(0, len(items), ITEMS_PER_PAGE):
show_page(items[page:page + ITEMS_PER_PAGE])
PythonJavaScript
const ITEMS_PER_PAGE = 30; // 1ページの商品数
const items = fetchItems();
for (let page = 0; page < items.length; page += ITEMS_PER_PAGE) {
showPage(items.slice(page, page + ITEMS_PER_PAGE));
}
JavaScript5. 社内システム:定期レポート生成
一定間隔でレポートを作成・送信。
Python
REPORT_INTERVAL_SEC = 3600 # 1時間ごと
MAX_REPORTS = 5
for _ in range(MAX_REPORTS):
generate_report()
time.sleep(REPORT_INTERVAL_SEC)
PythonJavaScript
const REPORT_INTERVAL_MS = 3600 * 1000; // 1時間ごと
const MAX_REPORTS = 5;
let count = 0;
const intervalId = setInterval(() => {
generateReport();
count++;
if (count >= MAX_REPORTS) {
clearInterval(intervalId);
}
}, REPORT_INTERVAL_MS);
JavaScript✅ まとめ
- 定数化で意味を明示(
ORDERS_PER_BATCH,LOW_STOCK_THRESHOLD,WORK_START_HOUR)。 - 業務要件に直結する名前を付けることで、コードを読む人が意図を理解しやすい。
- 単位を含める命名(
SEC,MS,PAGE)で誤解を防ぐ。
👉 これらは ECサイト(注文処理・商品一覧) と 社内管理システム(在庫・勤怠・レポート) に特化した例です。


