Skip to content

マイルデータ管理

概要

ANA・JALの特典航空券に必要なマイル数のデータ構造と、シーズン判定ロジックを定義する。

ANA マイレージクラブ

国内線 特典航空券 必要マイル数

ANA国内線はシーズン(L/R/H)と区間で必要マイルが決まる。

シーズン区分時期の目安
L(ローシーズン)閑散期1月中旬〜2月、4月、12月前半
R(レギュラーシーズン)通常期上記以外
H(ハイシーズン)繁忙期年末年始、GW、お盆、3連休

区間別必要マイル(片道・エコノミー)

区間例LRH
東京 ↔ 大阪5,0006,0007,500
東京 ↔ 札幌6,0007,5009,000
東京 ↔ 福岡6,0007,5009,000
東京 ↔ 沖縄7,0009,00010,500
大阪 ↔ 札幌6,0007,5009,000
大阪 ↔ 沖縄6,0007,5009,000

※ 上記は代表例。正式データはANA公式サイトのマイルチャートを参照。

ANA トクたびマイル

通常より少ないマイルで利用できる期間限定キャンペーン。対象路線・期間は随時変更。

  • 通常の30〜50%のマイルで利用可能
  • 対象便・期間はANA公式サイトで確認が必要
  • 自動取得は困難(手動確認 or スクレイピング)

JAL マイレージバンク

国内線 特典航空券 必要マイル数

JALは「通常マイル」と「JAL国内線特典航空券PLUS」の2種類がある。

通常マイル(片道)

区間例必要マイル
東京 ↔ 大阪6,000
東京 ↔ 札幌7,500
東京 ↔ 福岡7,500
東京 ↔ 沖縄9,000

JAL国内線特典航空券ディスカウント

通常より少ないマイルで利用できる設定期間あり。

区間例ディスカウント
東京 ↔ 大阪4,000
東京 ↔ 札幌5,000
東京 ↔ 福岡5,000
東京 ↔ 沖縄6,000

※ ディスカウントの設定期間はJAL公式サイトで要確認。

データ取得・更新方針

Phase 1(MVP): 手動入力

ANA/JAL 公式サイト
  ↓ 手動確認
マイルチャートJSON / SQL
  ↓ シードデータ
SQLite DB
  • ANA: 公式マイルチャート(PDF/Web)から転記
  • JAL: 公式マイルチャート(PDF/Web)から転記
  • 年1〜2回の更新で十分(マイルチャートは頻繁に変わらない)

Phase 2: 半自動更新

公式サイト → PDFダウンロード → パーサーで抽出 → DB更新

リスクと制約

方法リスク
スクレイピング利用規約違反の可能性、構造変更で壊れる
PDF解析フォーマット変更で壊れる
手動入力人的コスト、更新遅延

推奨: Phase 1 は手動入力。マイルチャートのデータ量は限定的(路線数 × シーズン数)なので手動でも十分管理可能。

シーズン判定ロジック

javascript
function getAnaSeason(date) {
  // seasons テーブルから該当日のシーズンを取得
  const season = db.prepare(`
    SELECT season_type FROM seasons
    WHERE airline = 'ANA'
      AND ? BETWEEN start_date AND end_date
  `).get(date);

  return season?.season_type || 'R'; // デフォルトはレギュラー
}

function getMilesRequired(airline, origin, destination, date, seatClass) {
  const season = airline === 'ANA'
    ? getAnaSeason(date)
    : getJalSeason(date);

  return db.prepare(`
    SELECT miles_required FROM mile_charts
    WHERE airline = ?
      AND origin_code = ?
      AND destination_code = ?
      AND season = ?
      AND seat_class = ?
  `).get(airline, origin, destination, season, seatClass);
}

空港マスタデータ

日本国内の主要空港(約30空港)をシードデータとして準備。

コード名称都市都道府県地方
HND羽田空港東京東京都関東
NRT成田空港成田千葉県関東
CTS新千歳空港札幌北海道北海道
KIX関西国際空港大阪大阪府関西
ITM伊丹空港大阪大阪府関西
FUK福岡空港福岡福岡県九州
OKA那覇空港那覇沖縄県沖縄
NGO中部国際空港名古屋愛知県中部
SDJ仙台空港仙台宮城県東北
HIJ広島空港広島広島県中国
KOJ鹿児島空港鹿児島鹿児島県九州
KMQ小松空港小松石川県北陸
MYJ松山空港松山愛媛県四国
ISG石垣空港石垣沖縄県沖縄
MMY宮古空港宮古島沖縄県沖縄