Webアプリを創る

気象庁防災情報XMLを使ってみた

2014年4月26日

気象庁の防災情報XMLフォーマット形式電文を実際に使ってみました。現在は、天気予報を表示するページを作ってみてテスト運用をしています。これで安定して運用が出来るようになれば Web アプリに組み込みたいと思っています。

PubSubHubbub の subscriber ですべてを処理させるのは、機能追加の時に問題が出そうなので、subscriber は更新情報を受信したら Amazon SQS にメッセージを送るだけの機能にして、XML電文の処理の方は別のコンソールアプリケーションにさせるようにしています。

テストをしてみて、C# の非同期処理 async / await は便利だということを実感しました。XML データを取ってきたり、Amazon の SQS や データの保存に S3 を使う場合には、どうしても一件当たり100ミリ秒単位の時間がかかるので同期処理をすると100件ぐらいで分単位の処理時間がかかるようになってしまいます。async / await を使うとそれを簡単に非同期処理ができるので処理時間を数分の1に短縮することができます。

実際に防災情報XMLを使ってみて感じたのは、今更なのですが天気予報を以下の例のように言葉で表現したものは簡潔でわかりやすいなと思いました。日本の伝統的な洗練されたものがあるように感じました。

南の風 23区西部 では はじめ 南の風 やや強く 晴れ
夜 くもり 所により 雨 で 雷を伴う
波 1メートル 後 0.5メートル

一方で、XMLの方は使いずらいと思いました。以下に、日本、アメリカ、イギリス、ノルウェーのXMLのサンプルを表示しましたが、日本だけが間延びして階層が異常に深くなっていることがわかると思います。技術的な評価はよく分かりませんが、少なくとも利用する側としては、日本のXMLは4つの中で最低です。階層が深くかつデータがばらばらとあるので、データを取得するプログラムの行数は増えていきます。7階層までいかないとどの項目か判断できないような設計はせずに、外国のように4階層ぐらいでデータを取得できるようにしてほしかったと思います。日本が後発で外国の例を参考にできる立場だっただけに残念です。

日本

jmaxml 

アメリカ

noaaxml

 

イギリス

metofficexml

ノルウェー

metnoxml

それから、今回プログラムを作成していて、かなり時間がかかったのが、WetherCode のコード表の件です。WetherCode のコードについての説明がないので、どのアイコンを使えばいいのかがはっきりしないのです。自分が見落としているかもしれませんが、アメリカの場合は、XML の中に画像のURL が記載されているし、イギリス、ノルウェーの場合でも、得意でない英語の文章でも探すことができました。

天気予報APIのFAQに、「天気の種類は何種類ありますか?」という問いに対して、「天気の種類は現在のところ121種類ございます。尚、121種類の詳細につきましては、開発ドキュメントにてご確認いただけます。」という回答になっていて、秘密保持契約をまかないと開発ドキュメントは手に入れられないので、天気の種類という基本的なことが公開されていないようなのです。drk7氏が独自にしている「気象庁の天気予報情報を XML で配信」のページに、天気情報と画像ファイルの対応表を公開していたので、それを参考にして対応表を作りました。実際に運用してみてチェックしていこうと思っています。

XMLを洗練したものにできない理由を考えてみると、言葉による天気予報では、長年かけて予報官が自ら改善していったものだと思います。しかし、システムのことになると日本の予報官は分からないから、SI業者に丸投げに近い状態になっていて、その SI業者はというと、現状をそのままシステム化しただけになっていると思います。日本では、SI業者に依存しすぎるので、システムのことになると現場の改善力がうまく発揮できないようです。その上に気象会社からの圧力があって、改善すると民業圧迫といわれるので余計に改善の意欲がわかない状態になっていると思います。

問題点は書きましたが、やっと実現した天気予報の無料XMLなので、大いに活用しましょう。気象庁防災情報XMLを使いたい人は、http://ecitizen.jp/weatherのページのリンクから各府県のXMLが取得できるので、月3000PVまでであれば自由に使ってもらっても構いません。事前準備をしなくでもすぐにXMLの取得ができます。商用利用も可能ですが、気象庁の利用上の留意事項については遵守してください。

Umbraco 7.1 を使ってみた

2014年4月17日

Umbraco 7.1.1 が公開されています。Umbraco 7 で動作するパッケージも増えてきたし、Umbraco 7.1の公開でシステムの方も安定してきたように思います。そのためか、Google トレンド(下の図)をみると、最近Umbracoは人気度が伸びています。

image

しかし、日本では全く使われていないようです。Niels が下の図のとおり4月9日のインストール状況をツイートしているのですが、日本はゼロでした。

image

それで、久しぶりに Umbraco のことを書いてみます。Umbraco 7 では、以前と比べるとインストーラーや管理画面がスマートになっています。それから、Azure Web サイトを使うとインストールも簡単です。Microsoft Azure へのインストールのメモも作成しました。

このサイトを Umbraco 7 にアップグレードしようと思ったのですが、uCommentsy が Umbraco 7 に対応していないということでやめて、ecitizen.jp の方をアップグレードしてみました。インストールの途中でデータベースの更新エラーが発生しましたが、Umbraco のフォーラムに丁度その問題の記事があったので、その記事の最後にある SQL スクリプトを実行すると無事にアップグレードすることができました。Umbraco 4 の時にインストールした場合に発生するエラーのようです。Umbraco 7 にすると管理画面がよくなりました。

Umbraco 6 で 新 API の導入、Umbraco 7 では AngularJS を使った新管理画面の導入と大きなアップデートがあって、過去のパッケージが使えなくなりました。でも、使いやすくなったし、これで当分はこのような大きな修正はないと思うので、Umbraco を一度使ってみてください。

日本では、CMS は WordPress が人気で、SEO にもいいと言われていますが、ブログは、一度書いてしまうとその記事を修正するのは基本的には禁じ手です。だから、人気のある記事を同じ URL でアップデートしながら最新のものにしていくということができません。これは、SEO にとって非常に残念なことで、人気のある記事は Umbrco に移行させて、アップデートしていくのは SEO 的にみていい方法だと思います。

Microsoft Azure も値下げされるので、Amazon EC2 との比較表を修正した

2014年4月4日

Amazon EC2 の4月1日からの値下げが発表されたら、Microsoft Azure の仮想マシン(VM)の方も基本タイプが新たにできて実質値下げになる予定である。それで比較表を修正した。Amazon は東京リージョン、Azure は東日本リージョンの基本で計算している。Azure の西日本リージョンだと東日本リージョンより約10%安くなる。

サーバー種別 Windows Server Linux
短期・長期

短期(円/時間)

長期(円/月)

短期(円/時間)

長期(円/月)

EC2 t1.Micro

($0.039)\4.10

\2,326

($0.031)\3.26

\1,624

Azure VM XS 基本

\1.84

\1,366

\1.84

\1,366

EC2 m1.Small

($0.093)\9.77

\4,747

($0.061)\6.41

\2,509

Azure VM S 基本

\9.69

\7,209

\7.04

\5,236

EC2 m3.medium

($0.161)\16.91

\8,528

($0.111)\11.66

\4,857

Azure VM M 基本

\19.38

\14,419

\14.08

\10,473

EC2 c3.large

($0.241)\25.31

\13,146

($0.138)\14.49

\7,551

※1ドル=105円とした。EC2の長期は重度使用リザーブドインスタンスを利用の場合。
EC2 ではEBSが必要になるのでt1.Microとm1.Smallには30GB、m3.mediumとc3.largeには60GBを追加。
価格は税抜きで、日本に住んでいる場合はこれに消費税が加算される。

この表をみると、Azureの価格の方が明らかに安価なのは XS だ。初心者が最初に使うサーバーの価格を抑えて Azure の利用者を増やしたいという Microsoft の意図ははっきりしている。自分が使っているレベルでは、Azure の長期割引が月額51,000円以上でないと利用できないのが相当痛いと思っている。Azure VM M の長期割引がきかないのであれば、EC2 c3.large のリザーブドインスタンスを使った方が有利だと思う。Amazon のリザーブドインスタンスは、新たに購入しないと値下げが適用されないという結構厳しい条件はあるが、ソフト面で Amazon の方が成熟しているということもあるので Amazon がシェアトップであるという理由は理解できる。

送信データ転送等の料金については、以下のとおりで Azure の方が若干安価である。

Azure ¥19.38/GB  Amazon EC2 ($0.201)¥21.11/GB

ストレージ料金についても、Azure の BLOB の方が EC2 の EBS より以下のとおり安価である上にプロビジョンした容量ではなく実際に使っている分しか請求されないのでが Azure の方が相当に有利である。ただし、Amazon がS3 の価格を大幅に値下げし($0.033/GB)\3.47/GB なので、運用次第という面はある。

Azure BLOB/ディスク¥5.1/GB  Amazon EC2 EBS Standard ($0.12/GB)¥12.6/GB

こういうことからすると確かにリソースを大量に消費する大企業だと Azure は有利なようだ。

フリーになって1年になりました

2014年4月1日

フリーになって1年になりました。1年前は、「統計メモ帳」をベースにして30万ページビューのWebサイトを作るのが目標でしたが、結局「統計メモ帳」の方は放置状態に近いです。でも、別のWebサイトで30万ページビュー増加させるという目標は達成できました。3月には確定申告をして所得税も払いました。Webサイトの広告収入で田舎だと普通の収入を稼げて本当によかったと思っています。

この仕事を1年間やってきて、アプリを作るのは受託とは大きく違うというのを実感しました。受託の場合だと発注者が不満に思わない程度の品質のものを強調して効率よく作るというのがビジネスの基本になります。だから、早くできるということが非常に重要にです。でも、自分のようにアプリを個人で作る場合には、人がしないことをして1万人ぐらい以上の人にプラス評価してもらえることを続けていけば、それなりに食べていけるようになるのではないかと思っています。早くできるということは遅いよりもいいけどというぐらいの価値しかなくて、使ってもらえるものが作れるかどうかが続けられるかどうかの分岐点で、協調性は必要なく、価値あるものを作ろうという気持ちが重要な世界だと思います。

これからの1年は、Webアプリをスマートフォンアプリにしていく作業を重点的にしようと思っています。Webアプリを拡張していった方が多分収入的にはいいと思うのですが、iPhone/Android アプリを作ってみたいという気持ちも強いし、自分の作っているWebアプリは、スマートフォンアプリにすると結構面白いことが出来そうだとも思っています。そういうことで、自分としては最後の新しい分野ということで、この1年スマートフォンアプリをどこまでできるかやってみようと思っています。

Amazon EC2 が値下げされるので、Azure と比較してみた

2014年3月28日

予想通り Azure の VM に基本ができて実質値下げされます。その比較表を「Microsoft Azure も値下げされるので、Amazon EC2 との比較表を修正した」に書きました。(2014/4/4追加)

Amazon EC2 の4月1日からの値下げが発表されたので、Windows Azure の仮想マシン(VM)と価格を比較をしてみた。Amazon は東京リージョンで、Azure は東日本リージョンで計算している。Azure の西日本リージョンだと東日本リージョンより約10%安くなる。

サーバー種別

Windows Server

Linux

短期・長期

短期(円/時間)

長期(円/月)

短期(円/時間)

長期(円/月)

EC2 t1.Micro

($0.039)\4.10

\2,326

($0.031)\3.26

\1,624

Azure VM XS

\2.71

\2,012

\2.76

\2,049

EC2 m1.Small

($0.093)\9.77

\4,747

($0.061)\6.41

\2,509

Azure VM S

\10.82

\8,044

\8.27

\6,147

EC2 m3.medium

($0.161)\16.91

\8,528

($0.111)\11.66

\4,857

Azure VM M

\21.63

\16,088

\16.53

\12,294

EC2 c3.large

($0.241)\25.31

\13,146

($0.138)\14.49

\7,551

※1ドル=105円とした。EC2の長期は重度使用リザーブドインスタンスを利用の場合。
EC2 ではEBSが必要になるのでt1.Microとm1.Smallには30GB、m3.mediumとc3.largeには60GBを追加。

この表をみると、Azureの価格の方が安価なのは XS です。初心者が最初に使うサーバーの価格を抑えて Azure の利用者を増やしたいという Microsoft の意図ははっきりしている。しかし、それ以外では、Amazon の今回の値下げにより Amazon の方が価格的に有利になったと思う。

送信データ転送等の料金については、以下のとおりで Azure の方が若干安価である。

Azure ¥19.38/GB  Amazon EC2 ($0.201)¥21.11/GB

ストレージ料金についても、Azure の BLOB の方が EC2 の EBS より以下のとおり安価である上にプロビジョンした容量ではなく実際に使っている分しか請求されないのでが Azure の方が相当に有利であった。しかし、今回 S3 の価格が大幅に値下げされ($0.033/GB)\3.47/GB になったので、運用次第ではどちらが安いとはいえなくなったと思う。

Azure BLOB/ディスク¥9.69/GB  Amazon EC2 EBS Standard ($0.12/GB)¥12.6/GB

今回のAmazon の値下げは、Google のクラウドサービスの値下げに対抗するためのものであり、以上のことから考えると、Azure の価格もこのままにしておくというのは考えづらい思われる。

これからもクラウドのコストはどんどん下がっていくと思うので、アプリケーションを積極的に作っていきたいと思っている。