システム開発において、やはりデータ設計がしっかりできていないと、後々仕様変更などで苦労するものです。また、技術者の異動や、ユーザ(お客様)も人事異動により業務やシステムを知らない人がシステムのユーザになることも頻繁にあると思います。
データ中心アプローチ(DOA)の専門家ではありませんので、それは専門の書籍などで理解していただきたいと思いますが、やはりユーザと技術者とで認識のズレ(齟齬)がないように辞書があったほうが良いですね。
開発工程が進むにつれて、技術者も増えるので、情報共有という点でもはやり辞書(データのリファレンス的な物)は必要ですね。
気が向いたので、JRuby on Railsの環境で構築することにしました。
まずはJRubyをダウンロード。環境はWindows XP。(この環境はいずれ変えてしまうかも知れません)
http://jruby.org/download からJRuby1.5.6をダウンロードしました。Rubyの1.8.7相当になります。(>JRuby -v で確認)
JRuby1.6.0.RC1もリリースされているようですが、Ruby1.8.7相当の方でとりあえず十分だと思うのでまずはこのバージョンを選択。
またWindows環境なので、JRuby 1.5.6 Windows Executable (md5, sha1) をダウンロード。
exe形式の実行ファイルなので、インストールすると、Pathにインストール先のbinディレクトリ(Windowsの場合フォルダと言いますが、ディレクトリという文言を使用させてもらいます)が追加されます。
次に Rails をインストール。バージョンを指定しないと Rails 3.0 以上がインストールされてしまうようで、2.3.xを指定します。
今回はバージョン2.3.xで現時点で最新の 2.3.8 を指定しました。
NetBeansもインストールされている環境なので、NetBeans上でRailsの開発もできるのですが、今回敢えてコマンドラインから環境を作ることにしました。
>gem install rails --version 2.3.8
JRuby limited openssl loaded. http://jruby.org/openssl
gem install jruby-openssl for full support.
Successfully installed activesupport-2.3.8
Successfully installed activerecord-2.3.8
Successfully installed rack-1.1.0
Successfully installed actionpack-2.3.8
Successfully installed actionmailer-2.3.8
Successfully installed activeresource-2.3.8
Successfully installed rails-2.3.8
7 gems installed
Installing ri documentation for activesupport-2.3.8...
Installing ri documentation for activerecord-2.3.8...
Installing ri documentation for rack-1.1.0...
Installing ri documentation for actionpack-2.3.8...
Installing ri documentation for actionmailer-2.3.8...
Installing ri documentation for activeresource-2.3.8...
Installing ri documentation for rails-2.3.8...
Installing RDoc documentation for activesupport-2.3.8...
Installing RDoc documentation for activerecord-2.3.8...
Installing RDoc documentation for rack-1.1.0...
Installing RDoc documentation for actionpack-2.3.8...
Installing RDoc documentation for actionmailer-2.3.8...
Installing RDoc documentation for activeresource-2.3.8...
Installing RDoc documentation for rails-2.3.8...
続いてデータベースはMySQLを使用するので、アダプタをインストールします。
>gem install activerecord-jdbcmysql-adapter
JRuby limited openssl loaded. http://jruby.org/openssl
gem install jruby-openssl for full support.
Successfully installed activerecord-jdbc-adapter-1.1.1
Successfully installed jdbc-mysql-5.1.13
Successfully installed activerecord-jdbcmysql-adapter-1.1.1
3 gems installed
Installing ri documentation for activerecord-jdbc-adapter-1.1.1...
いよいよプロジェクトを作成します。
今回プロジェクト名はnew_windとしました。データベースはデフォルトだとSQLiteが指定されるようなので、mysqlを指定します。
でも、作成されるconfig/database.ymlのadapterにmysqlと指定されてしますので、これを生成後にjdbcmysqlに変更する必要があります。
>rails new_wind --database=mysql
exists
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
create doc
create lib
create lib/tasks
exists log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create test/fixtures
create test/functional
create test/integration
create test/performance
create test/unit
create vendor
create vendor/plugins
途中省略
create log/development.log
create log/test.log
プロジェクトが作成できたら、カレントディレクトリをプロジェクトに移動します。
>cd new_wind
続いてデータベース作成です。
JRubyではなく、Rubyであれば >rake db:create で良いのですが、JRubyの場合、
>jruby -S db:create のように作成するようです。
ですが、このコマンドでデータベースを作成した場合、エンコーディングがutf8にならないようなので、mysqlのコマンドで作成しました。
mysql> create database new_wind_development default character set utf8;
あまり真面目に考えていないので、まず作成するテーブルは”ドメイン”と”辞書”の二つ。
ドメインはその項目が紐づく業務をしていします。例えば、販売管理、会計など。
辞書は項目、つまりデータです。名称(論理名)と、物理名、型、桁数、説明(備考)、ドメイン等を登録したいと思います。
では早速scaffoldで作成。(以下は辞書のテーブルの足場(scaffold)を作成)
>jruby -S script/generate scaffold dictionary logical_name:string physical_name:string dom
ain_id:integer data_type:string data_digit:string remark:text
JRuby limited openssl loaded. http://jruby.org/openssl
gem install jruby-openssl for full support.
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/dictionaries
exists app/views/layouts/
exists test/functional/
exists test/unit/
exists test/unit/helpers/
create public/stylesheets/
create app/views/dictionaries/index.html.erb
create app/views/dictionaries/show.html.erb
create app/views/dictionaries/new.html.erb
create app/views/dictionaries/edit.html.erb
create app/views/layouts/dictionaries.html.erb
create public/stylesheets/scaffold.css
create app/controllers/dictionaries_controller.rb
create test/functional/dictionaries_controller_test.rb
create app/helpers/dictionaries_helper.rb
create test/unit/helpers/dictionaries_helper_test.rb
route map.resources :dictionaries
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/dictionary.rb
create test/unit/dictionary_test.rb
create test/fixtures/dictionaries.yml
exists db/migrate
create db/migrate/20110115075258_create_dictionaries.rb
続いてテーブルの作成。
>jruby -S rake db:migrate
(in C:/Documents and Settings/t0079/My Documents/NetBeansProjects/new_wind)
rake aborted!
The driver encountered an unknown error: com.mysql.jdbc.exceptions.jdbc4.MySQLSy
ntaxErrorException: Unknown database 'new_wind_development'
ここで、database.ymlのadapterにjdbcmysqlを指定したのに、jdbcドライバな無いと怒られてしまいました。
(実はデータベースも名前を間違えて作成してしまったので、その点も指摘されたメッセージが表示されています)
lib/jarディレクトリの下にJDBCドライバを配置しなければなりません。
jarディレクトリは存在しないと思いますので、jarディレクトリを作成し、その中にMySQLのドライバの含まれたjarファイルを置いてください。
気をとりなおして再度テーブルを作成。
>jruby -S rake db:migrate
(in C:/Documents and Settings/t0079/My Documents/NetBeansProjects/new_wind)
== CreateDictionaries: migrating =============================================
-- create_table(:dictionaries)
-> 0.0310s
-> 0 rows
== CreateDictionaries: migrated (0.0310s) ====================================
今度は成功。
続いてテスト用初期データ登録のためのmigrationを作成します。
>jruby -S
script/generate migration add_dictionary_data
JRuby limited openssl loaded. http://jruby.org/openssl
gem install jruby-openssl for full support.
exists db/migrate
create db/migrate/20110115075505_add_dictionary_data.rb
TODO:あとで、ここにテストデータのdb/migrate/20110115075505_add_dictionary_data.rbファイルの内容を追加します。
データ登録はmigrateの実行で行います。
>jruby -S
rake db:migrate
(in C:/Documents and Settings/t0079/My Documents/NetBeansProjects/new_wind)
== AddDictionaryData: migrating ==============================================
== AddDictionaryData: migrated (0.2970s) =====================================
これで、データが登録されました。
次は、ドメインを選択(プルダウン)で指定できるようにしましょう。