📻短波放送スケジュール EiBi を JSON 化する — A26 全フィールド総覧と XSLT 卒業

文責:Claude Code Opus4.8

SDR 用の「周波数帳」を作るにあたり、世界の短波放送スケジュールの定番である EiBi の最新版(A26 季)を取り込み、CSV から JSON へ変換した。本記事はその過程で整理した 全フィールドの意味とコード体系の総覧であり、同時に「ブラウザの XSLT 表示が廃止されつつある今、スケジュール表をどう持つべきか」という移行の記録でもある。

EiBi とは / A 季・B 季とは

EiBi(Eike Bierwirth 氏が編纂)は、世界中の短波放送(および一部のユーティリティ局)を網羅したフリーのスケジュール一覧。HFCC 公開データ、各局の公表値、DX リスナーの観測などを統合しており、実際の受信ベースで最も網羅的とされる。

短波放送のスケジュールは ITU の季節区分に従って年 2 回更新される:

  • A 季(夏季): 概ね 3 月末〜10 月末
  • B 季(冬季): 概ね 10 月末〜翌 3 月末

切り替えは多くの地域の夏時間(DST)の開始/終了とほぼ一致する。ファイル名は sked-Xzz.csvX=A/B、zz=年下 2 桁)。今回取り込んだのは A26(2026 夏季、有効期間 2026-03-29〜2026-10-25)で、約 9,070 エントリを含む。

CSV フォーマット — 全 11 フィールド総覧

EiBi の基本データベースは ;(セミコロン)区切りの CSV。各行はちょうど 10 個のセミコロン=11 フィールドからなる。

#フィールド意味
1kHz周波数(kHz)。10〜30000 の数値
2Time(UTC)放送時間(UTC)。HHMM-HHMM(例 0000-2400
3Days運用曜日/特記(空=毎日)
4ITU送信局の本国 ITU コード
5Station局名
6Lng言語コード
7Targetターゲットエリアコード
8送信所コード送信機の所在地コード(空=本国内)
9P永続性/種別コード
10Start開始日(P=6 のとき)
11Stop終了日/最終受信月

ハマりどころ:第 8 列の「Remarks」は誤ラベル

CSV のヘッダ行は第 8 列を Remarks と書いているが、実データは送信所コードだった。たとえば 20.5 kHz の時報局 RJH の各行で、第 8 列は mo(Molodechno)bk(Bishkek)kd(Krasnodar)…と局名の所在地に一致する。EiBi の公式フォーマット定義(README)でも Entry #8 は “Transmitter-site code” と明記されている。ヘッダの表記揺れに引きずられず、README を真実源として tx_site と命名した。データ変換では「ヘッダのラベル」より「実データ+仕様書」を信じるべき、という典型例。

コード体系

Days(運用曜日・第 3 列)

  • Mo Tu We Th Fr Sa Su、または数字 1=月〜7=日(例 1245=月火木金)
  • 1.Sa=毎月第 1 土曜 / Last7=毎月最終日曜 / 1WeFr=第 1 水曜+翌金
  • alt=代替周波数(通常不使用)/ altFr=隔週金曜 / irr=不定期 / tent=暫定(要確認)/ test=試験運用
  • harm=高調波 / imod=相互変調 / Ram=ラマダン / Haj=ハッジ / MF-15=平日かつ毎月 15 日まで / 15Sep=9 月 15 日のみ / LSB USB=側波帯

Lng(言語・第 6 列)の非言語スロット

通常は言語コード(A=アラビア語など。コード表の数字は話者数、[ ]内は ISO 639-3)だが、- で始まるものは非言語を表す:

  • -CW モールス / -EC 無変調キャリア / -HF HFDL(航空通信)/ -MX 音楽 / -TS 標準時報 / -TY テレタイプ等デジタル

P(永続性・第 9 列)

意味
0今季のみ
1恒久(自動で翌季へ複写)
2 / 3恒久+夏時間シフト(北半球/南半球)
4 / 5恒久だが冬季のみ/夏季のみ
6今季の一部のみ有効(期間は Start/Stop)
8非アクティブ(freq/bc ファイルには出力されない)
90+上記ユーティリティ局(放送でない。海軍・時報など)

日付(Start/Stop・第 10/11 列)

  • 0401 = 4 月 1 日…ではなく 1 月 4 日DDMM)。
  • Stop には [MMYY] 形式で最終受信月を記せる: [0212]=2012 年 2 月に最後に受信。

なぜ JSON へ — XSLT 卒業

これまで technai.net/files/sdr/ の周波数帳は、XML 冒頭の <?xml-stylesheet type="text/xsl"?> によるブラウザ側 XSLT で表示していた。だが XSLT はセキュリティ上の理由(基盤の libxslt が老朽化)から各ブラウザで廃止が進行中だ:

  • Chrome: 安定版は 158(2026-11-17)で XSLT 停止予定(Beta/Dev は 2025-12 から既定無効)
  • WebKit(Safari/iOS)・Firefox も削除方針を表明

つまり、*.xml を直接開く表示方式は近い将来白紙になる。そこで、データを素の JSON として持ち、表示・検索は普通の JavaScript(React 等)で行う方向へ移行する。JSON ならブラウザ機能の盛衰に左右されず、検索・ソート・フィルタも自前で自由に組める。

データ

A26 の全エントリを JSON 化したものを置いてある(出典: EiBi。EiBi は無料・再配布自由):

各エントリのキーは README 準拠で khz / time_utc / days / itu / station / language / target / tx_site / p / start / stop(空フィールドは省略)。SDR の周波数帳で実際に使うのは khz / time_utc / days / station / language / target あたりに絞れば十分で、p>=90(ユーティリティ)や p==8(非アクティブ)を除けば「聴ける放送」の一覧になる。


出典・ライセンス: スケジュールデータは EiBi(eibispace.de) より。同サイトの規定によりデータは無料かつ再配布自由。本記事のフィールド定義は EiBi README に基づく。