Seaser Conference 2009 Springに行ってきた

以下の内容を聞いてきました。

Slim3 on Google App Engine/Java (ひがやすを氏)

まず、がつんと言っておきたいことがある、というとこから始まった。この前ブログで書いていたことかなと思ったがそうじゃなかった。
GAE、BigTableという新しい技術に対して逃げ腰になっていないですか。もしそう思っているなら、それは老害の始まりかもしれません。

  • BigTableを見て(さわってみて)使えないと思ってないですか
  • サンドボックスの制限を見て使えないと思っていないですか

ってようなことを言っていた。そのくらい、GAEというものはこれまでの技術とは違っているということなんだね。
最近GAE for Javaが使えるようになったからひがさんはこれを調べて、Slim3をGAE/Jを前提としたフレームワークへと方向転換させた(Slim3単体でも使えるようだけど、メインはGAE/J)。それほど、GAEというプラットフォーム(?)に可能性を感じたんだろう。もしくは、SAStrutsとの差別化を図りたいってこともあったのかも知れないけど。
で、その方向転換にこれからどれだけの人がついていけるかってことも心配してたのかな。いや、Slim3はこれから普及させようって段階のプロダクトだから、それだけの方向転換があってもよかったのかもね。とはいえ、Slim3を追いかけてた人にとっては結構ビックリすることだったんじゃなかろうか。分からないけど。
ま、とにかくGAE/Jはいけると思い、Slim3はGAE/Jのフレームワークとして生まれ変わった。そして、GAE/JはこれまでのWebアプリケーションフレームワーク(DI,AOP、ORM)やRDBMSとは違った知識とノウハウが求められる。ひがさんはそれをみんなに知ってもらいたかったんだと思う。

GAEはスケールしやすい、らしい。Googleの構築したインフラの上で動くから、うまくやればどんどんスケールすることができる。規模がおっきくなっても対応できるって感じ?でも、GAEには制約が多いからこの制約の範囲内でうまいことやればってことらしい。この世は弱肉強食・・じゃなくて等価交換の原則がはたらいていて、何かを得るには何かを差し出す必要があるらしい。(はがれんか)ここでは、スケールするけど、制限はあるよってこと。

さて、Slim3の本題にはいろう。Slim3はもともとあった、DIやAOPなどの機能を省いて(GAE/Jの上では動かなかったり、必要なかったりする)Webアプリに必要なものだけに機能をしぼって、シンプルにまとまっているらしい。GAE/Jはそれ自体がフレームワークのようなものなので、この上にはシンプルなフレームワークが求められているんだそうだ。

  • Less is more

そんな言葉も。無駄をなくすと本質が浮かび上がる、みたいな。とにかく、シンプルにいこうってことらしい。

特徴としては以下の3点

TDD(テスト駆動開発)

これは、ご存知のとおり。テスト駆動開発。TDDを意識してフレームワークを設計されてるみたいで、デモのときもTDDが重要なんですよーってことでJUnitでテストして実行、テストして実行ってのを繰り返しおっしゃってました。
そして、コントローラクラス、テストクラス等を自動生成するための仕組みもあって便利(確かAntのgen_controllerで作ってたと思う)。さらにテストクラスでは、サーブレットをエミュレートしてくれるので、単体でテストが簡単に出来る。こんな感じ↓(内容は適当、思い出しながら書いてるので。でも雰囲気はこんな感じ)

public void runTest() {
    param("arg1", 10);
    param("arg2", 20);
    // 足し算するコントローラを実行する
    start("/add/calculate")
    assertEquals(30, requestScope("result"));
}
Hot Reloading

Hot Deployと同じです。多分。正確には違ったりするんだろうか。とにかく、ビルドなしに開発が出きるようになってます。

Type safe query

SQLを文字列で書くのではなく、エンティティのメタクラスという奴をを使ってクエリーを構築する(つまり、Javaのコードとしてクエリーを記述する)。そのため、コンパイルによるチェックが入るので便利ですよ、っと。

デモを見てて、コンパイルをしてるって感じが一度もなかった。スクリプト言語のようにさくさく、そしてTDDを実現することのできるフレームワークにしあがってるって感じでした。そして、GAE/Jに対応してるってこともあって、Slim3使ってみようかなと・・。(昨日はGWT&GAE/Jをやろうとして手詰まりになっていたので・・・)

Smart! Jiemamy DBの構成管理(都元 ダイスケ氏)

意外と期待していたこのセッション。Jiemamy(じーまみーと発音していた)とは、DBの構成管理を行うための方法論ということらしい。これは、マーチン・ファウラー氏の論文「Evolutionary Database Design」という論文に影響を受けて作られたものらしい。
まず、DBの構成要素として以下の3つが重要であるらしい。

  • 実体(テーブル)
  • 関連(エンティティ)
  • データ

で、どういう訳でこいつが必要なのかというと、Webアプリケーション開発にはだいたいDBも必要になってくる。アプリケーションは通常SubversionとうのSCMで構成管理されているけど、DBというのはこれとは別に管理されている場合がおおい。
実際、ER図はAというツール、DDLSQLファイル(テキスト)といった感じで管理し、これらの同期をとるのも一苦労。そして、SVNで管理してもER図などはバイナリである場合が多いらしい。つまり、変更があってもテキストファイルのように比較してマージということが出来ない。
そういうことがあり、Jiemamyが作られたんだって。
Jiemamyでは、DBの構成情報(実体、関連、データ)が一つのXMLにまとめられている。そのため、これをSVN等で管理してやれば、ソフトウェアと同期がとれる。また、XML(テキスト)ファイルのため、マージも簡単になるはず。
そうそう、EclipseプラグインでER図を書くためのものもあるので結構いいかも(ここで描いたER図がXMLとして出来ている)
さらに、Mavenを使って一発でDBを構築してアプリを動かすということまで出きるらしい。「mvn package」とこれだけで、ソースをチェックアウトしてDB作ってWarつくってってところまでやる、、だっけ?
こういうのが欲しかった、どこまで実際のプロジェクトで使えるか分からないけど、今度始めるプロジェクトには結構つかえるかも?試してみようかな。

Scalaのwebフレームワーク liftの紹介(尾崎 智仁氏)

BigtableとJDOの勝ちパターン(ひがやすを氏)

30人くらいの部屋だったため大混雑!あまりに多いので、後でまた時間を設けてセッションをやりますって言われたけど、つかれてきて早く帰りたかったので前の方で座ってみた。めちゃ疲れた。でも、そこまでして聞くからにはと集中して聞けた気がする。

JDOの勝ちパターンとあったけど、BigTableの説明で終わってしまった。
BigTableとはHashMapのようなもので、キーと値によるデータ管理を行うデータベースのこと。これまでの、RDBMSとちがって出来ないことがいっぱい。そして仕組みも全然ちがうのでこのキーを使ってどうデータを抽出するかってところをよく理解する必要がありそう。

BigTableではRDBと違ってキーでしかデータを抽出することができない。で、いままでの考え方ではキーだけで抽出ってどういうことって感じだけど。なんとなくわかったけど、説明できない・・。まとまったらまたアップしますm(_ _)m

そうそう、この内容は以下の本に書いてあるので後で読もう。まえは、難しくて挫折したけど、今回の話で概要が分かったのでちゃんとよめるかな〜。

まずは、Slim3をダウンロードして使ってみましょう〜。