Hash key in :conditions
July 2nd, 2008
昨日の 一件のコミット で、今まで ActiveRecordで不満に思ってたところがまた一つ解消された。
User.all :joins => :items, :conditions => {:age => 10, :items => {:color => 'black' }} |
今まで AR#findのパラメータって、:joins とか :includes はなんぼでもテーブルを多段にネストして書けてたのに1、
:conditions では何故か Hashで書けるのは自テーブル内のカラムまでだった。
つまり、今までは、
Item.all :conditions => {:color => 'black'} |
だったら完全に Rubyの Hashの世界でキレイに書けるくせに、
ってことは、
SELECT "users".* FROM "users" INNER JOIN "items" ON items.user_id = users.id WHERE (items.color = 'black') |
を発行したかったら当然こうだよね、
User.all :joins => :items, :conditions => {:items => {:color => 'black'}} |
と書いてみたらダメで、この場合
User.all :joins => :items, :conditions => ['items.color = ?', 'black'] |
とか書かなきゃいけなかった。
ところが今回のパッチのおかげでごくふつうにこんなふうに
User.all :joins => :items, :conditions => {:items => {:color => 'black'}} |
なんでも Hashで書けるようになった、と。
めでたしめでたし。
Rails 2.1.1 も順当に良い改良がどんどん入ってて嬉しいですね。
1 参考: Cascaded Eager Loading が欲しい@くまくまー , Cascaded Eager Loading@くまくまー
acts_as_state_machine on active_model!
June 30th, 2008
なんと!
acts_as_state_machine が本日 Rails本家に取り込まれちゃった模様!
こいつを皮切りに、
http://github.com/rails/rails/commit/01db5ded54b0e3a2ea80d28e4841d40fcec23cdf
いくつかコミットが入っているが、なにしろサプライズなのが取り込まれた先のモジュール。
これがなんと、
ActiveModel::StateMachine
なのですよ!
いやー、aasmといえば最近 githubに載っかってきてて何人かで寄ってたかって gem化してて
しかも急激に機能が充実してきてて、という動きが気にはなってたけど、
でも中身見てみたら aasm_ とかダサいプレフィックスが付くようになってて、
なんじゃこりゃ?なにこの改悪?
とか思いつつ(こんなふうに)、
http://twitter.com/a_matsuda/statuses/844774379
http://twitter.com/a_matsuda/statuses/844778200
でもなんとなく目が離せないからぼちぼちウォッチを始めてたところに、この電撃 active_modelデビュー。
超ビックリ。named_scope以来のビックリ。
これは Rails 2.1.1の「新機能」の目玉は
ActiveModel
ということで、どうやら間違いないだろう。
あの、妙にカッチョイイけど機能的にはちょっと荒削りだった aasmの DSLが
本家に取り込まれてどう化けるのか、非常に楽しみですね。
Van der Graaf Generator
June 30th, 2008
Van der Graaf Generatorの初来日公演。
http://www.bigstream.co.jp/artist/0806_vdgg/index.html
今回の初来日は追加もあわせて4日も演ってるらしいが、僕の場合、4日とも観るほど VdGGには強い思い入れはない。
そもそも、Peter Hammill名義では何度か来日してるらしいが、それすら観に行ったことはない程度。
とは言っても、さすがにこの歴史的初来日を逃してしまうと10年後ぐらいにすげぇ後悔してしまいそうな気がするので、
とりあえず土曜日の1日だけ行ってみた。
会場に着いてみて驚いたのは、収容人数がやたら少なかったこと。O-Westって椅子が入るとあんなに狭いのか。
そして客の入り具合は当然超満員。それで追加含めて4日も演るらしい。
だったらもっと大きい小屋でやれば良いのに、と、普通なら思うところだが、
どうやら業界的にはそうもいかないようで、「VdGG再結成で初来日!」というコンテンツだと、
100×4で延べ400人は集まるけど、400×1で400人の集客はできない。
つまり、チケット代が15,000円だろうがなんだろうがこのジャンルのライヴなら絶対来るし
同じバンドを2回でも3回でも4回でも観るような人がメインのターゲットの客層である。
だから、当然客席にはこのジャンルでは必ずお見かけする常連さんがちらほら。
自分もどちらかと言えばそっち側の人間なのでいつも思うんだが、この業界構造ってもうちょっと
どうにかならないものかなぁ。
今回も9,000円の立ち見席のほうにはけっこう若いお客さんの姿も見られたし、自分の知らない良い音楽を
きっかけさえあれば聴いてみたいという人たちはまだまだ少なからず居るはずなのだ。
例えばネットをうまく利用するなどして、どうにか「いつものお客さん」以外にリーチする売り方ができれば
もうちょっと健全な市場になると思うんだが。
Bats & Terry
June 29th, 2008
愛機Mac Book Proのバッテリーが日に日にヘタってきていて、
最近では10分〜15分ぐらいで電池が切れるようになってきた。
というのを、RubyKaigiの時に @norio さんに愚痴ったところ、
「あ、それ俺も同じ症状だったけど、アップルストア行ったらバッテリー換えてもらえましたよ」
と素敵な情報を頂いた。
マジかー、と思って、銀座の Apple Storeに行ってみたところ、
システムプロファイラ → ハードウェア → 一番下の「電源」
のところをチェックされ、
「あー、これたまにあるんですよねー。これは電池交換ですねー。」
と言われ、その場でさっくりとバッテリーユニットを新しいやつと取り替えてもらった。ありがたや。
というか、冷静に考えると単なる初期不良なんだが、対応が良いとそれすらも逆に良い印象に変えられたりするもんなんだな。
自分も物作りに携わる人間として、これにはちょっと学ばされた気がする。
Apple Store++。
そんなわけで、サポート担当のお姉さんが言うには、上記図中の「完全充電時の容量」が、
MacBookProだと「4000は欲しい」んだそうだ。
購入後2年以内なら無償で交換してくれるそうなので、
皆さんも一度ここの値を調べてみてはいかがだろう?
The 8th night of JRuby Japanese Tour 2008
June 29th, 2008
来日中の JRuby の Charles Nutter のジャパンツアーの最後の思い出に、ということで何故かこんなひどい話がもちあがり、
http://twitter.com/ko1_twitter/statuses/844148049
アキバのメイド喫茶というやつに行ってきた。
店内は写真撮影お断りとのことだったので、残念ながらメイドさんと一緒にミートソースを「まぜまぜ」する
Charlesのかわいらしいお姿をここで公開することはできないが、
“maze maze” と “moe moe” の2単語はバッチリ覚えたよ!家に帰っても使うよ!
と嬉しそうにおっしゃっていたので、まぁお連れした甲斐があったというものだ。
よかったよかった。
あわせて読みたい:
JRuby Japanese Tour 2008 Wrap-Up!
Chad Fowler's KANJI Writing
June 27th, 2008
RubyKaigi 2008の会場で、 Chad Fowler にサインもらった!
しかも漢字で!
さて、今回の来日で Chad先生は3週間ぐらいご滞在で日本中あちこち観光して回っておられるようだが、
「東京ではどこに行きましたか?浅草とか?」って訊いたら、
「Osakusa?なにそれ?知らないなぁ」と言われたので、
思わず浅草の写真が載ってる僕のネームカードを渡そうとしたら、
なんとお返しに名刺を頂戴してしまった!
我が家の家宝にしよう。
New Wave of Database Programming with Ruby 1.9 on Rails 2.1
June 26th, 2008
New Wave of Database Programming with Ruby 1.9 on Rails 2.1 というタイトルで、
RubyKaigi 2008で LTした。とりあえず発表資料は こちら 。
(2008/07/01追記: そうか! slideshareなんだからそのまんま貼っちゃえば良いのか!
ということにようやく気づいて以下に貼った)
ところで、これがまたどうも何故か Java方面から思わぬ反応を頂いているようだ。
http://d.hatena.ne.jp/higayasuo/20080624/1214305064
違うよ><全然違うよ!!
Javaは僕にオブジェクト指向を教えてくれた思い出深い言語なので、ひがさんのとこのコメントにも
書いたとおり嫌いとか対立とか全く思ってもいないし、ていうかそもそもそんな後ろ向きな話題には
微塵も興味ないし。
そんなことより、僕が RubyKaigiの LTという競争率の高い貴重な機会を頂いてみんなに
訴えたかったのは、「 Javaなんてう××!! 」とかそんなんじゃなくて、スライドの一番最後。
Rails派のみんなももっと Ruby 1.9使おうぜ!
っていうこと。
僕の周りだけかもしれないが、なんか仕事で Rails使ってます。みたいな人に限って、
「Ruby 1.9って、まだ Railsまともに動かないんでしょ?
そんなの使えねーよ。正式に対応するようになってから使うわ」
って言ってる人が多くて、
「Rubyってあの Railsを動かすための言語 でしょ?」
とかって、あながちネタじゃなくてけっこう本気で思ってる人も居るような気がしてならない。
みんな Rubyがそこにあることが当たり前になりすぎて忘れちゃってるんじゃないだろうか?
思うに「言語」を作っちゃうなんて、どう考えてもめちゃめちゃ凄すぎると思う。
Ruby-coreの皆さんは日本の宝、いや、人類の宝ですよ、ホントに。
しかも、Ruby 1.9は実に素晴らしい言語ですよ!
言語仕様だって1.8に比べても確実に良くなってるじゃん!
というのを LTではきちんとアピールしようと思ってたんだけど、
当日ギリギリに作ったスライドがかなりの枚数になってしまい、
結果として、その main ideaの部分に辿り着く前に時間切れで終わってしまった。
その後ささださんにも「Ruby 1.9の話が全然出てこなかったじゃーん」と
厳しくダメ出しをされてしまった。
どうやらささださんをはじめ、選考してくださった皆様を大いに失望させてしまったようで、
本当に不甲斐なく、情けない。
そんなわけで、Ruby方面の皆様には、絶対にいずれ僕なりにできる何らかの方法で、
恩返しをさせていただきたいと心の底から思う。
今に見てろよ。
RubyKaigi 2008
June 23rd, 2008
RubyKaigi 2008 が無事終わった。楽しかった。
とりあえずざっくりまとめ。詳細についてはあとで書く。
- 生 Chad Fowler と喋った。名刺ゲット & 漢字でサインしてもらった!
- その他にも色々サイン本収集祭り。
- 0日目、1日目は Rails勉強会@東京ブースのブース番。
刷っていった紙 & 舞波CDもおかげさまで無事完売。
- 1日目ブース番してたらRamazeの人が来て「チケット持ってないから会場入れないんだよー」とか言ってた。
ちょうど xibbarさんがチケットを余らせていたので、xibbarさんにお願いして1枚プレゼントして差し上げた。
翌日も来られていた & Reject Kaigi で発表までしてもらえて、良かった良かった。
- 笹田研 すごいなぁ。おめでとうございます。
- 夜は3日連続で ビール会議 。普通じゃ絶対知り合う機会も無いようなすごい人とか遠い人とかいろんな人と飲んで話せた。
- MacRubyすげぇ
- Rails系セッションの座長をやった。
- Regional RubyKaigi@東京!
What's new SINCE Rails 2.1
June 20th, 2008
さて、今日からいよいよ RubyKaigi 2008 だ。
今回の RubyKaigiで新設された「コミュニティ枠」で Rails勉強会@東京 としてもブースを設けることになり、
せっかくだから何か出し物をやろうよ、という話になって、そのうちの1つとして、
- 各自何か好きな内容で適当に cheat sheet みたいなものを作ってきたのを持ち寄って紙で配ってみる
という企画(?)をやることにした。
そこで、昨日僕が思いつきで作ってみたのがこちら。
Rails 2.1 “以降” にコミットされた新機能たち
自分的にはひょっとして前回の勉強会でやった What’s New in Rails 2.1 のまとめみたいなのをやる役を期待
されてるかな?とも思ったけど、いまさらこのタイミングで「Rails 2.1 の新機能たち」をまとめて直してみても
なんかもうネタの鮮度が悪すぎて全然おいしくないし、そんなの これ 見れば良いじゃん、とか言われそうなので、
敢えて Rails 2.1.0 リリースからわずか2週間強の間に Rails2.1系masterに新しく実装されてコミットされた新機能
をピックアップして1枚の紙にまとめてみた。
もろはしさんには
「ちょwwww」
とか言われた。ひねくれ者ですみませんねぇ(笑
さて、まとめ始めてみてびっくりしたが、たった2週間程度の間に Railsにはものすごい量のコミットが入っている。
実際、今回のまとめも紙1枚に収めるためにかなり内容を削っているが(パフォーマンス周りとかバグ修正とか)、
それでも勉強会が1回開催できちまうくらいの結構なボリュームなんじゃないだろうか。
こういう切り口であらためて見てみると、やっぱり Railsっていうソフトウェアは「安定版」がリリースされた直後
というこんな時期でも全然「安定」する気なんか無くて、常に休まずに前へ前へと進化し続けているフレームワーク
なんだなぁ、という、そんなことを強く実感させられる。
つまり Railsはいつまでも「未完成」で「不安定」で「不定形」なフレームワークなんだな。
だからこそ毎日コード書いてんのにまだまだ毎日のように新しい発見があるし、毎月毎月マニアどもが寄り集まって
「勉強会」なんてものを開催して勉強し続けないとよくわかんないし、という事態になっちゃってるわけなんだし、
こっちとしてもそれでこそウォッチのし甲斐があるというものだ。
本を1冊買ってきて読んだら全部わかっちゃう程度のものだったら逆に面白くない。
だから、僕もよく「Railsを勉強したいんですがどの本を読んだら良いですか?」とか訊かれるけど、そんな
これさえ読めばOK、なんて都合の良い本はあるわけない。本に書いてあることなんか全部 Railsの進化の過程の
ある瞬間を切り取った一部分に過ぎないし、第一、出版されたころには情報はもう古い。
でも「読むな」とは言わない。歴史や過程を知ることも重要な勉強だからね。だから僕の答えは「 全部読め 」。
さて、どうやら僕にとってはそのあたりが Railsを使い続けている最大の理由なわけで、たぶん Railsが「安定」
なんかしちゃったら僕は Railsを使うのをやめてしまうのだろう。
レールが終点に行き着いちゃってそれ以上延びなくなっちゃったら、それはもはやアジャイルではなくなる。
つまり「変化」することを放棄してしまうことになるからだ。
もし仮にそんな「Railsの終点」ができたとしたら、それはその次の瞬間からどんどん古くなっていき、
やがて価値を失っていく。VBやらEJBやらを見ればわかるように、歴史上のある時点で最良と言われた選択肢が
その後にわたってずっと最良であり続けたことなんてないからだ。
いや、とは言ってもやっぱり顧客やエンドユーザからしてみればせめてフレームワークぐらいは
「安定」してて欲しいもんだよなぁ、とか考えてみると、なんだかちょっと面白いジレンマかも?
などなど、RubyKaigiの会場でこの1枚の紙っぺらを手に取ってくださった皆さんも、そんなことを
感じたり考えたりしながら眺めてくださったら良いかもなぁ、と思っております。
begin
June 20th, 2008
今更ながら、ブログをすなってみることにした。
当面のところ、Rubyとか Railsとか RSpecとか iPhoneとか
そのあたりの先っちょ方面の覚え書きっぽいものが中心になるはず。
今後ともよろしく。