トップ «前の日記(2007-10-31) 最新 次の日記(2007-11-02)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2007-11-01

_ RアW2

(AWDwR2ではなく、日本語版を元に略称を考える試み)

オーム社さんから献本していただきました。同時代に生きてて良かった!

RailsによるアジャイルWebアプリケーション開発 第2版(Dave Thomas/David Heinemeier Hansson/Leon Breedt/Mike Clark/Andreas Schwarz/James Duncan Davidson/Justin Gehtland/前田 修吾)

この本は、意外なほどコンパクトなんだけど(本屋に行って実物見てもそうは思えないかも知れないけど)、なぜかというと、ちょと信じがたいほど、ページの上から下までびっちり埋まってるからだと思う。あと紙が薄い(読みにくい薄さじゃないよ)。たとえばエッセンシャルWF:が約400ページで、こっちが約660ページだから、2:3なわけじゃん。でも、厚みに差はほとんどない。つまりは、非常に高密度なのであった。前田さん、お疲れ様。

ちょこちょこDavid曰くがあるんだけど、この(脱線するよ)ての著者側のオブジェクトが囲みにしゃしゃり出てくるスタイルを最初に目にしたのは、当然のことながら空手バカ一代だ。

空手バカ一代(1) (講談社漫画文庫)(つのだ じろう/梶原 一騎)

薄い本なので小指と薬指にはさんで引きちぎれるだろうと思ったが、実は電話帳よりページ数があるときては、話は別だ。厚みよりも枚数、これが生涯唯一の敗北の真相だ。大山培達(談)

というようなやつ。同じような感じで

テーブルスキーマをモデル定義の一部として扱うことに抵抗がなくなれば、DRYを守ることの利点がわかってくるでしょう。

とか入る(P.262ただし、部分)。いや、これは良くわかる。アプリケーションと一緒にテーブルがどんどこ変形(成長)していくというのは、僕にはとても新鮮だった。プログラムは成長するしリファクタリングでダイエットもしたりするけど、テーブルが追加や交換じゃなくてそのものが変形していくというのは、しかもそれがマイグレーションという名称でフレームワークに組み込まれているのは、新鮮だった。というか、これが当たり前になると、横に未来のためのカラムをたくさん持ち込んだりしなくても済むかも(という世界にいるわけだが)。

で、Davaid曰くでは、これがDRYだと言ってるわけだ。つまり、テーブルのスキーマにカラムが定義されているから、ActiveRecordには属性が定義されていない。うーん、本当にそういう理由なのか? と思わなくもないところが、大山総統の(談)に似ているところでもあるが、にも関わらず、なるほど、と納得したりもする。ORマッピングどころじゃないね。

あと、P.222のDavid曰くを読んで(そう、David曰くとかJoeの疑問とかは拾い読みして楽しいのだ)、思ったんだが、

Q: テーブル名(カラム名も)はなぜ日本語にすべきなのか?

A: それは、そのほうが会話のときに都合がいいからです。

ってのが成立するなぁとか。

良くわからない点もあって、で、そのDavid曰くとかはほとんどの場合、グレー地の囲みなんだけど、ところどころ白地のままのがあって、拾い読みしようと探していると探し損なうことがあることだ。

いずれにしても、P.282のDavid曰くは好きだな。

あと、P.275の「raiseすべきか、せざるべきか?」(飛べか飛ばぬかみたいだ)みたいに、なぜ同じfindがidではraiseで:firstならnilか、のAPIデザインの理由説明みたいなのもおもしろい。では、なぜ利用目的、実現方法、考え方が異なるのに同じメソッド名なのか? とか突き詰めて考えてみたり。メソッドを少なくして、1つのメソッドに複数のアプローチを混ぜるのと、1つのメソッドは1つの意味に限定するのと、どっちが(誰にとって)メリットがあるか? とか。

ってことは、

find(id)とfind(:first,...)とfind(:all,...)は実は、

find(id)とfind_first(...)とfind_all(...)の3つの異なるメソッドで、第1引数がメソッド名の一部だということではないかとか。コマンドとサブコマンドみたいだ。

もし、インテリセンス言語なら、後者がベターだろう。だって、findと打った時点でやりたいオペレーションの候補が選べる。

でも、スクリプト言語なので、前者がベターだろう。name errorと、couldn't find all ... with IDsじゃ、同じタイポなら後者のエラーメッセージのほうがましな気がする。どちらにしても3種類覚えなきゃならないとして、前者はコマンド1個とサブコマンド2個で、後者はコマンド3個。どちらも3個だが、フラットな3個を覚えるより、階層構造の3個を覚えるほうが簡単だと思うな(これは実感として)。

そのあたりが、

(IDEのような)サポートの多くはRubyには不要です
(P.22。このての名前がない囲みにもいろいろ主張があっておもしろいのだが)ということなんだろうな、と納得するのもまあ実感だ。

本日のツッコミ(全8件) [ツッコミを入れる]
_ 通りすがります (2007-11-01 20:49)

私の世代だと、プロレススーパースター列伝の「アントニオ猪木・談(といいつつ実は梶原・談)」って奴でした。

_ arton (2007-11-01 20:53)

おお、なるほど。あれおもしろいですよね。子供ころはすっかりだまされてたけど。

_ arton (2007-11-01 20:57)

(子供ころだまされてたのは、空手バカの(談)。でもスーパースター列伝も読んだ覚えがあるなぁ)

_ 通りすがります (2007-11-02 12:20)

私もだまされてました。事情を知ったときは大人の階段のぼった気がしました。多分梶原氏の頭の中では真実そういう事になってたんじゃないかなと思ってます。ジャイアントタイフーンも。

_ arton (2007-11-02 23:03)

ジャイアントタイフーンって初耳ですが、もしかして馬場?

_ 通りすがります (2007-11-03 03:23)

そうです。調べたら正式には「ジャイアント台風」でした。ここの紹介が雰囲気つかみやすいです。 http://pro.tok2.com/~sino777/v18.htm 当時の少年たちはみんな信じていたそうです。

_ はら (2007-11-03 10:16)

よーう指摘してくれた!!!あの囲み記事を見るたびに意識化で何かを思い出そうとしてもがいていたんだ。すっきりしたっ。

_ arton (2007-11-03 10:58)

いやー、ジャイアント台風はすげぇや。笑わしてもらいました>通りすがります<br>っていうか、「まぶたの上から目玉まで」というセリフが面白すぎる。<br>あのスタイル(内容はともかく)を見ると、どうしても空手バカ一代的な手法だなと。梶原一騎の影響力はすごいなぁ。>囲み記事


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え