Webアプリを創る

政府統計データ API で公開されている統計表のリストを作ってみた

2013年6月28日

総務省統計局と統計センターによって、次世代統計利用システム(API機能)の試行運用が6月10日から開始されました。自分も統計データAPIを使ってアプリケーションを作ろうと思っています。

ところで、統計APIの関係では「統計くん」というWebサービスがメディアに取り上げられています。例えばITmedia ニュースによると「個人開発者の矢野さとるさんは6月12日、10日に公開された「次世代統計利用システム」のAPIを活用し、国勢調査などの政府が持つ統計データをCSV形式でダウンロードできるWebサービス「統計くん」を公開した。」というような記事が掲載されています。

その「統計くん」を使ってみると、データの一覧には自分の欲しいデータがありませんでした。そのため今回のAPIの公開がかなり暫定的なものなのかと思ってしまいました。でも実際に調べていくと「統計くん」では統計APIで公開されている統計表のごく一部しか扱っていないことがわかりました。

自分で使うためにも、どういう統計データが公開されているかを知りたかったので、APIで公開されている統計表の一覧表を作成してみました。まだまだ未完成ですが、統計APIを使ってみようと思っている人には役に立つと思うので ecitizen.jp の方に「政府統計データAPI エクスプローラ」として公開してみました。

ワタミズムによってしか維持されない日本の豊かさでは悲しい

2013年6月10日

BLOGOSで大石哲之氏が「ワタミズムによって維持されてきた日本の豊かさ」という記事を書いている。

日本人は、米国と比べて同じような賃金水準を保っているのではないか。一人あたりGDPでは負けて無いのではないか?生産性がこれほど違うのに、なぜ同じような生産(GDP)を維持できるのか。
生産 = 生産性 x 労働投入時間
とすれば、調整できる変数は一つしか無い。そう、労働投入量(労働時間)である。
つまり、12時間の労働投入があれば、7割の生産性でも、100のアウトプットがえられる。

大石哲之氏は「アメリカにGDPで負けていない」といっているが、実際は一人あたりGDPでも大きく負けている。World Bank の 「GDP per capita, PPP」によるとOECD諸国の2011年の一人当たりGDP(単位:国際ドル)は以下のようになる。

1 ルクセンブルグ 88,797
2 ノルウェー 60,392
3 スイス 51,227
4 米国 48,112
5 オランダ 42,779
6 オーストリア 42,172
7 オーストラリア 41,974
8 スウェーデン 41,484
9 デンマーク 40,933
10 アイルランド 40,868
11 カナダ 40,420
12 ドイツ 39,456
13 ベルギー 38,723
14 フィンランド 37,455
15 アイスランド 36,483
16 イギリス 35,598
17 フランス 35,247
18 日本 33,668
19 イタリア 32,672
20 スペイン 32,087
21 ニュージーランド 31,082
22 韓国 29,834
23 イスラエル 28,809

米国を100として考えると、日本の一人当たりGDPはおよそ70%であり、労働生産性とほぼ同じだ。

大石哲之氏の翌日の記事「ワタミズムと生産性 日本が取りうる3つの改善シナリオ」 で次のように書いている。

一人あたりGDPでたとえ3割へっても、イタリアと同じくらい。彼らは豊かにくらしているではないか。

これは明らかに間違いであって、日本はサービス残業をしてやっとイタリアと同じくらいのGDPになっているのであって、サービス残業をやめてGDPが3割減れば東欧やトルコ並の生活になってしまうのである。

労働生産性の計算からすれば、生産額にはサービス残業をした分が含まれるが、労働時間にはサービス残業の分は考慮されていないので、サービス残業をしてやっとアメリカの70%の生産性を維持していることになる。もし、3割サービス残業のしているのであれば、日本の実質的な労働生産性はアメリカの50%ということになる。これもGDPと同じことだ。

以下の表が、日本の得意分野である製造業の労働生産性の推移である。1995年には日本は世界一であった。しかし、その後アメリカが大きく伸びて現在ではアメリカの7割程度になっている。アップル社のようにアメリカ国内には高付加価値なソフト部門だけを残し、労働集約的な部分は中国等の外国に移転させたことによるものであろう。

 image

日本生産性本部「日本の生産性の動向 2012年版」31Pを抜粋

それでは、20年前のように製造業で日本が労働生産性を再度世界一にすることはできるのだろうか。20年前の世界一になったのは、日本人の勤勉さと器用さによるものだと思う。でも、現在は中国にも東南アジアにも勤勉で器用な労働者が大量にいる。そして賃金は日本の10分の1ぐらいだ。そういう状況では、世界から優秀な人間を集めているアメリカに負けてしまうのは仕方がないことである。

日本の労働生産性の低下というのは、本当に深刻な問題である。サービス残業によってやっと新興国レベルに落ちないようにしている状態である。最早、日本の企業は強くなくなっているから、会社に不満がある優秀な人はぜひ起業して生産性の高い企業を作ってほしい。

ロギングライブラリ NLog を使ってみる

2013年6月8日

プログラムの実行状態をログで記録したいという場合には、ログの数が少ないうちは StreamWriter を使って自作してもそれほど手間はかからないのですが、Web サイトでアクセス数が多くなってくると、少なくとも次の2点を考慮する必要がでてきます。

  • ファイルが大きくなり過ぎないように、ログファイルのローテートをする。
  • 同時アクセスがあった場合の対応が必要である。

それではということで、ロギングライブラリーを探してみたら、C#用には、NLogLog4Net というライブラリーがありました。比較すると NLog の方が活動が活発で使い方も簡単そうだったので、NLog を使うことにしました。

ソースコードとマニュアルは、GitHub にホストされています。マニュアルによると、ログの出力先にはファイルだけでなく、データベースやメールやWebサービスが選択できます。重大な障害が発生したときには、メールで通知できるのは便利ですね。

Visual Studio へのインストールには NuGet が利用できます。NuGet パッケージの管理で NLog で検索すると以下のようなパッケージが表示されます。NLog には多くの拡張パッケージがあって多くのところで利用されているのがわかります。NuGet では NLog だけでなく、NLog Configuration もインストールします。

image

インストールが完了すると、NLog.config という設定ファイルのひな形が以下のように作成されています。ひな形をみれば、NLog.config では、ターゲット(targets)とルール(rules)を設定をしたらいいということのようです。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!–
  See http://nlog-project.org/wiki/Configuration_file
  for information on customizing logging rules and outputs.
   –>
  <targets>
    <!– add your targets here –>
   
    <!–
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
    –>
  </targets>

  <rules>
    <!– add your logging rules here –>
   
    <!–
    <logger name="*" minlevel="Trace" writeTo="f" />
    –>
  </rules>
</nlog>

通常のログファイルだったらひな形がそのまま使えます。ターゲットが複数利用できるので、メール用のターゲットとルールを以下のように追加すると致命的エラーの時にメールを送るようにすることができます。

ターゲットの追加

<target xsi:type="Mail" name="m"
    subject="エラーの発生"
    from=admin@example.com
    to="niji@yniji.net"
    header="エラーが発生しました。${newline}"
    body="${message}"
    smtpServer="mail.example.com"
    smtpPort="587"
    smtpUserName=admin@example.com 
    enableSsl=”False” 
    smtpPassword="password"
    smtpAuthentication=”Basic” />

ルールの追加

<logger name="*" minlevel="Fatal" writeTo="m" />

ログを出力するコードを書くのは比較的簡単で、ASP.NET MVC の場合であれば、モデルに次のようなルーチンを作っておけば、他のモデルやコントローラーから呼び出して使えます。

using NLog;

public class LoggerClass
{
    private static Logger Logger = LogManager.GetCurrentClassLogger();

    public static void NLogInfo(string message)
    {
        Logger.Info(message);
    }

    public static void NLogFatal(string message)
    {
        Logger.Fatal(message);
    }
}

NLogを使うことで簡単にログを出力できるようになるので、現状のログに不満がある人は試してみてください。

フリーになって2ヶ月が経過しました

2013年6月7日

フリーになって2ヶ月が過ぎました。

4月から本格的に作ろうと思っていた新Webサイトですが、作業の方は遅れています。Webサイトを作るのは結構エネルギーがいるんですよね。でも、自分なりに方向性は決まってきたので、これからは作業も進んでいくと思います。

収入の面では、4月から Google アドセンスの最適化の作業をしてきたので、かなり安定した収入になってきました。アドセンスの収入のいい面は、時間を拘束されないことです。新Webサイトの制作に集中できる環境なので、これからしばらくは、他のことにあまり手をださないようにします。

このブログの方は、見に来てくれる人はあまりいません。ライティングの方は得意でないからしかたないけど。でも、これからもブログは続けていこうと思っています。ライティングは年を取ってもできる作業なので、今のうちにライティングの技術を少しでもアップさせておいた方がいいと思っているからです。このWebサイトはあまり更新ができていなかったけど、Webサービスの作り方を少しづつ書いて行く予定です。

日本型SEOの終焉

2013年5月26日

昨日「アフィリエイトで勘違い」の元増田氏のことを書いたので、それに関連してSEOのことについて書いてみました。その元増田氏がホームページを作り始めた2007年というのは、日本型SEOの最盛期の時期であり、また実際に「日本型SEO」が有効な時代でもありました。なお、SEO とは、日本語では検索エンジン最適化といい、特定の検索エンジンを対象として検索結果でより上位に現れるようにする技術のことです。

Google トレンドを使って、SEO の人気度を表示したのが下の図です。少し前に「CakePHPに飛びついた日本のITエンジニア」というブログを書いたけど、CakePHP とよく似た動きをしています。日本では、当時はSEO といって騒いでいましたが、2010年にYahoo Japan がGoogleの検索エンジンの採用し、2011年にはGoogleがパンダアップデートやペンギンアップデートと呼ばれる検索エンジンのアップデートをおこなったので、SEO対策だけで価値のないサイトは大きく検索順位を下げることになりました。それとともにSEOの人気度も急降下しています。

すべての国

image

日本

image

Google トレンドの図では、SEOの人気度の相対的な位置がよくわかるように、CMSとして最も有名なWordPress と Web アプリケーション フレームワークの Struts, Ruby on Rails, ASP.NET MVC, CakePHP, Grails, CodeIgniter, Laravel を合計したしたものを表示しています。日本の場合、Webページを作るためのツールであるWordPressよりSEOの方が人気があったというのはどう考えても過熱しすぎですよね。グラフを見るとSEOの人気度が急落して、日本も世界と同じような位置になったようにも見えます。

すべての国でみると、SEO は安定した動きをしているキーワードです。Web アプリケーション フレームワークも、個々のツールに関しては人気度が大きく動いていますが、それらを合計すれば安定した動きをしています。Web サイトに機能を追加しようと思えば、Web アプリケーション フレームワークを使った方が効率がいいから、根強い人気があるし、将来的にも Web 自体は重要な位置を占め続けると思うので、どのツールが人気を集めるかは別にして、根強い人気を持ち続けると思います。

SEO も Web アプリケーション フレームワークと同じようなものです。Web の世界では検索エンジンに拾ってもらわなければ、誰にも知られない存在です。だから、検索エンジンを理解して、検索結果をより上位に現れるように努力することは Web に携わるエンジニアであれば当然のことです。Google 自身がウェブマスターツールを作成し、SEO の解説をしていることからもわかるでしょう。最後に、SEO の未来について、「「SEOは終わった」のではなく、進化した」という記事を紹介しておきます。

http://www.seojapan.com/blog/future-of-seo