トップ «前の日記(2009-12-03) 最新 次の日記(2009-12-05)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2009-12-04

_ RubyとRails

ジュンク堂で、前田さん、大場さん、松田さんのトークショー。

前田さんと言えば、ついにRubyの仕様ドラフトが公開されたわけで、ご多忙のことだと思うけど、その話は出なかった。でも、RubySpecを使って1.9.2のバグつぶしに協力して欲しい(そうしないとRuby 1.9完全対応となるはずのRails3も困るよね)という話はあった。

というわけで、AWDwR3は、汽車、ディーゼル車と来て、レールが敷かれていない空へ向かって飛び立ちそうなところに来た(で、Rails3=AWDwR4では空を飛んでいるだろうという話となる)。

RailsによるアジャイルWebアプリケーション開発(前田 修吾)

蒸気機関車が煙を吐いている。

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

もう石炭じゃないよ。

RailsによるアジャイルWebアプリケーション開発(Sam Ruby/David Heinemeier Hansson/Dave Thomas/前田 修吾)

っていうか、レールが無いところに向かっているんだけど。

それよりもおれは、スーパーサンプルになんか表紙が似ているようなのが気になったけど。

Ruby on RailsによるWebアプリケーション・スーパーサンプル(久保秋 真/後藤 修一/中村 真一郎)

以下、大体の内容。

で、3版になって何が変わったかというと、目次を見てもあまり変わっていない。とは言っても第2版は1.2系だが、第3版は2.2系。追加された章としてはタスクI(国際化)。でも松田さんによると不足。脚注で松田さんのプラグイン(i18n-generator)を紹介したのでそちらを使ったほうが良いかも。

第3部では第26章のActiveResourceの追加。でもいきなり使わない方法を紹介していたりしている。読むと興味深いけど。

というのは第3版のメインの著者はサム・ルビーだからだ。当然、RESTには一家言ある。

RESTful Webサービス(Leonard Richardson/Sam Ruby/山本 陽平/株式会社クイープ)

(サム・ルビーは名前はRubyだけど、むしろRESTの人だ)

それはそれとして、第21章のルーティングのテストの章が大充実でびびる。2.2系で変わったし。

というわけで、Rails3はもうすぐ出るけどアプリケーションについては2.2系とそれなりにコンパチなのでAWDwR3を買っても困らないよ。でもプラグイン作家とかは別問題だし、AWDwR3の濃いところに入り込むと当然また別の話だ。

WEB+DB PRESS Vol.54(WEB+DB PRESS編集部)

松田さんのRails3の記事が掲載される予定のWEB+DB。

というような感じでおもしろかった。

っていうか、そもそも前田さんはRails症候群糾弾者だし。

(Railsと言えば、おれはおれの本もすごく好きだけどね)

10日でおぼえる Ruby on Rails入門教室(arton)

_ トークショーのメモ

以下、ざっくりとしたメモ。実際には前田さんが振って、大場さんが方向性を示して松田さんが締めるというパターンが多かったように思うけど、メモだと振りと締めだけになっていたりするので、実際よりも大場さんの出番が少ない(という意味で、書いてある名前は単なる標識で実際の発言とは違う)。あと途中で角谷さんや卜部さんが出てきたり。
前田修吾
 普段は島根
大場寧子
 3年くらいRailsをやっている。元々Java。
 (一番いっぱいレビューの指摘をしたみたいだ)
松田明
 フリーランスのプログラマ。100%RubyとRails。
 宣伝:来月くらい。Head First Rails(O'Railey)の監訳
 
前田:Railsには詳しくないので詳しい話は松田さんに。
  第2版を読んだ/買った人……半分強
 いきなり第3版からでも問題ない
大場 第2部はあまり変わっていないが、アジャイルといえば客が上がって来たプログラムに注文を付けるような感じ。
 C(Customer)を「彼女」と訳して真実味がある。
前田 第3部は膨大なリファレンスなので、必要なところだけ読めば良いのでは。
 本来であれば、前半と後半の2部構成だと思うが、分冊すると売れないのではないかと思う。
●第3版で変わったところ
 目次を見るとあまり変わっていない。第2版は1.2系だが、第3版は2.2系になっている。
●追加された章
  第2部では、タスクI (国際化) ただし松田さんによれば不足。脚注で松田さんのGeneratorを紹介している
  第3部では、第26章のActiveResourceを追加。ただ、最初がいきなり別の方法の紹介。あまり使ってくれという感じではない。ただ、読むと興味深い。
大場:第21章のルーティングのテストが充実してびびった。
松田:2.2系で変わったので。
●レビューの感想
前田: 凝りすぎて(濃すぎて)バージョンが変わると動かない。
大場: 境界を泳がないとだめということを示している
松田: 表紙の画。レールから離れて飛んでってしまっている。
前田: 僕も……電車が速そうになっている。汽車、ディーゼルと来てなんか速そうだ。
前田:開発スタイルについての著者の主張が含まれているようだが。
松田:そもそも第一版はDHHとデイブトーマスが書いて、第2版は共著で、第3版はサムルビーという人で、だんだんDHHの本ではなくなってきている。
前田:元々初版もDHHはあまり書いていないということです。デイブ色が強い。
松田:DHHのポリシーは基本的には大好きだけど。Rails1はDHHで、Rails2くらいからみんな知っているし、
 Rails3が早くて今月出始めるんだけどMerbとかくっついているし、ActiveRecordだけじゃないよ、という具合に黄金のレイルが崩れる。
 Rails界がDHHのRailsからみんなのRailsになってきている。
 というわけで、Rails3だとレールはなくなっていて、それはみんなの心にある。
前田:みんなの範囲?
松田:開発者一人一人で探してくれと。
前田:Rails3の話になっているけど、この本はRails2なので。
 DHHの意に沿わないことは難しい。RDBの参照整合性制約を使おうとすると大変だし。サムルビーとかも外部キーを使いたいとか書いているけど、
 DHHは対応する気はないようだし。Rails ConfでもデイブがRailsに入れて欲しいのが参照性と複合キーともう1つあるのだけど、
 その後のセッションでDHHは否定していた。
大場:参照制約性は開発の初期では不要で後から入れれば良いと思う。
   schema.rbは使わない。
   cloneがschemaだと使っているか。
松田:FKが使えないのは信じられないけど、ひっかかるので開発をドライブしてくれない。本番前に付けるのがベストプラクティスかな。
前田:そういうプラグインを使うとバージョンアップすると動かない。
   レガシーなスキーマだと使いたいと言われる。共同開発時にデータベース設計者が複合主キーでなきゃいやだとか。
松田:基本的にはDHHが主張しているレールは良いものだから、できれば1から作ったほうが良いですね。
前田:Rails3になると、無理にActiveRecord使わなくても良くなるとか。
松田:そういう感じですね。
前田:DHHとサムやデイブの考え方は違うような。migrationとか。
松田:細かいところはいろいろあって良くて、そういうの含めてRails(第3版はそういういろいろがあっておもしろい)。migrationは良く使っている。
前田:この本には外部キーがあればアソシエーションを作りましょうみたいなところがある。
大場:おかしい。呼ぶ必要がない関連を張る必要はないし。誰も使っていないhas_oneとかでがんばっているとか。
 あくまでも実装という気はする。
松田:必要になったら書く。
前田:僕は最初から定義するかな。
大場:欲しいなら書けば良いじゃん。
 (会場だと1:2くらいで後派が多い。)
前田:僕はあまりアジャイルじゃないのかも知れない。最初にデータのイメージがあるのかも。
大場:関連で思いついたけど、STIとかしているとSTIに絞った関連もあるし、必ずしも関係だけではないという意識が強い。
前田:雑誌を読んでいたらSTI使うなとか書いていてショックを受けた。
 タイプ分岐は許せない。とするとSTI使うしかない。
大場:オブジェクト指向で継承するなら普通はSTIを使う
松田:STIは良い機能だけどデータベースがださい。テーブル名とか。
前田:マーティンファウラーの影響があると思う。
大場:STIにも問題があって、親子なら良いけど、3段とかなると途中で探しても取れないとか注意が必要。
前田:普通の継承したいときにSTIを使おうとするとはまるけど、この本にはそのへんの説明がある。
 RESTについて。RubyKaigiでDHHがこれからはRESTだと言ってて、今回2.0以降、スキャフォールドが一番RESTっぽいかな。
 Rails的なRESTというと、Uniform Resource Interface。
松田:RESTは技術じゃなくて思想で、RailsはRESTを一番忠実に実装したフレームワークだと思う。
 で、OrileyのRestful Web ServiceでもDHHが前書きで、サムルビーが共著だし。
前田:AddonPublishing Protocol (Sum Ruby)
 Rest+Railsは仲がよい印象がある。
松田:前田さんはあまりRestが好きではない?
前田:リソースっぽいものをRESTで表現するのは自然だと思うけど、業務システムに当てはめる必要はないような気がします。
 普通のユーザが利用するアプリケーションでステートレスとかあまり現実的とは思わない。
大場:Railsのリソースも妥協している(コレクションで増やすとRestじゃないとか言われるし)あまりがんばらなくても良いと思う。
松田:結構頑張る。Add Userではなく、Afiliation CreateだろうとDHHも言っている。
前田:APIで提供しないのならそこまではしない。
大場:それはありだと思う。
前田:プラクティカルに役立つ面と思想の2面があって、前者で十分だ。
大場:ガラスの仮面とRESTは似ている。すべては名詞側にする。
 ガラスの仮面でも「ありがとう」「ごめんなさい」とか数語で寸劇するのがあって、RESTというのは言語を絞った言語表現ということで。
松田:良いまとめ。
前田:RSpec、ActiveSupport
松田:この本ではActiveSupport
前田:ActiveSupportをどう思いますか?
松田:前田さんはActiveSupportけしからんと(Rails症候群)言ってましたよね。
前田:それをみんながやるのが良くないな。標準を置き換えるのは当たり前みたいに思っていると、追っかけるのが結構大変。
 Railsがやるのは良いけど、アプリケーションプログラマはそれをやってはだめかな。プラグインとか抽象化の過程で出てくるのは良い。
 そうでなければサブクラス化すれば良いでしょう。
 というわけで、セレクターネームスペース(1.9では実装されない)ですが、現実には手に入れられない。
 ActiveSupportで思うのは、英語的に読めることを重視していて、オブジェクトがそのメソッドを持つべきかというと逆だと思う(onday.agoとか)。
大場:そんなローカルなものを入れて欲しくないとは思うけど、blank?とかは良い。
●ActiveSupportで好きなメソッド
松田:Object#tryが大好き
前田:なんでもかんでもtryして捕捉できないのではないかと思った。
 本当に良いものならRubyに取り込むべきだと思う。今のActiveSupportのAPIはRubyには文化的に合わないと思う。
 ただ、Hashの機能の取り込み(Rubyっぽく)とか、今後はそういうのがあると思う。
Hash#inreferenceHash
松田:RSpec大好き。クールじゃないですか。
角谷:普通に使ってますよ。
松田:NaClはあまり好きではない?
前田:古い人たちが多いので。DSLの流れから取り残されているような感じはある。
松田:internal DSLは良いものだからみんな使おうと、Matzがキーノートで言ってた。CucumberとかRSpec。
角谷:最初は違ったけど宗派換えしたと言ってた。
前田:英語っぽい何かではなく、メソッド呼び出しとして読むから気持ち悪いのだと思う。
大場:自然な順は、RSpecの順で、assertは1回それをひっくり返していることに気づいたら戻れなくなった。
前田:そのあたりがオブジェクト指向の次なのかも。
松田:Ruby World Confferenceが松江で開かれて、1つのテーマが「松江のRuby、世界のRuby」。
 そこでジェイミーケンプラというRails最大の功労者(コミット一番いっぱいしている)(前田:中田+笹田 /2のような)が言っていたのは、
 「日本と世界、Railsとレガシー(Rubyコミッター)」のような対立。
 そのへんは、今、いろいろ聞けておもしろかった。
前田:コミッターにはそういう人が多い気がする。
 ここまでやってはいけないと我慢していたところを、Railsは踏み越えているようで嫉妬しているような。
●Railsの進化
前田:Rails3が開発中で結構、変わるようで。そのへんを。
松田:技術評論社のWEB+DBの12月号でRails3特集を書いたのでよろしく。
 かいつまむと、
  ・アグノスティック(選択の自由を与える)
    Railsっぽければなんでも良い ← Merbを取り込んだから
    Rackに載ればなんでもRails (レールなんて無いよ)
前田:ジェレミーが言っていたのは、元々Railsを支持していたのはスタートアップとか早くサービスを立ち上げたい人。
 MerbはRubyプログラマに支持されている。でも3では一緒だ。
松田:みんな動画を見ろと。
大場:Rails3というのは、現在のコードは割りと動くけど、それがone of 書き方となるということ?
 ActiveRecordを書かないRailsプログラマとかあり。
松田:アプリケーションはおそらくそのまま動くけど、プラグインとかは全滅します。
前田:この本はその点はアプリケーションだから問題ないけど、でも奥に入っているところは別。
松田:Railsはgithub、RubyはSubversion
前田:shyouheirubyは?
卜部:公式とは誰も言ってないですね。後で話しましょう。
前田:そろそろgit使わないといけないとは思う。
松田:github的なものとSubversionの何が違うかというと、みんなに開いているよというアティテュードの表明で、それがRailsが成功しているところだと思う。
 Gitの持つ変更しやすさのようなものがある。
大場:個人としては、SubversionからGitに移ってGitのほうが良いなと。
前田:Gitはマージをちゃんとしてくれるところが良い。
  Rubyのほうが若干保守的というか。
大場:逆じゃ怖いですね。
前田:保守的だとつまらないですよね。
松田:ドラスティックに変えたいとか思いますか?
前田:言いたいことは言わせてもらっているのでフラストレーションはそれほどないけど。いいよと言ってもらった仕様変更を覆されている。
卜部:そんな大変じゃないし、保守ブランチと新しいことするブランチは分かれているので大変じゃないです。
松田:聞いていると2倍大変そうに思うけど。
前田:RubySpecというスペックがある。それが1.9だと通らないので、1.9のバグを直すという作業と、スペックを直すという作業がある。
 Rails3はRuby 1.9なので、1.9.2を頑張らないとRails3が使えないとなる。
 RubySpecダウンロートしてトランクを動かして直せるところは直してください。

_ RubyとMS

IronRubyとは全然関係なく、Azureの.NETとRESTでRubyとやり取りするAppFabric SDK for Ruby Developerとか、AzureでRails動かしたり(昼にはindex.rhtmlが出てたけど今は名前が引けない)とかいろいろやっている。rubyonrails.cloudapp.netではmingw版1.8.7を使ってた。

追記:1.8.6では?とのことで、石坂さんも1.8.6と書いてますね。記憶違いだったようです。

本日のツッコミ(全4件) [ツッコミを入れる]
_ なかむら(う) (2009-12-04 09:16)

あれ、私が見たときは1.8.6だったような気が。見間違えたかな。

_ arton (2009-12-04 09:56)

むむ、僕の記憶違いっぽい。

_ ムムリク (2009-12-04 10:50)

なんと、とうとう無限軌道に舞い上がるのですか。<br>999 から苦情が来たりしてw

_ なかだ (2009-12-05 10:35)

「嫉妬」というより、いわゆる「厨二病」的な香りがしてちょっと


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|05|06|07|

ジェズイットを見習え