売上分析 & 顧客ポイント管理のコード例
業務システムでよくある「売上分析」と「顧客ポイント管理」に絞って、Python と JavaScript のベストプラクティス例を紹介します。すべて マジックナンバーを避けるために定数化や変数化 を取り入れています。
1. 月次売上の目標達成チェック
Python
MONTHLY_TARGET = 1_000_000 # 月次売上目標(円)
sales = get_monthly_sales()
if sales >= MONTHLY_TARGET:
print("目標達成!")
else:
print("未達成:", sales)
JavaScriptJavaScript
const MONTHLY_TARGET = 1_000_000; // 月次売上目標(円)
const sales = getMonthlySales();
if (sales >= MONTHLY_TARGET) {
console.log("目標達成!");
} else {
console.log("未達成:", sales);
}
JavaScript2. 売上ランキング上位顧客の抽出
Python
TOP_CUSTOMERS_LIMIT = 10 # 上位10人を抽出
customers = get_customers_sorted_by_sales()
top_customers = customers[:TOP_CUSTOMERS_LIMIT]
for customer in top_customers:
print(customer.name, customer.sales)
PythonJavaScript
const TOP_CUSTOMERS_LIMIT = 10; // 上位10人を抽出
const customers = getCustomersSortedBySales();
const topCustomers = customers.slice(0, TOP_CUSTOMERS_LIMIT);
for (const customer of topCustomers) {
console.log(customer.name, customer.sales);
}
JavaScript3. 顧客ポイント付与処理
Python
POINT_RATE = 0.05 # 購入金額の5%をポイント付与
orders = get_orders()
for order in orders:
points = int(order.amount * POINT_RATE)
add_points(order.customer_id, points)
PythonJavaScript
const POINT_RATE = 0.05; // 購入金額の5%をポイント付与
const orders = getOrders();
for (const order of orders) {
const points = Math.floor(order.amount * POINT_RATE);
addPoints(order.customerId, points);
}
JavaScript4. ポイント有効期限チェック
Python
EXPIRY_DAYS = 365 # ポイント有効期限(日数)
points = get_customer_points()
for p in points:
if (today - p.issued_date).days > EXPIRY_DAYS:
expire_points(p)
PythonJavaScript
const EXPIRY_DAYS = 365; // ポイント有効期限(日数)
const points = getCustomerPoints();
for (const p of points) {
const daysPassed = (Date.now() - p.issuedDate.getTime()) / (1000 * 60 * 60 * 24);
if (daysPassed > EXPIRY_DAYS) {
expirePoints(p);
}
}
JavaScript5. 売上トレンド分析(移動平均)
Python
WINDOW_SIZE = 7 # 7日間移動平均
daily_sales = get_daily_sales()
for i in range(len(daily_sales) - WINDOW_SIZE + 1):
window = daily_sales[i:i + WINDOW_SIZE]
avg = sum(window) / WINDOW_SIZE
print(f"Day {i+1}-{i+WINDOW_SIZE}: {avg}")
PythonJavaScript
const WINDOW_SIZE = 7; // 7日間移動平均
const dailySales = getDailySales();
for (let i = 0; i <= dailySales.length - WINDOW_SIZE; i++) {
const window = dailySales.slice(i, i + WINDOW_SIZE);
const avg = window.reduce((a, b) => a + b, 0) / WINDOW_SIZE;
console.log(`Day ${i+1}-${i+WINDOW_SIZE}: ${avg}`);
}
JavaScript✅ ポイントまとめ
- 業務要件に直結する定数名(
MONTHLY_TARGET,TOP_CUSTOMERS_LIMIT,POINT_RATE,EXPIRY_DAYS,WINDOW_SIZE)を使う。 - 単位を明示(円、日、件数、割合)することで誤解を防ぐ。
- マジックナンバーを避けることで、要件変更(例: ポイント率を10%に変更)にも柔軟に対応できる。


