Java製フレームワーク夢想するぞ

2008/01/13 00:11

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

忘れないうちに書いておこう。きっと…。

誰かが作ってくれるだろう…

DjangoのDRYっぷりは徹底しています。

どのくらい徹底しているかというと

  class Entry(models.Model):
      title = models.CharField(max_length=100)
      body = models.TextField()

  class Comment(models.Model):
      body = models.TextField()
      entry = models.ForeignKey(Entry)

こんな感じのモデルがあるとして、EntryにいくつかのCommentが関連づいて保存されているとします。

  >>> c.entry #cはCommentのインスタンス

これでcに関連づいているEntryのインスタンスがとれます。まぁ、当然ですね。

  >>> e.comment_set #eはEntryのインスタンス

これでeに関連づいているCommentのインスタンス(のリスト)がとれます。

片方に向けて関連が定義されていれば、当然逆方向からも関連してるよね。二回書くのはDRYに反するよね。ってのが、Djangoの言い分です。

今回書いておきたかったのは、こんなことではありません。

ふと、JavaでDRYでらくちんなWebアプリケーションフレームワークを作ろうとしました。フツーにJavaでDjangoがしているようなことをしようとすると、コンパイルすらできません。

Entryクラスにcomment_setなんて名前はないので、Java的に当然ですね。

実行時にcomment_setという名前を追加するのは、javassistとかを使えばできるんですが。。。

とPython温泉でずっとJavaを書きながら悔しがっていました。

が、しかし!

Seasar Conference 2007 Autumnに行ってきたんですよ。古い話ですがw

Irenkaっていうプロジェクトがありました! コンパイル時ソリューションです!

Eclipseがコンパイルを行う際に動作するものだとのことでした。

そう!できるんですよ。Djangoと同じ仕組みが。

イメージはこんな感じ。

これで、Entryというクラスがjarの中に入って提供されていてもノープロブレム!

Prev Entry

Next Entry