日々雑記

旅行の事ばっかり。神社成分多め。
Recent Tweets @

桜さくら

もう桜の時期なんだなー

Ginza.rb.第8回を開催しました。今回は参加者の方に事前にGemfileをアップして頂き、使用しているgemについて説明をして頂く形式で実施。

Gemfileの置き場はこちら

話に上がったgemについて以下にずらずらと。

gon

Rails側の変数をJavaScriptに渡す事が出来るgem。 controllerから大量のデータをJavaScriptに渡す必要がある場合に便利。

詳細はRailsCast参照。

Better Errors

Railsのエラー画面をより解りやすい画面に変えてくれるgem

better_errors

(大分小さいですが)上記画面の通りで、

  • Stack Trace
  • ローカル変数/インスタンス変数
  • リクエスト情報

を表示してくれる。更に、irb(PERL)によるdebugが可能なので、これがあると大分デバッグが効率良くなります。

bullet

ActiveRecordでやりがちなN+1問題を検出してくれるgem。

普通のログファイルだけでなく、airbrake、growl等様々な方法で通知をだしてくれる。お勧めはJavaScriptのalert。割とうざいので、ちゃんと消そうという気になります。

pry-rescue

"Super-fast debugging for Ruby. "と銘打たれている、Rubyデバッグ用ライブラリ。

"rescue"というコマンドが提供されており、そのコマンドでRubyのソースを実行すると、ハンドリングしてないexceptionが発生した際に、自動的にその処理でPryが起動する。

こんな感じ(公式ページより)

$ rescue examples/example2.rb
From: /home/conrad/0/ruby/pry-rescue/examples/example2.rb @ line 19 Object#beta:

    17: def beta
    18:   y = 30
 => 19:   gamma(1, 2)
    20: end

ArgumentError: wrong number of arguments (2 for 1)
from /home/conrad/0/ruby/pry-rescue/examples/example2.rb:22:in `gamma`
[1] pry(main)>

このgemの更に素晴らしい所は、RSpec/minitestに対しても実施出来、test failした際に、pryを起動してくれる所。

$ rescue rspec
From: /home/conrad/0/ruby/pry-rescue/examples/example_spec.rb @ line 9 :

     6:
     7: describe "Float" do
     8:   it "should be able to add" do
 =>  9:     (0.1 + 0.2).should == 0.3
    10:   end
    11: end

RSpec::Expectations::ExpectationNotMetError: expected: 0.3
     got: 0.30000000000000004 (using ==)
[1] pry(main)>

テストがより効率的に。

quiet_assets

asset pipe lineのlogを消してくれるgem。 ようは、

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-02-13 13:24:04 +0400
Served asset /application.js - 304 Not Modified (8ms)

こういうログを消してくれる。地味に便利。

fuubar

Rspecのテスト進捗状況が可視化が出来るgem。残りのテスト数、予想終了時間等の情報が表示される。

i18n-js

名前の通りで、Railsのi18n対応を、jsにも行えるgem。

roadie

RailsでHTMLメールを作成する場合、cssはHTMLに直接記載する必要があるのだが、このgemを使うと、外部のcssファイルを使用する事が出来る。HTMLメール送信のおともに。

redcarpet

Markdownコードを解釈するためのgem。githubでも使われている(らしい)

pygments.rb

コードのシンタックスハイライトをしてくれるgem。http://pygments.org/ というpythonのシンタックスハイライトツールがあり、それをラップしているだけらしい。

redcarpetと合わせてどうぞ。

airbrake

エラー通知用ウェブサービスairbrakeのRuby用プラグイン。airbrakeはweb上でエラーの情報がまとまって見れるので便利。有料。お金の壁。

sunspot_rails

全文検索システムであるsolr用のgem。データの登録から検索まで全ておまかせ。

brakeman

RailsアプリケーションのRubyコードをスキャンして、セキュリティに関する問題の検査を行なってくれるgem。

インストールすると、”brakeman”というコマンドが実行出来るようになり、このコマンドをappディレクトリで実行すると、ソースコードを分析して、レポートを出力をしてくれる。

詳細はrailscastに

zurui-sass-rails

@ken_c_loさんのズルいデザインテクニックのMixinをまとめたGem。

これはずるい。とても良い。

ci_reporter

Test::Unit/Rspecの実行結果をXMLに変換してくれるgem。Jenkinsのおともに。

accept_values_for

RSpecのmatcherを提供するgem。

こんな感じ(公式ページより)

describe User do

  subject { User.new(@valid_attributes)}

  it { should accept_values_for(:email, "john@example.com", "lambda@gusiev.com") }
  it { should_not accept_values_for(:email, "invalid", nil, "a@b", "john@.com") }
end

valid/invalidをそれぞれまとめてテストする事が出来る。これ、割と便利そう。

grape

simpleなDSLでAPIの作成が行えるマイクロフレームワーク。

サンプル。

module Twitter
  class API < Grape::API
    version 'v1', using: :header, vendor: 'twitter'
    format :json

    helpers do
      def current_user
        @current_user ||= User.authorize!(env)
      end

      def authenticate!
        error!('401 Unauthorized', 401) unless current_user
      end
    end

    resource :statuses do
      desc "Return a public timeline."
      get :public_timeline do
        Status.limit(20)
      end

      desc "Return a personal timeline."
      get :home_timeline do
        authenticate!
        current_user.statuses.limit(20)
      end

      desc "Return a status."
      params do
        requires :id, type: Integer, desc: "Status id."
      end
      route_param :id do
        get do
          Status.find(params[:id])
        end
      end

      desc "Create a status."
      params do
        requires :status, type: String, desc: "Your status."
      end
      post do
        authenticate!
        Status.create!({
          user: current_user,
          text: params[:status]
        })
      end

      desc "Update a status."
      params do
        requires :id, type: String, desc: "Status ID."
        requires :status, type: String, desc: "Your status."
      end
      put ':id' do
        authenticate!
        current_user.statuses.find(params[:id]).update({
          user: current_user,
          text: params[:status]
        })
      end

      desc "Delete a status."
      params do
        requires :id, type: String, desc: "Status ID."
      end
      delete ':id' do
        authenticate!
        current_user.statuses.find(params[:id]).destroy
      end
    end
  end
end

ちょっとsinatraっぽいかなあ。validationも書ける。色々と出来そう。

active_decoratr

presenterパターンに似た形でRailsアプリケーションのビューにdecoratorを追加できるようにするgem。

早速サンプル。

# app/models/user.rb
class User < ActiveRecord::Base
  # first_name:string last_name:string website:string
end

# app/decorators/user_decorator.rb
module UserDecorator
  def full_name
    "#{first_name} #{last_name}"
  end

  def link
    link_to full_name, website
  end
end

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def index
    @users = User.all
  end
end

model毎のdecoratorに表示に関するメソッドを集約することにより、helperがすっきり。helperの処理が増えすぎて、このメソッドでこで読んてるの? となる前に導入するのがお勧めです。

devise-async

deviseから送信するメールを非同期送信にしてくれるgem。 Resque、Sidekiq、Delayed::Job等様々なQueueシステム対応している。

地味に便利そう。devise以外でも使いたい。

devise-encryptable

deviseに任意の暗号方式を追加出来るgem、で合ってるかなあ。よりセキュアにしたい時ようかと。

exception_notification

エラーが発生した際にエラーメールを送信してくれるgem。お金の問題でairbrakeが使えない時にはお勧め。エラー通知大事。

seed-fu

seedデータ作成の為のgem。

rakeタスクでデータを入れれるのだが、入れるデータを”FILTER”として指定できるので、サービスローンチ後にseedデータを追加するのに便利そう。

globalize

ActiveRecordのModelのattributesを国際化するためのgem。

サンプル。

class Post  Globalize rocks!

I18n.locale = :he
post.title # => ×××××××××2 ש×××!

データはDBに持っている。初期データ登録が大変そうですが、国際化対応するのには便利そう。

forgery

ランダムデータ作成の為のgem。fakerと似ているのだが、fakerよりもデータの種類が多い。(moneyなどがある)

settingslogic

定数管理用のgem。yamlで書けるのでextendも出来るし、env毎の設定も簡単に出来る。

activeresource

RailsのModel同士で通信する為のgem。大分辛く、お勧めしないとの事でした。

active_hash

Hashやyamlで定義した値をActiveRecordの用に操作出来るgem。readonlyなのが特徴。

DBに入ってないため、生SQLでデータ抽出する際にjoin出来ず困る事があるので、個人的にはあまりお勧めしないです。

moji

日本語の文字種判定、文字種変換(半角→全角、ひらがな→カタカナなど)を行なってくれるgem。半角カタカナのチェック・変換等が必要な際に便利。

arproxy

ActiveRecordが発行するSQLをフック出来るgem。

カスタマイズしたクエリログを出力したり、クエリの発行元のトレースしたり出来る。

CREATE/UPDATE/DELETEをフックしログに残す事で、操作ログとしても使えそう。便利。

以上。

大分漏れている気がするので、リンク先を見ていただくか、他の方のブログを見て頂くと良いと思います。

といっても、GoogleMapに位置情報マッピングしただけだが。

出来上がったものはこちら

  • データはwikiから抽出。なので、”自称”も含まれている。
  • "新一の宮"は含んでいない。
  • 所在地が複数あるものは、別に登録されている(例えば、砥鹿神社は里宮・奥宮それぞれ登録してある)

"自称"の方については、後で少し整理するかも。

旅行のご参考に。

虹の教会

尾久駅

年初なので。去年の振り返りから。

  • 一宮巡り(10社程度)

実績は23。おお、大分多い。大分遊んでいた事が伺えますな。

もう一つの目標は進まず…。反省。

2014年の目標

改めて、今年の目標

  • 一宮巡り(15社目標)

一宮巡りは去年の実績から考えると少ない位だが、近場は全て行ってしまって、ほぼ泊まり前提なのでちょっと辛いかも。まあ、ぼちぼち。

  • 神社検定2級合格

唯の趣味。恐らく一発勝負になるので、きっちり準備して挑みたい。

  • TOEIC 700点

スコアは唯の目安。ここ数年英語の勉強が疎かなので、継続的にやる為の目標として。とりあえず今年はiKnowで頑張ってみよう。

  • Androidアプリリリース

久し振りにAndroidアプリでも。Java辛いので、違う方法に逃げそうだが…。

こんなところ。転職とか、もっと大物もあるのだが、まあそちらはぼちぼち、といった感じで。頑張ろう。

LinkDataというサイトがあります。誰でも簡単にデータの公開・共有が出来るよう支援するサイト、であってるのかな。

データ作品一覧を見てもらえると解るのですが、市町村の公式データからNTTの系列会社一覧、など思ってたより色々データが。
面白そうなんので、とりあえず触ってみる事に。今回は大阪市の施設情報のデータを。

データは、ダウンロード(フォーマットはtxt、xls、RDF)する事もできるし、APIも提供されている。親切。Rへのロード用APIも提供されており、お手軽なので、今回はそちらで。早速実行。

source("http://linkdata.org/api/1/rdf1s933i/R");
summary(osaka_shisetsu)
# osaka_shisetsu       lat             long       X..lodosaka.hozo.jp.category_1
# Min.   :    1   Min.   :34.33   Min.   :135.2   駅・バス停    :2574
# 1st Qu.: 2812   1st Qu.:34.64   1st Qu.:135.5   公園・スポーツ:1090
# Median : 9066   Median :34.67   Median :135.5   駐車場・駐輪場:1049
# Mean   :29608   Mean   :34.67   Mean   :135.5   学校・保育所  :1045
# 3rd Qu.:90073   3rd Qu.:34.70   3rd Qu.:135.5   医療・福祉    : 840
# Max.   :92835   Max.   :34.87   Max.   :135.6   会館・ホール  : 642
#                                                 (Other)       :1998
#          X..lodosaka.hozo.jp.category_2 X..lodosaka.hozo.jp.ku
# バス停                  :2330           平野区  : 610
# 公園                    : 814           北区    : 566
# 駅周辺駐輪場(その他)  : 577           中央区  : 509
# 福祉施設                : 555           東淀川区: 469
# 地域集会所・老人憩いの家: 493           淀川区  : 467
# 保育所                  : 395           城東区  : 449
# (Other)                 :4074           (Other) :6168
#                          label                         X..schema.org.name
# 大阪駅前                    :  19   大阪駅前                    :  19
# 新深江駅自転車駐車場        :  16   新深江駅自転車駐車場        :  16
# 西田辺駅自転車駐車場        :  16   西田辺駅自転車駐車場        :  16
# 千日前通自転車駐車場        :  16   千日前通自転車駐車場        :  16
# 天神橋筋六丁目駅自転車駐車場:  16   天神橋筋六丁目駅自転車駐車場:  16
# 南巽駅自転車駐車場          :  16   南巽駅自転車駐車場          :  16
# (Other)                     :9139   (Other)                     :9139
#                  X..schema.org.address
#                             : 586
# 大阪市北区梅田1丁目        :  17
# 大阪市東成区大今里南6丁目  :  12
# 大阪市北区梅田町3丁目1番先:  11
# 大阪市中央区天満橋京町1番先:  10
# 東住吉区長居公園内          :  10
# (Other)                     :8592
#                                               X..xmlns.com.foaf.0.1.homepage
#                                                              :7070
# http://www.city.osaka.lg.jp/kodomo/page/0000002800.html      : 395
# http://www.city.osaka.lg.jp/kankyo/page/0000209691.html      :  52
# http://www.city.osaka.lg.jp/toshikeikaku/page/0000004853.html:  37
# http://www.city.osaka.lg.jp/tsurumi/page/0000001362.html     :  26
# http://www.osaka-sishakyo.jp/soudan/roujin_ichiran.html      :  25
# (Other)                                                      :1633

大阪市の施設の名称、緯度・経度、カテゴリ、住所、さらにあればhomepageの情報も。割としっかりとしたデータが提供されている。

神社が好きなので、社寺がどれくらいあるか見てみる。

shrine <- (osaka_shisetsu$X..lodosaka.hozo.jp.category_2 == '社寺')
summary(osaka_shisetsu[shrine,]$X..lodosaka.hozo.jp.ku)
#  阿倍野区       旭区       港区     此花区     住吉区   住之江区     城東区
#         4          3          0          8         10          4         11
#    生野区       西区     西成区   西淀川区 大阪市以外     大正区     中央区
#        11          3          5          0          0          0          0
#    鶴見区   天王寺区     都島区   東住吉区     東成区   東淀川区     福島区
#        26         15          3          9          7          9          4
#    平野区       北区     淀川区     浪速区
#        18         20          9         11

鶴見区が26と一番多い。

ついでにバス停の数とか。バス停多い。

bus_stop <- (osaka_shisetsu$X..lodosaka.hozo.jp.category_2 == 'バス停')
summary(osaka_shisetsu[bus_stop,]$X..lodosaka.hozo.jp.ku)
#  阿倍野区       旭区       港区     此花区     住吉区   住之江区     城東区
#        60         62         83        102         93        152         95
#    生野区       西区     西成区   西淀川区 大阪市以外     大正区     中央区
#        93         86         88        101         45        100         85
#    鶴見区   天王寺区     都島区   東住吉区     東成区   東淀川区     福島区
#        83        116         64        102         48        118         56
#    平野区       北区     淀川区     浪速区
#       225        123        114         36

いっそ全部。一覧で。

ku_by <- by(osaka_shisetsu, osaka_shisetsu$X..lodosaka.hozo.jp.ku, function(df) summary(df$X..lodosaka.hozo.jp.category_2))
group_by_ku <- do.call(rbind, ku_by)
df <- data.frame(区名=levels(osaka_shisetsu$X..lodosaka.hozo.jp.ku), data.frame(group_by_ku))
plot(gvisTable(df, options=list(width=620)))

結果はこちら

これで区毎に施設がどれだけあるかが一目瞭然。住居探しの参考にでも。

まとめ

直ぐいじれる形式でデータが提供されているので色々楽しめます。公的機関のデータがまだまだ足りてない印象なので、そこが増えるとより唸りそう。あとR楽しい。

去年の分ラスト。一宮巡り 九州編 Part1、福岡・佐賀。

筥崎宮

筑前国一宮、筥崎宮。

筑前国は一宮を名乗っている神社が二つあり、その一つがこの筥崎宮。

筥崎宮は筥崎八幡宮とも称し、祭神は応神天皇(八幡大神)。全国に約44,000社あると云われる八幡宮の一つであり、日本三大八幡宮に数えられている。創建は不明。八幡宮については、宇佐神宮の記事を書く際に、ちゃんとまとめたい。

楼門に大きく掲げられた「敵国降伏」の文字。元々は醍醐天皇が始りらしく、本宮に伝存するとの事。また鎌倉中期、元寇のおり、神風が吹き未曾有の困難に打ち勝ったことから、厄除・勝運の神として有名との事。戦の神の応神天皇らしい。

長い参道の先には博多湾が望める。昔は湾のすぐ近くまでいけた記憶があるのだが、今回は行けなくなっていた…。はて。

祭神:応神天皇(おうじんてんのう)
アクセス:JR鹿児島本線 筥崎宮駅 徒歩約8分

次。

住吉神社

筑前国一宮、住吉神社。筑前国のもう一つの一宮。

日本全国に約2,300社ある住吉神社の中で最初の住吉神社とされており、祭神は底筒男命(そこつつのおのみこと)、中筒男命(なかつつのおのみこと)、表筒男命(うわつつのおのみこと)の住吉三神。
“最初”の筈なのに、住吉系の総本社はこちらではなく大阪の住吉大社となっている。こちらが最初としているのは、住吉三神が生まれたのが博多である、という考えによるものらしい。むう。

正式な事は解らないものの、正直あまり大きな神社ではなく、その辺りも影響があるのかも。趣があって良い神社ではあるんですけどねえ。

祭神:底筒男命(そこつつのおのみこと)、中筒男命(なかつつのおのみこと)、表筒男命(うわつつのおのみこと)
アクセス:JR博多駅 徒歩約15分

まだまだ。

高良大社

筑後国一宮、高良大社(こうらたいしゃ)。

高良山の山腹に鎮座する本神社。祭神は高良玉垂命(こうらたまたれのみこと)。記紀神話にも存在しない神様なのだが、その正体は不明。一応、江戸時代に俗説だった武内宿禰が公認とされたらしい。他にも、神武天皇の祖父ヒコホホデミとの説もあるとの事。
神社の創建は西暦400年。が、ご鎮座はもっと前との事。HPの年表が詳しい。 元々高良山は高牟礼山(たかむれやま)と呼ばれており、違う神様が居たという逸話も残っているらしい。

因みに、本殿は高良山の山腹にあるため、徒歩で行くとちょっとした山登りに。

山道の要所要所に宮やお寺の跡地が。

社殿。

祭神:高良玉垂命(こうらたまたれのみこと)
アクセス:JR九州久大本線 久留米大学前駅 徒歩約35分(行きは上りため、もう少し掛かるかも)

もうちょい。

千栗八幡宮

肥前国一宮、千栗八幡宮(ちりくはちまんぐう)。”栗”で”りく”と読む。珍しいなあ。

肥前国も一宮を名乗っている神社が二つあり、その一つがこの千栗八幡宮。

名前の通り八幡系で、祭神は勿論応神天皇。宇佐八幡宮の別宮の一つに数えられている。

…これと言った特徴が…。まあ、そういう処もあるという事で。

因みに、最寄駅は久留米駅ですが、神社があるので佐賀県。

祭神:応神天皇(おうじんてんのう)
アクセス:JR九州鹿児島本線 久留米駅 徒歩約35分
久留米駅でレンタサイクルしているので、自転車お勧め。

ラスト。

與止日女神社

肥前国一宮、與止日女神社(よどひめじんじゃ)。

肥前国もう一つの一宮。「淀姫神社」とも書き、別称として「河上神社」、通称として「淀姫さん」よ呼ばれているらしい。

祭神は與止日女命(よどひめのみこと)。神功皇后の妹と言われている。また、豊玉姫命(竜宮城の乙姫様)という説もあるとの事。
本神社のすぐ側には嘉瀬川があり、水神信仰として成立したしたものと見られているらしい。となると豊玉姫命説が現実味を増すか。

鳥居も狛犬も歴史を感じられ非常に良いです。決して広い神社では無いのですが、周りの静けさと相まって趣がありました。ちと遠いが、お勧め。

祭神:與止日女命(よどひめのみこと)
アクセス:JR長崎本線 佐賀駅から昭和バスで「川上橋」バス停下車すぐ
当然バスの本数は少ないので、バスで行く場合に事前に時刻表要確認。

以上。

これで昨年行った分は全てまとめられた。