おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

B-1グランプリ2008を制した厚木シロコロホルモンを食べてみた

3年前くらいから、ご当地B級グルメNo.1を決めるお祭りB-1グランプリが開催されています。

B級ご当地グルメの祭典!「B-1グランプリ」in久留米 公式サイト

我が地元富士宮富士宮焼そばがこれまで2連覇しており、B級グルメ王者の名をほしいままにしていたのですが、2008年は厚木からの刺客厚木シロコロホルモンに王座を明け渡す事になってしまいました。

富士宮焼そばを下した厚木シロコロホルモン。どんな味か気になります。そこで昨日食べにいってみました。

感想

プリプリとした食感が○。塩だれをつけてビール&ごはんと一緒に食べると最高です。富士宮焼そばに勝るとも劣らない味ですね!

スモールステップ&パーフェクトマスター

最近、最新脳科学が教える高校生の勉強法に書いてあったスモールステップ&パーフェクトマスターというフレーズが自分の中で大ヒット御礼中です。これまでは「あれもやらなきゃなーこれもやらなきゃなー」で色々手を付けてどれも中途半端といった感じでしたが、「スモールステップ&パーフェクトマスター」を思い浮かべると、ぐっとこらえることができます。

よい概念にキャッチーなフレーズがつくと威力倍増ですね。

emacsとRinariで快適Rails開発!

emacsRails開発をする際、emacs-railsを使っている方が多いと思います。emacs-railsはとても便利なelispなのですが、最近は更新頻度が低く、rhtml→html.erbの対応も一部されていなかったりします。あとRspecの対応もイマイチ。emacs使いの人たちは一体どうやってRails開発しているのでしょうか?

そこでRinariですよ

Rails On Emacs | Google グループを見ると最近は"Rinari"の話題で持ち切りなようです。Rinariはemacs-railsとは違いコア部分を小さく保って、プラグインで拡張していくタイプのelispです。

Rinari: Ruby on Rails Minor Mode for Emacs

基本的には上記に全部書いてあるのですが、整理する意味でまとめてみます。

コア部分のインストール

まず、gitでダウンロード

git clone git://github.com/eschulte/rinari.git
cd rinari
git submodule init
git submodule update

.emacsに下記のように書けばコア部分の設置は完了です。

;; Interactively Do Things (highly recommended, but not strictly required)
(require 'ido)
(ido-mode t)
;; Rinari
(add-to-list 'load-path "~/path/to/your/elisp/rinari")
(require 'rinari)

上のほうでrequireしているido-modeですが、これはC-x C-fなどした時にファイル名の一覧をミニバッファに表示してくれ、さらにファイル名を補完できるモードです。ファイル名の一部を入力するか、C-sまたはC-rでファイルを選択して開く事が出来ます。最初はちょっと戸惑うかもしれませんが、慣れたら便利です。

ido-modeの使い方

詳しくは下記参照なのですが、こちらも簡単に整理してみます。

EmacsWiki: Interactively Do Things

  • C-sで次のファイルを選択、C-rで前のファイルを選択
  • tabで補完一覧表示。一覧が一つしかない時はそのファイルを開く。
  • C-fすると通常のC-x C-fの状態に戻る
  • //でルートディレクトリへ
  • C-x C-dでDired

Rhtmlオプションのインストール

次にrhtml(erb.html)を編集するときに使うelispをインストールします。rhtml(erb.html)用のマイナーモードは3種類から選べるようになっています。

  • nXhtml-Mode
  • MuMaMo-Mode
  • rhtml-Mode

nXhtml-ModeとMuMaMo-Modeは外部のプロジェクト。rhtml-ModeはRinariプロジェクトで作っているらしいので、僕はrhtml-Modeをインストールしてみました。GitHubからダウンロードして、.emacsに下記のようにすれば設定完了です。

;;; rhtml-mode
(add-to-list 'load-path "~/path/to/your/elisp/rhtml")
(require 'rhtml-mode)
(add-hook 'rhtml-mode-hook
    (lambda () (rinari-launch)))

rhtml-Modeは、htmlタグやerbのタグをインデントしてくれるminor-modeです。他にも機能があるかもしれません。が、erbのタグがきちんとインデントされるようになっただけで僕は今のところ幸せです。

Rinariのキーバインド(Navigation系)

C-c ; fがプレフィックスで、続くキーに対応するディレクトリをfindします。また、各ファイル間の関連にも対応しており、例えばUsersController.rb編集していてC-c ; f mとすると、app/models/User.rbを探し開きます。存在しない場合はapp/models/配下のファイルから選択します。

キーバインド findするディレクトリ
C-c ; f f RAILS_ROOT/
C-c ; f c app/controller/
C-c ; f m app/models/
C-c ; f v app/views/
C-c ; f h app/helper/
C-c ; f i db/migrate/
C-c ; f n config/
C-c ; f e config/environment/
C-c ; f j pubic/javascript/
C-c ; f l vendor/plugin/
C-c ; f o log/
C-c ; f p public/
C-c ; f s script/
C-c ; f t test/
C-c ; f w lib/workers/
C-c ; f x test/fixtures/
C-c ; f y public/stylesheets/
C-c ; f r spec/
C-c ; f z spec/fixtures

Rinariのキーバインド(その他)

部分テンプレート作成

view編集時に、範囲選択してC-c ; x するとその部分を部分テンプレートにできます。

rgrep

C-c ; gすると、railsプロジェクト上のファイルをgrepできます。.svn/配下のファイルは対象外なので地味に便利。

<%= %>の挿入

C-c ; eとすると<%= %>が挿入されます。snippetを設定したら必要ないかも。

部分テンプレートへ移動?

C-c ; ;とすると、<%= render の部分を探して、指しているテンプレートへ飛べるらしいのですが・・・僕の環境ではうまく動きません。解決法ご存知の方いたら教えてください><

(追記)
renderメソッドを使用している行でC-c ; pとすると、指しているテンプレートへ飛べます。

scriptの実行

C-c ; sとして、さらにscriptの名前を指定してやると対応するscriptを実行できます。

ちなみにこのキーバインドや、ここより下のキーバインドを試したときに、「Missing the Rails gem.」のようなエラーが出る方はEmacsのPATHの設定を修正する必要があります。僕は下記のようにして解決しました。

;; PATHの追加
(dolist (dir (mapcar 'expand-file-name '("/usr/local/bin")))
  (setenv "PATH" (concat dir ":" (getenv "PATH")))
  (setq exec-path (append (list dir) exec-path)))

Mac 以外の方は.profileにPATHを設定してやるとうまくいくらしいです。詳しくは下記参照。

execution problem - Rails On Emacs | Google グループ

sqlのコンソールを開く

C-c ; q として、その後ユーザ名やらパスワードをいれるとsqlのコンソールを開けます。

テストの実行

C-c ; t とするとテストの実行が出来るようです(rspec使いなので未検証)

Rakeの実行

C-c ; r として、rakeタスクを続けて書く事でタスクを実行できます。

script/consoleの実行

C-c ; c とすると、script/consoleが実行されます。

webサーバの起動

C-c ; w とすると、script/serverを実行したのと同じようにwebサーバが起動します。

snippet

Rinari本体にはsnippet機能はないようなので、別途elispをインストールしてやる必要があります。

yasnippet - Google Code
eschulte's yasnippets-rails at master ― GitHub

上記からyasnippetとyasnippets-railsをダウンロードして適当な場所に展開します。その後.emacsに下記のように設定してやります。

;; load-pathにyasnippetのパスを通す
(setq load-path (cons (expand-file-name "/path/to/yasnippet") load-path))

;; yasnippetのロード
(require 'yasnippet)
(yas/initialize)
(yas/load-directory "/path/to/yasnippets-rails/rails-snippets")

snippetがたくさん定義されました。やったね。

まとめ

現段階でもemacs-railsとほぼ同等の機能をもっており、今後も開発が継続されるはず(多分)なので、emacs-rails使いの方は乗り換えを検討してみてもよいのではないでしょうか。

英語の発音が良くなる本を買った

発音の勉強もしなきゃなーと思って買ってみた。今日からローテーション入り。

英語の発音がよくなる本
巽 一朗
中経出版
売り上げランキング: 1776
おすすめ度の平均: 4.5
2 表紙の女性は若かりし頃の写真です。。。
5 とにかく良い! 手に入れておくべき発音練習本
5 英語の勉強の最初にこれをやるべき
4 辞書のようにして使っています
5 DVDの効果が抜群!

最新脳科学が教える高校生の勉強法を読んだ

以前レバレッジ勉強法を読んで以来、復習って大事だなーと思っていて、実際に英語の参考書を繰り返しやり直したりしています。ですが、どのタイミングで復習するのが一番効率がいいのかについてはよくわからず、適当に復習していました。そんな折に下記の文章を読み、「最新脳科学が教える高校生の勉強法」を早速注文。今日読了しました。

復習の有用性と、復習すべきタイミング(何日後?・何回?)については、トニー・ブザン 頭がよくなる本や、最新脳科学が教える 高校生の勉強法が詳しい

勉強方法を勉強して分かった僕に足りなかった3つのこと - ひげぽん OSとか作っちゃうかMona-

まとめ

読んで気になった部分をメモ

  • もっとも人の心を落ち着かせ、集中力を高める色は緑色
  • モーツァルトを聞くと短期的にIQが8~9上がるらしい
  • 短期記憶から長期記憶に変わるかどうかの審査期間は約一ヶ月
  • 身につけたばかりの新しい知識よりも、脳の中でじっくり寝かせた知識のほうが、脳にとっては利用しやすい知識になる(レミニセンス効果)
  • 一度にたくさんの知識を詰め込むと、記憶の干渉が起こり、覚えが悪くなる。
  • 何か新しい知識を身につけたときには、その日に六時間以上眠る事が絶対に欠かせない
  • 感情が盛んなとき、好奇心が刺激されているときは物事を記憶しやすい
  • おなかが減ってるとき、涼しいときの方が物事を記憶しやすい
  • ○○ができたらご褒美。は心理学的に有効な手段
  • 記憶とは失敗と繰り返しによって形成され強化されるもの
  • スモールステップ&パーフェクトマスターこそが最短最善
  • 何かを行う時の集中力は初めと終わりに高くなる。(それを利用し、一回の勉強のサイクルを短くし何回も繰り返す事で集中力を高められる)
  • ある分野の理解の仕方を覚えると、他の分野に対する理解の仕方までもが上達する(学習の転移)。よって、複数の教科を均等に勉強するよりもまず一つの分野を極める方が長期的に見て得策。
  • 他の内容と結びつけて覚えると覚えやすい(ゴロ合わせなど)
  • 覚えた事を他の人に説明してみると覚える
  • 声に出したり紙に書いたりしながら記憶すると覚えやすい
  • 学習の転移には「べき乗の効果」があり、勉強の成果はあるときになって突然爆発するかのようにあらわれる。努力の継続が大事。
最も効率的な学習プラン
  • 学習した翌日に、一回目
  • その一週間後に、二回目
  • 二回目の復習から二週間後に、三回目
  • 三回目の復習から一ヶ月後に、四回目

まとめ

やっぱり勉強に近道なしですねー

最新脳科学が教える 高校生の勉強法    東進ブックス
池谷 裕二
ナガセ
売り上げランキング: 1747
おすすめ度の平均: 4.5
5 学問の王道を捜そう
5 脳の構造から説明しているので、納得感がある。高校生だけに読ませるのには惜しい一冊
2 うーん・・・・
4 学習法としては最も説得力ある良書、ただし他の書との重複が多すぎ
5 再認識