Common Alert Message Format

きょうは Common Alert Message Format (CAMF) について所感を書きます。準天頂衛星みちびきの災害・危機管理通報サービス(DCR)というのがありまして、その拡張(DCX)のメッセージフォーマットがCAMFです。

みちびきからはすでにCAMFのDCXメッセージが降ってきていて、欧州連合のGalileoの早期警報システム(EWS)もこの共通メッセージフォーマットが使われることになっています。なので、CAMFのデコーダーを実装すればGalileoのEWSも簡単にサポートできるはずです。こういうのは作る側からすると非常にありがたいですね。とはいえ、既存の気象庁の防災気象情報に基づいたDCRのメッセージフォーマットもわかりやすくよくできていました。CAMFはやろうとしてることが壮大な分、少し仕様が複雑です。

仕様の解説は仕様書を見てもらえばいいので、DCR/DCXデコーダーazarashiを実装していて感じたことを書きます。そうです、感想をつらつら書くだけでです、書きたいので。

  • J-AlertとL-Alertに対応
  • DCXではJ-AlertとL-Alertが降ってきます。もうひとつ、municipality-transmitted information [tentative name]というのもDCXで降ってくるのですが、まだ実運用はされていない?のかな?J-AlertとL-Alertは執筆時点でもう降ってきます。CAMFはJ-AlertとL-Alertのみをターゲットに作られているわけではないので、どこから提供された情報かによって判別します。総務省消防庁からの情報ならJ-Alert、マルチメディア振興センターならL-Alertといった具合です。ちなみにazarashiはメッセージタイプを判別して返すクラスを分けています。
    https://github.com/nbtk/azarashi/tree/main?tab=readme-ov-file#dcx-message-types

  • 日本国外からの情報
  • EUと共通フォーマットなだけあって、はじめからメッセージには国を示すフィールドがあり、また国ごととの情報提供元が指定できます。現時点の仕様書ではオーストラリア、フィジー、タイの関係機関のコードが規定されています。
    https://github.com/nbtk/azarashi/blob/main/azarashi/qzss_dcr_lib/definition/qzss_dcx_camf_a3_provider_identifier.py

  • 災害・危機種別
  • これも様々なものに対応しています。Undefined flying objectなんていうのもあります。定義としては不明な飛行物体というだけで、必ずしも宇宙から飛来した謎の飛行物体を指すわけではないです。なお、仕様書上ではすべて英語表記です。日本で使うときには日本語訳が必要でしょう。でも、こういう災害情報は言葉選びが難しいんですよね。現時点では降ってくるメッセージの災害・危機種別を格納するA4フィールドは0(未設定)のことが多いです。改善を期待して待ちましょう。
    https://github.com/nbtk/azarashi/blob/main/azarashi/qzss_dcr_lib/definition/qzss_dcx_camf_a4_hazard_category_and_type.py

  • 市区町村名のローマ字表記
  • これはCAMFは関係無いですが、他のフィールドが英語で市区町村名だけ日本語なのは気持ち悪かったのでローマ字表記のテーブルを作りました。市区町村のローマ字表記って官公庁によってバラバラなんですね。これを御殿場問題と勝手に呼んでいて「GotenbaなのかGotembaなのか」は絶対にこれという決まりは無いんですよ。つまりこの例ではmb、mp、mmルールを適応するかどうかは個別の判断に委ねられます。元をたどれば日本語のひらがなの「ん」の発音はたくさんの種類があるのに文字が一つだけというのが問題ではあります。しかもですね、たとえば日本橋は「Nihombashiにはならない、Nihon-HashiだからNihonbashiだ」みたいな非常にアノイングな問題を内包していまして、筆舌尽くしがたいです。他にも色々あって、高知ならkochiですけど瀬戸内はsetouchiみたいにooやouをoにしてよいかどうかも読んでみないとわからないので全数チェックしました。あと、たとえば箕面市はMinohだと言い張ってます。そういうワガママは許しませんよ。和を乱さないでください。そもそも英語話者は長音に鈍感で日本語話者のように区別できません。Minoですhは不要ですよろしくお願いします。ローマ字表記はふりがなみたいなものです。ふりがなで個性を主張しないでください痛々しいです。被ってる自治体があったとて相手が避けろのメンタルでいてくださいめんどくさいです。それから、おおい町。あなたはOhiを主張していますね。さらに罪深いです。Ohiはどう読んでもオヒですほんとうにありがとうございました。なんでそこにhを入れたら長音になるとおもった?Oh!がオーだから?No!はhがなくてもノーだよねJohnはhがあってもジョンだよねOhioはオーイオだとでも思ってるのオハイオだね中学校から出直してくださいあなたはOiです。今気づいちゃったんだけどもしかして南アルプス市ってMinami-Alps?え、Alpsって英語表記じゃん。日本語と英語の夢のコラボレーションじゃん。あーあ、やってらんないよねほんとなんで英語を混ぜたの?英語ってどこの言葉か知ってる?そのオリジナルの山脈はイギリスを通ってないよ?遠い異国にFujiyama Cityとかできたら苦笑いだよね?そういうことだよ。とにかくワガママは許しません当面はMinamiarupusuです猛省してください。
    https://github.com/nbtk/azarashi/blob/main/azarashi/qzss_dcr_lib/definition/qzss_dcx_camf_ex1_target_area_code.py

  • 実装するときの注意点
  • 従来のDCXのメッセージフォーマットと違って、CAMFはひとつのフォーマットのメッセージですべての災害・機器情報を表現するので、どのフィールドを使がつかわれるかの分岐がいくつかあります。たとえば地図上に描画したいときは、どんな情報が入ってくるかを判別して実装する必要があるでしょう。仕様書を読みましょう。
    https://qzss.go.jp/en/technical/ps-is-qzss/ps-is-qzss.html

    とにもかくにも、インターネットがつながらなくてもJ-AlertやL-Alertが降ってくるのは、訴求力があっていいです。CAMFは今後に期待が持てる柔軟なフォーマットでした。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    *