SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

JUDEで描いたクラスをそのままRuby on Railsで動かすプラグイン

LuRuJu ~JUDEとRubyの出会い~


ダウンロード pom.jude (10.3 KB)

LuRuJuの内部構造

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

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
  • Ruby(gemも含む)。筆者の環境は1.2.6
  • Ruby on Rails。筆者の環境は1.2.3
  • MySQL。筆者の環境は4.1.22
  • JUDE。筆者の環境はJUDE Community 5.0.2。Professional版でも動作可能

LuRuJuのインストール

 LuRuJuをインストールします。既にインストール済みの方は読み飛ばしてください。

 以下のコマンドでJRuby、CRuby上にLuRuJuをインストールします。

JRuby上にLuRuJuのインストール
C:\>jruby -S gem install luruju
Bulk updating Gem source index for: http://luruju.com/static/download/
Successfully installed luruju-0.2.0
CRuby上にLuRuJuのインストール
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」配下に作成します。

Railsプロジェクトを作成
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をインストールします。

Railsプロジェクトを作成
C:\workspace\pom>ruby script/plugin install http://luruju.com/svn/plugins/luruju-on-rails
+ ./luruju-on-rails/README
+ ./luruju-on-rails/Rakefile
:
:
:

次のページ
JUDEファイルの作成

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

野村 周平(ノムラ シュウヘイ)

フリープログラマプログラマとして楽しくて幸せな人生を全うすることをめざし、日夜奮闘中。アジャイル、オブジェクト指向をこよなく愛するが、最近はRubyの言語仕様に感動し惚れ込んでいる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2377 2008/08/19 19:48

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー