第6回Rails勉強会

今回も日曜日に行ってきました。
いつのまにやらもう火曜日、議事録は完全に出遅れてしまいましたが、今回も楽しかったです。そして翌日は軽く二日酔いでした。反省。

前半セッション:SeasarRails

Seasarの各種プロダクトを使ってJavaRailsを作れないか、という話。もちろんJavaRubyでは言語の特徴も違えば適している用途も違いますが、そのへんはおいといて。良くいえば思考実験、悪くいえばネタセッションだったりしました。

オーナーのyuguiさんはじめ、参加者の多くが議事録なんかを丁寧に書くタイプの人だったので、私は早々に議事録係を辞退。気楽に参加してきました。

いろんなテーマで話したんですが、自分のなかでJavaRubyの違いを実感したのは『JavaActiveRecordのような宣言的な書き方はできないか』というトピックでした。後半セッションのvalidates_*みたいな感じですね。で、Javaではこういう記法は難しく、アノテーションなどで実現するのが自然なんじゃないか、という話で落ち着きました。

というのも、あの手の宣言的な記法は、ActiveRecord::Baseのクラスメソッドであり、()が不要なRubyシンタックスもあってあのように書くことができます。
RubyのクラスはClassクラスのインスタンスを定数に代入したものであり、つまりクラスもClassインスタンスであるため、クラスメソッドはそのClassインスタンスの状態を変える(インスタンス変数を操作する)ことが容易です。
対してJavaのクラスメソッド(staticメソッド)は単に名前空間の区別*1にのみ使い、クラスの状態を変えたり足したりする用途には使わないほうがよいような気がします。やはり実行時にクラスに機能を追加/変更したりするのはJava的ではないということでしょうかね。

え〜、そしてほんとに作るんでしょうかね? > SeasarRails

Validationについて

これは自分がセッションオーナーに。
参加してくださった方々が、既に詳細な議事録を作ってくださってます。

あとはValidationsの実装をお伝えする際に出したサンプルです。下記の拙エントリをご覧くださいませ。

懇親会

懇親会へ参加した15名は全員がRuby会議参加予定(チケット確保済)だということにびっくり。あれだけの競争率だったのによくぞ、と思います。土曜日にとれないまま勉強会に行ったらさびしかったんだろうなぁ、と。
あとは延々二次会まで。二次会ではRails本の打ち合わせや人生相談をしたんですが、そのあいだもず〜っとビールを飲んでいたら翌日の朝までちょっと残ってしまいました。相談次項は昨日今日と無事に前に進みました。三歩進んで二歩下がっても、前進には違いないです。

*1:staticな変数にアクセスできますが、たいていstatic finalだったりして、Ruby程それをいじる習慣はないような気がします