CJ4 (JA77KC) ETE・燃料モデル 較正 まとめ

123F/303GのC510モデルをCJ4(型式C25C)へ。FR24(時間)×CJ4 Performance Manual(燃料)で master の仮値を実測較正。ETE・燃料の即修正に続き、本命の距離連動ブロック燃料モデルを実装。壁打ち記録 2026-07-24 / 実装・法令根拠の確定 2026-07-27。

✔ ETE: cruise_kmh 729 反映済 ✔ 燃料即修正: burn_cruise 1200 / hold 910 反映済 ✔ 距離連動ブロック燃料モデル 実装・本番反映 ◻ ForeFlight 検算(メニュー6レグ提示済)

いまの master C25C(本番反映済み)

ゴールは新規作成でなく、master aircraft_types C25C の「仮値・要校正」を実測へ置換すること。flight-calc は型式パラメータ化済み(cfgFromMaster())で、値を更新すればワーカー再デプロイ不要で即ライブ。

項目旧(仮)新(較正)出所状態
cruise_kmh835729FR24 実効速度反映済 PR#686
burn_cruise_lbph15001200CPP FL410高速巡航反映済 PR#687
burn_hold_lbph900910CPP 低高度実測反映済 PR#687
burn_cruise_lbph(CJ4)不使用距離連動モデルが代替2026-07-27
burn_alt_lbph18001800意図的に据置(下記)結論済 2026-07-27
max_fuel_lb58285828諸元(妥当)据置
alt_kmh370370意図的に据置(下記)結論済 2026-07-27
aircraft.default_taxi_fuel(JA77KC)未設定(既定85)250CJ4実勢・運航規程2-10定義migration 適用待ち
固定分(20/首都圏30)・季節αflight-calcにC510値ハードコード(型式共通)per-type化は別PR

Track A — ETE(時間)完了・反映済

FR24公式APIで 日本CJ4母集団5機(JA77KC/JA11AY/JA01BJ/JA01KJ/JA01RC)の過去1年 583便を収集(全C25C・時刻欠落0)。C510 Model F 手法を適用し、同一空港/短時間/ICAO欠落/明白な訓練を除外した 有効333便で較正。

指標備考
cruise_kmh(実効)729旧835はMAE9.38で過大。グリッド最小≈730
固定分 base / 首都圏18.8 / 21.1 分首都圏はRJTT欠落168便でサンプル痩せ・確度低
季節α冬-1.64 春-1.30 夏-0.19 秋-0.73符号/大小がC510と相似=手法の裏付け
全体MAE6.34分JA77KC限定でも6.37=母集団モデルが有効

cruise_kmh=729は真対気速度(≈835)でなく「固定分を引いた実効速度」。固定分と組で使うもの。反映は cruise_kmh のみ先行。固定分・αはflight-calcがC510値ハードコードのため据置(per-type化は別PR)。

Track B — 燃料即修正 反映済

重要な発見:認証AFM(525C飛行規程)第4章に燃料表は無い。 中身は離陸距離・上昇“勾配/率”・着陸距離=認証性能のみ。燃料計画データは別冊 CITATION CJ4 PERFORMANCE MANUAL (525CPP-03) にある(CLIMB/CRUISE/DESCENT/HOLDING)。これが燃料の一次資料。

用途の確定 → burn_cruise の“正しい向き”

このエンジンの用途は代理店オーダー時のテクラン要否=レンジ判定(飛行高度は入力しない)。判定が効くのは長距離レグ=機体が高高度で効率よく巡航する領域。よって代表値は高高度巡航を採る。短距離のclimb込み実効値(~1450)はレンジ判定には過大で、テクランを過剰要求し直行レグを潰す。

項目採用値根拠(CPP, ISA+0, A/I OFF, TWO ENG)
burn_cruise_lbph1200FL410 高速巡航 ≈1185(FL430≈1090/経済≈790-905)
burn_hold_lbph91014000lb 低高度 ≈910-925

抽出は PyMuPDF の座標ベース再構成でCPPから直接(スクショ不要・数値そのまま)。抽出環境: PyMuPDF/pdftotext 利用可。

本命:距離連動ブロック燃料モデル 設計実装待ち

単一 burn_cruise は「巡航燃費×空中時間」でしか出せず、長距離で高高度=低燃費に飛ぶ実態を捉えられない。レグ距離(→ETE)から巡航FLを自動割当し、climb+cruise+descent のブロック燃料を積むのが本命。高度入力なしで現実的なレンジ判定になる。

レグ距離 → ETE(既存式) 巡航FL自動割当 h=ETE×500, ≤FL450 ブロック燃料(CPP表) 上昇(到達FLまで) + 巡航(残距離÷TAS×FF) + 降下 + taxi 各FLのTAS/FFはCPPから F_Extra → テクラン判定

巡航FL割当ルール(乗員ヒアリング, 2026-07-24)

cruise_FL(ft) = min( ETE(分) × 500 , 45000 ) ※CJ4上限 FL450
ETE20分30分40分60分80分90分↑
巡航FLFL100FL150FL200FL300FL400FL450

既存のETEをそのまま使え、高度入力が要らない。割り当てたFLで CPP の TAS・巡航FF・上昇燃料を引く。

実装した計算(2026-07-27)

適用範囲CJ4(C25C)のみ。C510は blockFuel=null で従来式のまま(回帰確認済)。
大元ファイルmcj-companyapps/frontend/flight-calc/flight-calc.js本番の計算エンジン)。mcj-sales / mcj-reservation のコピーは完全同期(旧コピーは fuelNeed/planDay 欠落の古い版だった)。
データ源CPP 525CPP-03 を PyMuPDF 座標再構成で抽出(手打ち転記なし・生成スクリプト経由)。
CLIMB p6-7(240KIAS/M0.64・ISA・A/I OFF・海面からの累計 [min/nm/lb] × 18高度 × 5重量)/ CRUISE p12-47(各高度の最大巡航推力(1)行・ISA+0 [KTAS/総FF] × 18高度 × 4重量)/ DESCENT p74(NORMAL 2000fpm・12000lb・海面まで [min/nm/lb] × 18高度)
時間の出し方上昇・降下は表の累計値の点引き(重量のみ線形補間、高度は表グリッドにスナップ/分布の仮定なし)。巡航時間だけ「残距離÷KTAS」、残距離=大圏距離−上昇距離−降下距離。
短距離の扱い上昇距離+降下距離がレグ距離を超える場合、収まる高度までグリッドを1段ずつ下げる。
離陸重量満タン前提の搭載燃料から Taxi Fuel を差し引いた重量(運航規程2-10「Taxi Fuel は計画離陸重量には算入しない」)。planDay では持ち越し燃料を反映。
検算未実施 ForeFlight で RJNA-RJFK / RJTT-ROAH 等を突合予定。

場周分の単価 — 唯一の設計判断

ETE と性能表の時間は一致しない。羽田→伊丹なら ETE 63分に対し性能表の profile は35分で、差の28分は ETE の固定分(20/首都圏30分)=SID/STARで大圏より伸びる分+出発ベクター・到着進入。ここは実際に燃料を食う時間なので必ず計上する(落とすと短距離が2割軽くなる)。単価の候補は2つ:

単価RJNA→RJFK(FL370)RJTT→ROIG(FL450)
(a) 低高度burn_hold 910 pph場周 290lb / F_D 1633場周 366lb / F_D 3173
(b) 巡航 ← 採用当該FLの巡航FF場周 467lb / F_D 1809場周 379lb / F_D 3187

(b) を採用(2026-07-27)=安全側。 差が出るのは巡航FFの高い中距離だけで、テクラン判定が効く長距離(FL450)では両案が13lb差に収束する(FL450の巡航FF≈943 ≈ hold 910)。よって判定結果はほぼ同じで、迷うなら重い方。副作用として短距離レグの F_D は実勢より重く出る(羽田→伊丹 1757lb)。単価はコード1行なので、ForeFlight検算後に見直し可能。

法令・規程の根拠(2026-07-27 調査)

「代替燃料の計算高度に法的制約(10000ft等)はあるか」を一次資料で確認した。結論:代替空港までの飛行に高度の指定は無い。高度が明記されているのは待機の1500ftのみ。

区分規定出所エンジンの実装
Mission着陸地までの飛行を終わるまでに要する量施行規則153条距離連動ブロック燃料 F_D
Contingency目的地上空1,500ft で5分 or Mission の5% の多い方運航規程2-10max(F_D×5%, burn_hold×5/60)
Alternate目的地で進入復行を行い代替空港に着陸するまでの量。高度指定なし施行規則153条 / 運航規程2-10burn_alt × (rAlt/alt_kmh)(据置)
Hold代替空港上空450m(1,500ft)で30分(代替選定時)/代替なしIFRは目的地上空1500ftで45分/VFRは巡航高度で30(昼)45(夜)分施行規則153条 / 運航規程 表2-1burn_hold × 30/60
TaxiEngine始動から離陸までの量。計画離陸重量には算入しない運航規程2-10F_Taxi=250lb、離陸重量から控除
burn_hold=910 は偶然でなく規定そのものの値だった。 CPP の HOLDING表(p77)には 1,500ft の列があり、14,000lb / 1,500ft / A/I OFF = 910 pph ちょうど。前回較正した値が、規程の「代替空港上空1500ftで30分待機」の条件と完全一致していた。Contingency の5分も同じ単価で規程どおり。

burn_alt / alt_kmh を据え置く理由:高度制約が無い=裁量だが、規程の Alternate Fuel は進入復行(go-around)込みの定義で、ブロック燃料モデルは進入復行を含まない。現行式は代替220kmで1,071lb、ブロック燃料換算だと777lb。差の約300lbが実質そのgo-aroundカバーになるため、緩めずに据え置く。max_fuel_lb 5,828 は諸元(usable fuel)で較正不要。

結果(4名+荷物40kg・満タン・代替自動・7月)

区間距離巡航FL旧 F_D新 F_Dうち場周F_Extra判定
RJTT→RJOO 羽田→伊丹404kmFL310126117578503152OK
RJNA→RJFK 名古屋→鹿児島691kmFL370153218094672886OK
RJTT→RJCC 羽田→新千歳820kmFL450195117514062715OK
RJTT→ROAH 羽田→那覇1555kmFL450314826923871225OK
RJTT→ROIG 羽田→石垣1939kmFL450377731873791277OK
ROAH→RJCC 那覇→新千歳2242kmFL45041043443240939OK(旧はテクラン)

短距離は場周分が効いて旧より重く、長距離は高高度の低燃費が効いて 12〜16% 軽い。判定が変わるのは 那覇→新千歳(テクラン必須→直行OK)の1本で、これが本来の狙い。閾値 ex_ok/ex_may/ex_tech=800/600/700 は据置(2026-07-27 判断)。
※この表は実装時点の値。代替空港は PR#693(CJ4 必要滑走路長 1500m・「必要長以上OK」へ統一)の前の選定によるため、F_Extra は下の検算メニュー表が最新。

ForeFlight 検算メニュー(距離別6レグ)未実施

下表は本番API /api/feasibility の実出力(JA77KC・4名+荷物40kg=ペイロード1,025lb・満タン F_TOT 5,828lb・代替自動・7月・#691/#693 反映後 2026-07-27)。 同条件で ForeFlight を引き、F_D と ETE を突き合わせる。距離帯を散らして、巡航FLが FL310 / FL370 / FL450 に分かれるよう選定した。

#区間距離巡航FLETEF_D
(上昇/巡航/降下/場周)
代替空港F_ALTF_Extraテクラン判定
1RJTT→RJOO
羽田→伊丹
404km
218nm
FL310
449kt/1882pph
63分
block 99
1,757
419/294/193/850
神戸
26km
1263,152直行OK
2RJNA→RJFK
名古屋→鹿児島
691km
373nm
FL370
438kt/1463pph
77分
block 107
1,809
506/607/229/467
宮崎
69km
3372,886直行OK
3RJTT→RJCC
羽田→新千歳
820km
443nm
FL450
390kt/943pph
98分
block 148
1,751
752/330/263/406
丘珠
46km
2223,062直行OK
4RJBE→RJCC
神戸→新千歳
1,064km
575nm
FL450
390kt/943pph
108分
block 138
1,914
752/650/263/249
丘珠
46km
2222,891直行OK
5RJTT→ROAH
羽田→那覇
1,555km
840nm
FL450
390kt/943pph
157分
block 197
2,692
752/1290/263/387
徳之島
220km
1,0711,225直行OK
6ROAH→RJCC
那覇→新千歳
2,242km
1,211nm
FL450
390kt/943pph
205分
block 245
3,443
752/2188/263/240
丘珠
46km
2221,285直行OK
旧モデルはテクラン必須

全レグ共通:F_Taxi 250lb / F_Hold 455lb(910pph×30分)/ F_TOT 5,828lb。F_Cont は 88 / 90 / 88 / 96 / 135 / 172lb(Mission5% と 1500ft5分の大きい方)。F_Extra = F_TOT −(F_Taxi+F_D+F_Cont+F_ALT+F_Hold)、判定は OK≥800 / 可能性≥600 / 未満はテクラン必須。

何を見るか — 場周分の単価が唯一の判別点

#区間採用(b) 巡航FF(a) 低高度910pph なら判別力
2名古屋→鹿児島1,8091,633176最大。ここだけ見れば決まる
1羽田→伊丹1,7571,317440差は最大だが短距離は判定に影響しない
3羽田→新千歳1,7511,73714ほぼ無し(FL450)
4神戸→新千歳1,9141,9059ほぼ無し(FL450)
5羽田→那覇2,6922,67913ほぼ無し(FL450)
6那覇→新千歳3,4433,4358ほぼ無し(FL450)
判定の仕方
#2 名古屋→鹿児島1,750〜1,850lb なら現状(b)のまま確定。1,600〜1,700lb なら場周分の単価を(a) burn_hold 910pph へ戻す(flight-calc.jsfMnvr 1行)。
#3〜#6(FL450勢)は(a)(b)で 10lb 前後しか違わないので、モデル全体(上昇・巡航・降下の積み方)の妥当性を見る用。ここがForeFlightと5%以内なら性能表の引き方は正しい。
#1 羽田→伊丹は(b)が実勢より重く出ると予想される区間。ただし短距離は F_Extra が潤沢で判定に影響しないため、ズレても許容範囲。
ETEも同時に確認できる(#691は燃料のみ変更、ETEは #686 の cruise_kmh=729 実測較正のまま)。

突き合わせる相手は ForeFlight のトリップ燃料(taxi を除く、離陸→着陸)。本モデルの F_D も taxi を含まない。条件は ISA・A/I OFF・無風(本モデルの性能表がその条件)なので、ForeFlight側も可能なら風なしで引くと比較しやすい。代替空港は #693 で CJ4 の必要滑走路長が 1500m・「必要長以上OK」に変わった後の選定(丘珠1,500mが新千歳の代替として成立)。

決定ログ

項目決定理由
ゴールmaster C25C仮値の実測較正(ETE+燃料)flight-calcは型式パラメータ化済でコード改修不要(燃料本命を除く)
ETE母集団日本CJ4 5機+77KC(583便)77KC単体は母数不足。固定分/風は日本空域が必要
ETE反映cruise_kmh 729 のみ先行固定分/αはC510値ハードコード=per-type化は別PR
燃料一次資料CJ4 Performance Manual(525CPP)認証AFMに燃料表は無い
燃料エンジンの用途テクラン要否=レンジ判定(高度入力なし)判定が効くのは長距離=高高度効率巡航の領域
burn_cruise即修正1500→1200(高高度巡航)短距離climb込み実効値はレンジ判定に過大
巡航FL割当h=ETE×500ft, ≤FL450乗員ヒアリング。既存ETEを流用でき高度入力不要
距離連動の範囲CJ4のみC510は精度良好で据置
実装先companyapps flight-calc(大元)sales等はここを参照/同期
場周分の単価当該FLの巡航FF(案b)安全側。長距離では案aと13lb差=判定はほぼ同じ(2026-07-27)
代替燃料の高度法的制約なし=現行式を据置153条/規程とも代替までの高度指定なし。差300lbが進入復行分のカバー
F_Taxi85(C510既定) → 250CJ4実勢。CPPにtaxi表は無し。離陸重量には算入しない(規程2-10)
閾値 ex_ok/may/tech800/600/700 据置燃料が正確化した後も運用感覚を変えない(2026-07-27)
降下重量12,000lb 列で固定14,000/10,000列との差は±15lb=無視できる

残作業

  1. ForeFlight 検算:上の検算メニュー6レグを突合。#2 名古屋→鹿児島が判別点。
  2. 済 2026-07-27 master migration 2026-07-27_cj4_taxi_fuel.sql--remote 適用(JA77KC default_taxi_fuel null→250、他機は無変更を確認)。
  3. 済 2026-07-27 mcj-reservation ワーカー デプロイ(/api/feasibility が距離連動モデルで応答することを本番で確認)。companyapps / mcj-sales は Pages 自動デプロイ。
  4. (任意) 固定分(30)/季節α の per-type化 or FR24 /full で欠落168便回復して首都圏補正を確定(Track A精度向上)。

反映メモ:master D1は --remote 必須。aircraft_types の値更新はワーカー再デプロイ不要だが、今回は flight-calc のコード変更を含むため reservation ワーカーは手動デプロイが要る。

MCJ Engineering ・ CJ4 較正まとめ 2026-07-24 / 実装・法令根拠 2026-07-27 ・ 参照: c510-flight-time-model.html / tools/flight-time-analysis / 525CPP-03 / 運航規程 Rev.12 / 航空法施行規則153条