LuRuJuの内部構造
アーキテクチャというほど大げさなものではありませんが、LuRuJuライブラリの内部構造のイメージ図は以下になります。

利用者がCRubyを使う場合、CRuby-JRuby間の通信手段としてdRubyとコマンドの2つを提供しています。利用者はConfigurationで、どちらを利用するか選択できます。
LuRuJuの使い方
LuRuJuのインストール方法、使い方は以下を参考にしてください。
また、CodeZineで既に、牛尾さんがLuRuJuを使用した記事を寄稿しているので併せて参照ください。
LuRuJuの本質的価値
ライブラリ開発であれSIであれ本当に重要はことは、利用者により多くの機能を提供することではなく、より高い価値を提供することにあると考えます。プログラマが一生涯で書けるコード量には限りがあるので、『一行あたりの本質的価値』を筆者は意識するようにしています。誰に(for whom)何を(what)提供するかです。
LuRuJuのねらい
では、LuRuJuの目的として、誰にどんな価値を提供するのか?
納期の短縮、ビジネス要件の複雑化、データ量や性能など、システム開発のハードルは年々高くなっています。その過酷さを打破しようともがくように、近年業務レベル、技術レベルでさまざまなフレームワークが乱立しています。技術レベルで言うとMVCベースのWebフレームワーク、O-Rマッパー、AOP、DIなどなど、枚挙にいとまがありません。
しかし、『システム開発は究極のオーダーメイド』。現場では世に出ているフレームワークだけではなく、経験豊富なプログラマが自動生成ツールや独自フレームワークを作って凌いでいるのが現状ではないかと思います。あくまで一つの意見ですが、多数、多機能のフレームワークを使って、教育コスト、設定パラメータのお化けと対峙するよりは、スコープを限定した最低限のフレームワークのみ使い、後は、必要であれば、その場その場で再利用を意識せずに独自に自動生成ツールやフレームワークをつくった方が実は効率的ではないでしょうか。
MDAやSoftwareFactoryなど、自動生成の仕組みを体系化、標準化する動きもあります。理念や目的はまったく正しいのですが、構想が大掛かり過ぎてスピードを求められる開発の現場にはなかなか浸透しないのではというのが正直な筆者の意見です(もちろん批判をしている訳ではありません。MDAやSoftwareFactoryが有効な局面もあるでしょう)。
便利ツールやフレームワークを素早く楽しく作ってほしい。LuRuJuのねらいはそこにあります。
LuRuJuが可能にすること
JUDEはすいすいとモデリングすることができ、そのアウトプットは設計フェーズのフォーマルな成果物として十分なものになり得ます。さらにJUDEのモデルデータをインプットとして、DSL(ドメイン特化言語)構築力あふれるRubyを使って、現場のアイデアでさまざまな便利ツールを気持ちよく作ってほしい。エンジニアの創意工夫を最大限に発揮してほしい。そんな願いを込めています。
LuRuJuは誰に(for whom)何を(what)提供するか? ひとことで言うと、プロジェクトの命運をにぎるメタなプログラマに楽しさを提供する、といったところでしょうか。そしてそれが間接的にエンドユーザーにも価値をもたらすと思っています。
LuRuJu on Railsの紹介
ここまでLuRuJuの紹介は文章中心だったので、以降 LuRuJu on Railsの紹介では気分を変えて、実践派のCodeZineらしく、実際に手を動かしてその魅力を体感して頂きたいと思います。
LuRuJu on Railsの特徴
LuRuJu on Railsの特徴は次のとおりです。
- Railsプラグイン
- 「 RAILS_ROOT/app/model 」配下にJUDEファイルを配置するだけで、JUDEで記述したクラス図内の各クラスが、そのままRailsのモデル(MVCのM)として動作します。
- クラス間のリレーション(1対1、1対多、多対多)に対応しています。
- 継承に対応しています。実テーブルのマッピング方式は単一テーブル継承[STI]です。
- マイグレーション用のファイルにテーブルの列情報を手動で定義する必要はありません。Rakeタスクを実行するだけでJUDEで記述したクラスに対応するテーブルが作成されます。
- JUDEから自動的にロードされるクラス定義はRails設定パラメータであるconfig.cache_classesの設定と連動します。
必要な環境
OSはWindows系を推奨します。以下がインストールされていることを前提とします。
- JRuby(gemも含む)。筆者の環境はjruby1.1b1
- はじめてインストールされる方は「JRuby - Getting Started」を参考にしてください。
- Ruby(gemも含む)。筆者の環境は1.2.6
- Ruby on Rails。筆者の環境は1.2.3
- MySQL。筆者の環境は4.1.22
- JUDE。筆者の環境はJUDE Community 5.0.2。Professional版でも動作可能
- JUDEがはじめての方は、「JUDEで体感UML設計ツール」などを参考にしてください。
LuRuJuのインストール
LuRuJuをインストールします。既にインストール済みの方は読み飛ばしてください。
以下のコマンドでJRuby、CRuby上にLuRuJuをインストールします。
C:\>jruby -S gem install luruju Bulk updating Gem source index for: http://luruju.com/static/download/ Successfully installed luruju-0.2.0
C:\>gem install luruju Bulk updating Gem source index for: http://luruju.com/static/download/ Successfully installed luruju-0.2.0
クラスパスに以下のJUDE APIのライブラリを指定します。ライブラリはJUDEインストール先の直下にあります。指定するライブラリは以下になります。
- JUDE Communityの場合
- jude-api.jar
- jude-community.jar
- JUDE Professionalの場合
- jude-api.jar
- jude-pro.jar
以下は、コマンドプロンプトで設定する場合の例になります。
C:\>set CLASSPATH=c:/Program Files/JUDE-Community/jude-api.jar;c:/Program Files/JUDE-Community/jude-community.jar C:\>echo %CLASSPATH% c:/Program Files/JUDE-Community/jude-api.jar;c:/Program Files/JUDE-Community/jude-community.jar
Railsプロジェクトの作成
Railsプロジェクトを作成します。プロジェクト名は注文管理システムを想定してpom(Purchase Order Management)とします。作成する場所はどこでも構いませんが、本解説では「C:\workspace」配下に作成します。
C:\workspace>rails pom
create
create app/controllers
create app/helpers
create app/models
:
:
:
LuRuJu on Railsのインストール
Railsプロジェクトのトップ(C:\workspace\pom)に移動します。以後RailsプロジェクトのトップをRAILS_ROOTとします。以下のコマンドを発行しLuRuJu on Railsをインストールします。
C:\workspace\pom>ruby script/plugin install http://luruju.com/svn/plugins/luruju-on-rails + ./luruju-on-rails/README + ./luruju-on-rails/Rakefile : : :
