METARの情報をTwitterに投稿する

METARとは「定期飛行場実況気象通報式(aviation routine weather report)」のこと*1。名前の通り定期的に報告される空港/飛行場の気象情報です。実物はこんな感じです。

RJTT 090400Z 04010KT 9999 BKN030 11/05 Q1013

何やらわかりにくいですが、これでも簡単な方です。複雑なものになるとこの2〜3倍の長さになります。航空機の航行には気象がとても密接に関わるので、気象情報を定期的に流しています。読み方は「METAR」でGoogle等で検索すれば解説しているところが引っかかるのでそちらを参照してください。

基本的にはパイロットを始め、航空機の運航に携わる人向けの情報ですが、飛行機の写真を撮る場合にも重要な情報となります。と言うのも、航空機は基本的に風の吹いてくる方向に離着陸するからです*2。使用する滑走路の情報は無線で発信されています*3ので、そちらを聞くのが確実です。が、METARで風向きや気象状況を知る事で、無線を聞く事ができない場合にも推測する事が可能です。

前置きが長くなりましたが、そんなMETARをアメリカのNOAA(National Oceanic and Atmospheric Administration)という期間がインターネット上で公開しており、羽田空港など日本の空港も含まれています。それをTwitterに投稿すれば便利かと思って、ちょこっとRubyで書いてみました。

#!/usr/bin/ruby -Ku

# twitter METAR
# Author: woinary (yoshiaki.y@awagumo.net)
# Created at: 2008/01/08

require 'rubygems'
require 'open-uri'
require 'twitter'

# set 4 letter code for target airport
$cccc = 'RJTT'

# set your twitter id and password
$twitter_id = 'your_id'
$twitter_pw = 'your_password'

# proxy setting for twitter4r
#Twitter::Client.configure do |conf|
#    conf.proxy_host = 'proxy_hostname'
#    conf.proxy_port = proxy_port
#end

$KCODE = 'u'
$metar_url = "http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=#{$cccc}"

metar_text = ''

# get METAR
open($metar_url) do |metar_result|
    metar_result.each_line do |line|
        metar_text = line if /^#{$cccc}.+$/ =~ line
    end
end

# write twitter
unless metar_text.empty? then
    c = Twitter::Client.new(:login => $twitter_id, :password => $twitter_pw)
    s = c.status(:post, metar_text)
end

以上で得た羽田空港のMETARの情報は下のURLで公開しています。1時間に1回更新しています*4

http://twitter.com/metar_rjtt

このソースはAcriveScript ruby 1.8.6とTwitter4rで実装しています。特に権利などを主張する気もないので、適当に使ってください。

*1:頭文字を取ってもMETARとはならないが、Wikipediaで「定時飛行場実況気象通報式」で引いてください。フランス語由来だそうです。

*2:あくまで、その方が効率がよいという話であって、実際には諸事情により必ずしもそうするわけではありません。空港によっては騒音等の問題から風向きに寄らず優先的に使われる滑走路というものが設定されていたりします。

*3:ATISと呼ばれます。

*4:羽田のMETAR自体は毎正時と30分に更新されていますが、今は1時間に1回、毎時10分に更新しています。NOAAのMETAR自体は5分遅れで更新されるようです。