SHOYAN BLOG

I am a pragmatic programmer.

世界で最も成長しているのは中国じゃなかったと数値が教えてくれた

THE WORLD BANKという世界の様々なデータを公開しているサイトがあります(最近知りました)。
何気なく普段のニュースに触れていると世界で最も成長しているのは中国だという印象があります。
しかし、データを見るとそうでないことが明らかになります。

では、国の経済成長の指標であるGDPを見ていきます。

2015年のGDPの伸び率トップ10

  1. アイルランド 26.3%
  2. West Bank and Gaza(ヨルダン川西岸地区) 12.4%
  3. エチオピア 9.6%
  4. パラオ 9.4%
  5. コートジボワール 9.2%
  6. ウズベキスタン 8.0%
  7. インド 7.6%
  8. ラオス 7.4%
  9. ミャンマー 7.3%
  10. ドミニカ共和国、コロンビア、 タンザニア 7.0%

「あれ、中国がいない?」と多くの日本人は思うのではないでしょうか。
中国のGDPは6.9%で11位です。
ちなみにGDP成長率6.9%の国はコンゴやルワンダがあります。

あれだけ景気の良いと言われている中国以上に成長している国があるのですね(最近は危ぶまれる声も聞きますが)。

ちなみに1位のアイルランドは26.3%と尋常ではない伸び率です。
この要因は一体何なんでしょうか。

調べてみたところ、アイルランドは法人税が安く、そのために本社を移転してくる会社が多いとのことです。

アイルランドには12・5%と低い法人税率を目当てに多国籍企業が合併・買収(M&A)などを通じて本社を移転してくるケースが多い。同国の資産は統計上かさ上げされ、先進国では異例の“高成長”につながった。

http://www.sankei.com/economy/news/160713/ecn1607130011-n1.html

アイルランドに本社移転した会社の資産がアイルランドのGDPに反映され、このように異常に高い数値として出ているようで、実際の経済成長とは乖離しているというのが識者の認識のようです。

我らが日本のGDP成長率はいくらかというと0.5%です。
マイナス成長している国も少なからずあるのでマイナスじゃないだけマシかもしれません。
日本の高度経済成長期のGDP成長率は8%〜12%で推移しています。

ワールドカップとオリンピックで沸いたブラジルはマイナス3.8%成長で、大きくこけている感じがありますね。

ちなみに地域では南アジアの成長率がすごくて7.1%でした。

南アジアの国々

south-asia-gdp

高度経済成長期の日本のように成長している国があるという事実に、世界は広いなと感じます。

また、こういう数値を認識せずに中国が最も経済成長しているなどの誤った認識を持ってしまう事は避けたほうが良いと思いました。

Guardでrubocopを自動化する

RubyのシンタックスチェックにRubocopを使っていて、リポジトリにpushした時にチェックするようにしている。
push→シンタックスエラー→直してもう1回pushというのがまどろこしいのでguard-rubocopを使ってファイルを保存する度にチェックするようにしてみた。
ストレスが軽減され、良い感じだったので紹介する。

guard-rubocopの導入

gurad-rubocopを導入するにはまず、rubocopを導入している必要がある。
この記事ではrubocopは導入済みという前提で進める。

gurad-rubocopの導入はいたって簡単。
3分で導入できるので是非やってほしい。

Gemfileに以下を定義する。

1
2
3
4
group :development do
  gem 'guard'
  gem 'guard-rubocop', require: false
end

bundle install を行うと、guardコマンドが利用できるようになる。
bundle exec guard init rubocopGuardfile が生成される。

これでインストール完了。

あとはターミナルで bundle exec guard コマンドを実行する。
その状態でファイルを変更するとそのファイルを対象にrubocopコマンドが実行される。

オプション

デフォルトだとgurad起動時にrubocopコマンドが実行されるようになっている。
起動時に実行したくない時はGuardfileに以下の設定を行えばよい。

1
guard :rubocop do

以下のように変更する。

1
guard :rubocop, all_on_start: false do

他にもオプションがあるので詳しくはREADMEを参照してほしい。

関連記事

Jekyllチュートリアル

最近、ブログをリニューアルしようとJekyllをちょこちょこ触っている。
ブログを作る上でJekyllで知っておいたほうが良いことをまとめていきたいと思う。

Jekyllとは

Jekyllは静的なサイトを作ることに特化したツールだ。
Ruby製でGithub pagesでも利用されている。
内部的にはLiquidが使われている。
Liquidはテンプレートエンジンで変数や制御文(foreachとか)を使うことができる。
Jekyllはそれをラップしたものだ。
Jekyllの何が便利かというと、サイトの設定をymlファイルで管理したりJekyllコマンドでMarkdownからhtmlファイルを生成したりすることができるという点だ。
また、サードパーティ製のテーマを利用できたりもする。

ドキュメント

Jekyllはドキュメントがなかなかしっかりしているので、公式のドキュメントを見るのがよい。

日本語版も用意してある。

まずドキュメントを探してみて、わからなければググるという感じで自分は調べている。

目次

  • Jekyllをはじめよう
  • Jekyllの構成について
  • Jekyllのテーマを作成する

機械学習ことはじめ

機械学習をやるぞ!と息巻いてから半年が経とうとしている。
進捗はてんでダメ。ほとんど勉強せずに時間だけが過ぎてしまった。
さすがにこれではいけないと学習を始めた。

とりあえず学ぶにも何かしらの教材がないと効率が悪いと思い、基礎的な理論が勉強できそうな 「機械学習理論入門」を買った(半年前に)。
機械学習の理論を優しく書いてあるはずなのだが、高校数学の理解もままならない自分の数学力では理解に苦しみ、本棚の肥やしとなっていた。
この段階では機械学習にも色々種類があるんだなということがわかった。

次に機械学習理論の入門としてわかりやすそうなやる夫シリーズを読みだした。

まずは最小二乗法についての話が出てきた。
これはそれとなく理解できたので、最小二乗法を使って誤差を求めるプログラムをRubyで実装してみたりもした。

しかし、最急降下法でつまづいてしまった。
最急降下法に出てくる合成関数の微分がよく分からない

そもそも合成関数ってなんだというところで、合成関数について勉強した。
合成関数は関数の引数が関数になっている関数だった。

関数: y=g(x)
合成関数: y=g(f(x)) ←こういう感じで引数が関数となっている

やる夫シリーズを理解するには微分の知識が必要だということがわかったので、微分について勉強するために数学ガールを読んでいる。微分について会話形式で学んでいけるので、なかなかわかりやすい。

というところで、現状は微分を学んでいる。

だいぶ遠回りしている感がある。
道のりは険しい。

Railsで日付をいい感じ(スラッシュ区切り)に表示する

日付は日本だと /(スラッシュ)区切りが一般的なのでそのように表示したい。
しかし、RailsでDateオブジェクトやDateTimeオブジェクトを表示すると以下のような感じになってしまう。

1
2
3
4
5
pry(main)> Date.today.to_s
=> "2016-11-10"

pry(main)> DateTime.now.to_s
=> "2016-11-10T17:47:01+09:00"

strftimeメソッドで書式を指定すれば良いのだが、面倒だしイケてないように感じる。

Rails国際化APIのI18nにまさにというメソッドがあったので紹介する。
その名もlocalizeメソッドだ。
localizeメソッドはDateオブジェクトやDateTimeオブジェクトを現地のフォーマットに変換する。

1
2
3
4
5
pry(main)> I18n.localize(Date.today)
=> "2016/11/10"

pry(main)> I18n.localize(DateTime.now)
=> "2016/11/10 18:05:04"

ちなみにlocalizeの省略形で l というエイリアスが用意されている。

1
2
3
4
5
pry(main)> I18n.l(Date.today)
=> "2016/11/10"

pry(main)> I18n.l(DateTime.now)
=> "2016/11/10 18:07:24"