警報コードの一覧は、PDFではなくZIPの中のExcelにあった
公式が仕様を公開していても、欲しい表がどこにあるかは別問題です。探し当てるまでに踏んだ回り道を書きます。
気象庁は、警報・注意報などの防災情報を機械可読な形式で配信しています。仕様も技術資料として公開されています。ここまでは理想的です。問題は、受け取ったデータに入っている数値コードが何を意味するのかを対応表で引く必要があり、その表がすぐには見つからなかったことです。
それらしいPDFには、欲しい表が無かった
最初に当たったのは、配信資料に関する技術情報として公開されている PDF でした。番号が振られていて、いかにも仕様書です。開いてみると、電文の種別の一覧は載っているのに、警報の数値コードの表は入っていませんでした。
ここが最初の分かれ道です。「公式資料に載っていない」と結論して独自に対応表を作ることもできました。実際、コードと名称の対応は他所の解説記事から拾えます。しかし出典のない対応表を作ると、間違っていても気づけません。警報の種類を取り違えるのは、防災情報を扱ううえで最も避けたい誤りです。
表は、解説資料のZIPに入っていた
探し直したところ、対応表は技術資料としてまとめて配布されている ZIP の中にありました。しかも PDF ではなく Excel の別表で、その中の1シートが数値コードの対応表です。
つまり、必要だったのは「公式が公開しているか」ではなく、「どの配布物の、どの階層に入っているか」でした。仕様が公開されていることと、欲しい情報にたどり着けることは別の問題です。
ZIPから取り出せない、という別の罠
見つけたあとにもう一段ありました。ZIP の中のファイル名を指定して取り出そうとすると失敗します。
原因は文字コードでした。ファイル名が日本語の古い文字コードで格納されており、その文字コードには、2バイト目がバックスラッシュや斜線と同じ値になる文字があります。名前を扱う処理がその値をパス区切りだと解釈してしまい、指定した名前のファイルが見つからない、あるいは別の場所を指してしまいます。
回避策として、ファイル名ではなくファイルサイズで特定して取り出す方法を採りました。一覧を出してサイズを確認し、その大きさのエントリを取り出します。美しくはありませんが確実で、しかも一度取り出せば済む作業なので、これ以上凝る必要はないと判断しました。
「一度きりの作業に、再利用可能な仕組みを作らない」というのも判断のうちです。ここに汎用の文字コード対応を書いても、次に使う機会はありません。
この経験から決めたこと
- コードの対応表は、出典つきで自分のリポジトリに写しておく。 どの配布物のどの別表から取ったか、いつ取得したかを書き添える
- それらしい資料に無かったからといって、無いと結論しない。 同じ機関が複数の形式で配布していることがある
- 取り出せない原因を、まずデータではなく道具に疑いを向ける。 ファイルが壊れているのではなく、名前の扱いが合っていないだけだった
最後の項目は、別の記事にも書いた話とつながります。期待した結果が返らないとき、対象より先に道具を疑うと早く終わります。
なお、この対応表は体系そのものが改定されます。写した表にはどの版から取ったかを明記してあり、版が変われば取り直します。日付の入っていない対応表は、数年後に読むと信用できません。
この記事の元
この記事は、沖縄の気象・防災情報を扱う自動投稿(Bluesky で公開中)の制作で実際にやったことから書き起こしています。 方針そのものは運営方針にまとめています。