📻短波放送スケジュール 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.csv(X=A/B、zz=年下 2 桁)。今回取り込んだのは A26(2026 夏季、有効期間 2026-03-29〜2026-10-25)で、約 9,070 エントリを含む。
CSV フォーマット — 全 11 フィールド総覧
EiBi の基本データベースは ;(セミコロン)区切りの CSV。各行はちょうど 10 個のセミコロン=11 フィールドからなる。
| # | フィールド | 意味 |
|---|---|---|
| 1 | kHz | 周波数(kHz)。10〜30000 の数値 |
| 2 | Time(UTC) | 放送時間(UTC)。HHMM-HHMM(例 0000-2400) |
| 3 | Days | 運用曜日/特記(空=毎日) |
| 4 | ITU | 送信局の本国 ITU コード |
| 5 | Station | 局名 |
| 6 | Lng | 言語コード |
| 7 | Target | ターゲットエリアコード |
| 8 | 送信所コード | 送信機の所在地コード(空=本国内) |
| 9 | P | 永続性/種別コード |
| 10 | Start | 開始日(P=6 のとき) |
| 11 | Stop | 終了日/最終受信月 |
ハマりどころ:第 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 日のみ /LSBUSB=側波帯
Lng(言語・第 6 列)の非言語スロット
通常は言語コード(A=アラビア語など。コード表の数字は話者数、[ ]内は ISO 639-3)だが、- で始まるものは非言語を表す:
-CWモールス /-EC無変調キャリア /-HFHFDL(航空通信)/-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 は無料・再配布自由):
/files/sdr/eibi_a26.json— メタ情報(出典・季・フィールド定義)+ 9,070 エントリ
各エントリのキーは 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 に基づく。