Ruby および Java アプリケーションの併用
執筆: Tor Norbye、管理: Beth Stearns
2007 年 12 月 [リビジョン番号: V6.0--1]
この記事では、NetBeans IDE を使用して Ruby アプリケーションと Java アプリケーションを組み合わせる方法を説明します。
目次
記事での要件
この記事では、Java アプリケーションと Ruby アプリケーションを組み合わせる方法を説明します。途中、NetBeans IDE 6.0 での最新の Ruby 機能をいくつか示します。
この記事では、次が必要となります。
- Ruby テクノロジでのプログラミングの基礎知識
- 使用するコンピュータ上に Ruby (ダウンロード) を含む NetBeans IDE 6.0
設定の手順
主にデータベースの設定や TopLink JAR ファイルの取り込みといった、いくつかの設定作業があります。ここでは、必要な通貨データをデータベース表に追加する方法を説明します。Rails プロジェクトを設定したら、必要な TopLink JAR ファイルを追加します。
データベースは次のように設定します。
- CURRENCY という名前の表を作成します。
- CURRENCY 表に文字列型 (つまり VARCHAR) の列を 3 つ作成します。Country、Currency、および Name です。
- 表にデータを取り込みます。たとえば、次の 3 つの通貨を追加します。「USA」「Dollar」「USD」、「Czech Republic」「Koruna」「CZK」、「Norway」「Krone」「NOK」のようになります。さらに、必要に応じてほかの通貨を追加します。
また、NetBeans を設定して、データベース表にアクセスできるようにする必要もあります。つまり、必要であればデータベース用の JDBC ドライバを構成し、「サービス」ウィンドウにデータソースを追加します。
たとえば、次の SQL は、SAMPLE という Derby データベースに CURRENCY 表を作成します。ユーザー名とパスワードは APP/APP という組み合わせです。同じ SAMPLE データベースを使用する場合、SAMPLE データベースに接続したあとで、この SQL を IDE 内部で実行して表を作成できます。ユーザー独自の Derby データベースも、「ツール」>「Java DB データベース」>「データベースを作成」アクションを使用して、自由に作成してください。別のデータベースシステム上に同じ表を作成する SQL は、この例とは異なる場合があります。
drop table "APP"."CURRENCY";
create table "APP"."CURRENCY" (
country VARCHAR(20), currency VARCHAR(20), name VARCHAR (20),
id INTEGER GENERATED always AS IDENTITY);
alter table CURRENCY add constraint currencyPK PRIMARY KEY (id);
INSERT INTO CURRENCY VALUES ('USA', 'Dollar', 'USD',DEFAULT);
INSERT INTO CURRENCY VALUES ('Czech Republic', 'Koruna', 'CZK',DEFAULT);
INSERT INTO CURRENCY VALUES ('Norway', 'Krone', 'NOK',DEFAULT);
INSERT INTO CURRENCY VALUES ('France', 'Euro', 'EU',DEFAULT);
Java プロジェクトの作成
設定タスクが完了したら、プロジェクトを作成できます。まず Java デスクトップアプリケーションの作成から始めます。これは実際には Swing アプリケーションです。次に、データベースのバインドのオプションを選択します。ウィザードの手順に従って、プロジェクト (例では Money) をデータソース (例では Derby サンプルデータベース上の CURRENCY 表) に接続します。ボタンを何度かクリックするだけで、完全に機能的なデータベース CRUD アプリケーションが作成できます。
図 1: Money というデスクトップデータベースアプリケーションの作成

クリックして拡大
プロジェクトを右クリックし、「実行」を選択して Money アプリケーションを実行すると、次のような画面が表示されるはずです。アプリケーションを終了するには、Ctrl+Q キーを使用します。
図 3: Money アプリケーション
Java プロジェクトの編集
生成した Java クラス、特に Currency.java クラスの確認から始めます。ここでは、プロジェクトの一部を表示するためのヒントをいくつか説明します。
「プロジェクト」ウィンドウでプロジェクトの「ソースパッケージ」>「money」ノードを展開し、「Currency.java」をダブルクリックして「ソース」エディタでファイルを開きます。「エディタ」ウィンドウにすべてのクラスとそのコードが表示されます。
クラスのメンバー
Ctrl+F12 キーを押すと Currency クラスのメンバー一覧が表示されます。「メンバー」ダイアログを使用すると、クラス内を簡単に移動できます。
図 4: Currency.java クラスのメンバー
たとえば、クラスの定義を表示するには、「フィルタ」フィールドで「Cur」と入力します。
図 5: Currency クラスの定義

注: 生成した Currency.java コードが ID 識別子フィールドを正しく宣言していることを確認してください。識別子が生成済みで一意であることを示す 1 行を、Java ファイルに追加する必要があることがあります。識別子フィールドの正しいコードは次のとおりです。また、生成のタイプについての 1 行 (@GeneratedValue (strategy=GenerationType.IDENTITY)) を追加すると、インポートが見つからないエラーが発生し、その行に赤い下線が表示される可能性があります。これはエラー部分をクリックし、Alt+Enter キーを押すことで簡単に修復できます。
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private Integer id;
タスクリスト
IDE は、コンパイルエラーや警告などを表示するタスクリストを自動的に管理します。「タスクリスト」は Ctrl+6 キーを押すことでいつでも開いて表示できます。
図 6: タスクリスト
Currency のソースコードを確認します。Java Persistence API 注釈が含まれていることを確認してください。この注釈はデータベースの列へのバインドを示し、アット記号 (@) でマーク付けされています。たとえば、データベースの列へのバインドは、@Column に続いて、列の名前、および Java 変数です。この場合、@Column(name="COUNTRY") private String country; のようになります。
データベースの列にアクセスする Java クラスを作成する
CurrencyLookup という新規 Java クラスを作成する必要があります。これはデータベースの列である Java Persistence のエンティティーにアクセスします。あとで、Rails アプリケーションはこの CurrencyLookup クラスを呼び出し、データベースから通貨の一覧を取得します。IDE の「ソース」エディタのコード補完機能およびテンプレート機能を利用すると、このタスクが簡単にできます。
CurrencyLookup クラスでは、getAll メソッドを記述して、通貨の一覧を戻します。完成したメソッドは次のようになります。持続性ユニットの samplePU は、この記事の例で使用した SAMPLE データベースの名前と一致させてください。使用している持続性ユニットとは異なる場合があります。
public List<Currency> getAll() {
EntityManager em = Persistence.createEntityManagerFactory("samplePU").createEntityManager();
Query query = em.createQuery("select c from Currency c");
return query.getResultList();
};
- 「ソースパッケージ」で「money」ノードを右クリックし、「新規」>「Java クラス」を選択します。
- 「新規 Java クラス」ダイアログの「クラス名」フィールドに「CurrencyLookup」と入力します。ダイアログで場所が「ソースパッケージ」、パッケージ名が「money」であることを確認してください。違う場合は、フィールドをそのように設定します。IDE は CurrencyLookup.java クラスを作成し、それを「ソースパッケージ」>「money」ノード内に配置します。
- 全通貨の一覧を戻すメソッドを記述します。IDE の機能 (コード補完、インポート修正など) が役立ちます。まず CurrencyLookup クラス内のどこかで「pu」 (public の場合) と入力し、続いて Ctrl+ スペースキーを押します。IDE がコードを補完することを確認します。ここで示したショートカットキーの組み合わせは Windows プラットフォームの場合で、ほかのプラットフォームでは異なることがあります。使用している環境での正確なキー組み合わせについては、「ヘルプ」>「キーボードのショートカット」ファイルを参照してください。
図 7: コード補完
- 「List<Cu」と入力し、Ctrl+K キーの組み合わせを使用すると、Currency のクラス名が補完されます。IDE が名前を「CurrencyLookup」と補完するので、「Lookup」部分を削除します。
図 8: クラス名補完
- メソッド名と、そのメソッドの残りのコードの入力を続けます。
その他のソースコード編集のヒント
その他のソースコード編集のヒントをいくつか説明します。
- 「エディタ」ウィンドウでコンテキストメニュー「インポートを修正」機能を使用して、見つからないクラスがある場合、インポートできます。
- Alt+Enter キーを押すと、メソッドで見つからないコンポーネントに関するヒントが表示されます。
- メソッド本文の編集中に Return キーを押すと、対応する右括弧 (}) が挿入されます。
- カーソルを単語の上に置き、Ctrl+R キーを押してから新しいテキストを入力することで、単語をすばやく置換できます。
CurrencyLookup クエリークラスが完成したら、必要に応じてテストできます。「ツール」>「JUnit テストを作成」機能を使用するか、ショートカットキーの組み合わせ Ctrl+Shift+U を使用します。これにより、スケルトンの CurrencyLookupTest クラスが生成されます。ダミーコードを削除し、テスト用の assertFalse 行を追加できます。たとえば、データベースから戻されるデータ行が空ではないことをテストするために、「assertFalse("contains data", new CurrencyLookup().getAll().isEmpty());」という行を追加する方法があります。続いて、Shift+F6 キーを使用してテストを実行します。
Rails アプリケーションの作成
次に、Money アプリケーションの Java コードにアクセスする Rails アプリケーションを作成します。まず、Money プロジェクトを構築したり、Java JAR ファイルを Rails プロジェクトに追加したりなどの、いくつかの簡単な設定作業を行う必要があります。
Rails プロジェクトの作成と設定
- まず、Money Java デスクトップアプリケーションが構築されていることを確認します。プロジェクトのコンテキストメニュー「削除して構築」を選択するか、Shift+F11 キーを押します。
- 「Ruby」>「Ruby on Rails アプリケーション」で、プロジェクトを新規作成します。ウィザードのデフォルトを受け入れると、IDE が Rails プロジェクトを生成します。ネイティブの C Ruby がインストール済みの場合は、Ruby インタプリタを選択するように求められます。バンドルされた JRuby インタプリタを選択してください。
- 次に、Rails プロジェクト用の Java プロパティーをいくつか設定します。具体的には、Java Persistence API の TopLink JAR ファイルと、Money Java デスクトップアプリケーションの JAR ファイルを追加する必要があります。Money.jar ファイルは Money プロジェクトの /dist ディレクトリにあります。Rails プロジェクトノードを右クリックし、「プロパティー」を選択します。「Java」カテゴリを選択し、「JAR/フォルダを追加」ボタンを押します。3 つの JAR ファイルを参照して取り込みます。toplink-essentials-agent.jar および toplink-essentials.jar を必ず取り込んでください。両方とも NetBeans をインストールした java1/modules/ext/toplink/ ディレクトリにあります。Rails アプリケーションはデータベースルックアップ操作用に Java コードを使用するので、このプロジェクトにある Rails の config/database.yml ファイルを編集する必要はありません。
図 10: JAR ファイルの取り込み
Rails プロジェクトへの通貨ルックアップの追加
ここでは、生成した Rails プロジェクトを修正し、Money Java プロジェクトの通貨ルックアップコードを使用できるようにします。
- まず、Rails プロジェクトを実行して、デフォルトで空の Rails ページをブラウザに表示します。デフォルトの URL を編集し、アプリケーションに設定します。たとえば、http://localhost:3001/ のような URL が表示されるので、ここに /money/list を追加します。ブラウザにはルーティングのエラーメッセージが表示されます。コーディングの終了時には、この URL に応答するアクションが追加されているため、ブラウザでアプリケーションが正常に動作します。
- Rails コードジェネレータを使用して、money コントローラと list ビューを作成します。Rails のコンテキストメニューから「生成」を選択します。「Rails ジェネレータ」ダイアログの「生成」フィールドで「controller」を選択し、「名前」フィールドで「money」と入力し、「ビュー」フィールドで「list」と入力します。「閉じる」をクリックします。
図 11: money コントローラの生成
生成した money コントローラが「エディタ」ウィンドウで開きます。コントローラにコードを追加すると、アプリケーションが Java コードにアクセス (require 'java') したり、CurrencyLookup Java クラスを取り込んだり (include_class 'money.CurrencyLookup') できるようになります。これが完了したら、ほかのクラスと同様に、Money プロジェクトの CurrencyLookup Java クラスを呼び出すことができます。また、IDE では Ruby および Rails に固有のコード補完機能を利用できます。Ctrl+K キーおよび Ctrl+ スペースキーを押すと、メソッド名などを補完できます。
次に MoneyController クラスの全コードを示します。
class MoneyController < ApplicationController
def list
require 'java'
include_class 'money.CurrencyLookup'
lookup = CurrencyLookup.new
@list = lookup.get_all
end
end
ビューの設定
次に、データベースから 3 つの列を表示する、きれいに書式化された表を作成する方法を示します。また、IDE Ruby のショートカットもいくつか示します。
- MoneyController クラス用に生成された list ビューを開きます。「ナビゲート」>「Rails のアクションまたはビューに移動」を選択するか、Ctrl+Shift+A キーを押します。list.rhtml ファイル、つまり Money#list ビューが「エディタ」ウィンドウに表示されます。
- list ビューで表のスケルトンを挿入します。これをすばやく実行するには、「table」と入力して Tab キーを押します。IDE が表の行とセルを表す HTML を追加します。
図 12: Tab ショートカットの使用
- 表の行 (<tr>) のブロックを選択し、Alt+Enter キーを押します。通貨一覧の部分でコードを繰り返し記述するために、表の行を for ループで囲うことがあります。Alt+Enter キーのショートカットを使用すると、電球のアイコンが現れて、クイック修正オプションが表示されます。Surround with for のオプションを選択し、Enter キーを押します。
図 13: Alt+Enter キーショートカットの使用
- 次に、通貨のデータに一致するよう for ループのパラメータを変更します。Tab キーを使うと、パラメータ間を移動できます。ループ変数 f の代わりに c を呼び出し、@field を @list に変更します。コード補完のショートカットを使用して、さらに表のセルのタグ (<td></td>) を行のタグ (<tr></tr>) 内に追加します。
図 14: コード補完を使用して HTML タグを追加
- Ruby 表現用のコードテンプレートを表のセルのタグ内に挿入します。「re」と入力し、Tab キーを押します。IDE により、Ruby 表現 <%= %> が挿入されます。
図 15: Ruby 表現の挿入
- このような表のセルのブロックを 3 つ設定し、それぞれに Ruby 表現 <%= %> を追加します。通貨の列の名前 (c.country、c.code、および c.name) を <%= %> のブロック内に挿入します。完了すると、コードは次のようになるはずです。
<h1>Money#list</h1>
<p>Find me in app/views/money/list.rhtml</p>
<table border="1">
<% for c in @list %>
<tr>
<td>
<%= c.country %>
</td>
<td>
<%= c.currency %>
</td>
<td>
<%= c.name %>
</td>
</tr>
<%end%>
</table>
- Shift+F6 キーを押すと、ブラウザで表が表示されます。データベースに追加した通貨に応じて、次のような画面になるはずです。
図 16: Ruby 通貨表の表示
まとめ
この記事では、Ruby on Rails アプリケーションを Java デスクトップアプリケーションに組み合わせる方法を示しました。Java デスクトップアプリケーションにはデータベース表へのアクセス用コードが組み込まれ、Ruby アプリケーションが Java のデータベース表へのアクセス用コードを呼び出し、データの取得および表示を行いました。
また記事では、Java および Ruby のアプリケーション開発時に利用できる、多くのキーボードショートカットも説明しました。
次の手順
>> その他の NetBeans Ruby ドキュメント