忙しいJava開発者のために

「Ruby on Rails(以下、RoR)」の登場が大きな契機となり、現在、Rubyユーザーの数は増加の一途をたどっている。最近では多くのプラットフォームで対応が進められており、Javaにおいても、JVM上で動作するRuby実行環境「JRuby」が用意されているのはご存知のとおりだ。

こうした背景から、Java開発者の中にはRubyに興味を持っている方が少なくないのではないだろうか。もっとも、その多くは、日々の業務に追われ、新たな言語の学習に十分な時間がとれないという状況だと推測する。そこで、本連載では、Rubyという言語、およびその言語の魅力を最大限に引き出しているフレームワークRoRについてJava開発者の皆さんが効率的に学習できるよう、JavaプラットフォームとRubyプラットフォームの特徴を比較しながら解説していこうと思う。

なお、連載の前半では、Java開発者がRubyを使うことで得られる利点や、Rubyそのものの利用法に焦点を当てて解説し、後半ではRoRを使って実際にWebアプリケーションを作成しながら、RubyとRoRを用いたアプリケーション開発の概要を紹介する予定だ。

Javaの特徴とプロジェクトの規模

現在のJavaは、中・大規模のシステム構築案件で大きな威力を発揮するプラットフォームだと言える。Java開発者の間で中・大規模開発向けノウハウが多数蓄積されており、大手ベンダーの中には、以下のような取り組みを推進しているところが少なくない。

  • 開発標準を作成して工程や設計書などを整理する
  • Java EEの仕様には組み込まれていない、業務非依存フレームワークを導入する
  • 設計ツールを導入して極力プログラミングをしない
  • テストツールを導入してWebアプリケーションの性能問題を解決する
  • 自社で開発したツールの出力フォーマットを開発標準のドキュメントの形式に合わせて余計な工数を減らす
  • ミドルウェアのパラメータ設定情報を社内で共有する仕組みを導入する

このように、中・大規模開発向けの環境が整備されているJavaだが、その特徴が小規模な開発でもうまく機能するかと言うと、そうとは限らない。小規模開発では、以下のような特有の条件が課せられることになり、その条件とJavaの特徴がマッチしないケースが多いのだ。

  • 極端に短い開発期間
  • 低コスト
  • 開発要員の人数的制限

こうした条件下の開発で効果的なのがスクリプト言語である。簡易的な記述でプログラムを作成することができるスクリプト言語は、大規模な開発には向いてないものの、小規模なアプリケーションであれば、(慣れたエンジニアが扱えば)ごく簡単に構築できる。そして、本連載でお薦めしたいスクリプト言語が、タイトルにも掲げたRubyである。

Rubyとは

Rubyとは、プログラマーがプログラミングの楽しさを十分に味わえることを目標に作成された、オブジェクト指向型のスクリプト言語である。動的な言語であり、例えば「変数の型を事前に宣言する必要がない」といった特徴を持つ。作者はご存知、まつもとゆきひろ氏だ。

Rubyは、GPLもしくは独自に定められた条件の下に再配布可能なフリーソフトウェアである(ライセンスの詳細はこちらを参照されたい)。Rubyコミュニティによって運営されている同言語のWebサイトには、日本語によるチュートリアル、FAQなどが用意されており、学習を進めるうえで大きな助けになる。

Rubyコミュニティ

また、日本Rubyの会ではRubyist(Rubyユーザー/開発者)のためのWeb雑誌「るびま」を発行している。同誌には、まつもとゆきひろ氏が執筆している「Rubyistのための他言語探訪シリーズ」など、Rubyユーザでなくても楽しめる記事が掲載されている。上記サイトと併せて、こちらも参照するとよいだろう。

なお、Rubyでは、Ruby技術者認定資格がRubyアソシエーションにより開始されている。第1回試験は2007年10月27日に島根県松江市で実施。2007年12月1日開催予定の第2回試験からは東京会場も用意される見込みだ。申し込みはCTCテクノロジーのWebサイトから行える。

環境の準備

それでは実際にRubyに触れていこう。

当然ながら、まずは実行環境を準備する必要がある。RubyのWebサイトに各種バイナリ、およびRubyインストールガイドが用意されているので、そちらを参考にインストールを行ってほしい。

なお、RubyForgeに用意されているWindowsプラットフォーム向けワンクリックインストーラを使ったインストール手順を以下に示しておく。Windowsユーザは参考にするとよいだろう。

RubyForgeのダウンロードサイトを訪れると、ページの上の方に「One-Click Installer - Windows」というメニューがある。その下の「ruby186-25.exe」などのファイルがインストーラになる。これをダウンロードして保存してほしい

インストーラを実行すると、このようなダイアログが表示される。「Next」ボタンを押下して、次のライセンス確認画面に進んでほしい

ライセンス確認画面では、一通り目を通した後、「I Agree」ボタンを押下して、次のセットアップ設定画面に進む

セットアップ設定画面では、上のように「Ruby」「SciTE」「Enable Gems」にチェックが入っているはずである。「SciTE」はオープンソースの多言語に対応したエディタで、「Gems」はライブラリを管理するソフトウェアになる。これらの項目にチェックが入っていることを確認したら、さらに「Next」ボタンを押下してインストールフォルダ設定画面に進む

この画面でインストールフォルダを指定した後(上ではDドライブの直下の「ruby」フォルダを指定した)、「Next」ボタンを押下して次の画面に進む

スタートアップに表示する名前を指定して「Install」ボタンを押下し、インストールを開始する

しばらくすると進行バーが右端に到達するので「Next」ボタンを押下し、インストール終了画面に進む

上の画面で「Finish」ボタンを押下すればインストール作業は終了だ。なお、アンインストールはスタートアップメニューのアンインストーラから行えばよい

Ruby on Railsとは

RoR(Ruby on Rails)は、フルスタックのWebアプリケーションフレームワークである。特徴としては、RoRの決まりに従うことで設定が減る(Convention over Configuration)ことや、フレームワーク上で一度設定すれば他の個所で設定が不要になることなどが挙げられる。開発者の負担を減らして生産性を向上させる仕組みが整えられたフレームワークと言える。作者はDavid Heinemeier Hansson氏。RoRのライセンスはMITライセンスとなっている。

RoRのトップページ

現在Javaでは様々なフレームワークが乱立しており、筆者は各フレームワークに慣れるのに苦労した。特に設定ファイルの多さ/複雑さには参ってしまった記憶がある。一方、RoRはフルスタックフレームワークで、Webアプリケーションを作成する際に必要なものがそろっており、しかもRoRの約束事に従えば驚くほど設定がいらない。このJavaとのギャップが、Java技術者にはきっと新鮮に感じられるはずである。RoRについては、本連載の後半で紹介していくので楽しみにしていてほしい。

Hello World!の表示

それではいよいよプログラムを作成し、実行してみたい。Java技術者を対象とした連載なので、やはり最初は「Hello World !」を表示しよう。

まずはソースファイルを準備する。Rubyプログラムの拡張子は「.rb」となる。ここでは、ファイル名を「hello.rb」としよう。任意のフォルダに同名のファイルを作成してほしい。

rbファイルの作成

このファイルを選択して右クリックで「編集」を選ぶ。すると、エディターが起動して、空のソースファイルが表示されるので次の1行を記述してほしい。

puts "Hello World !"

キーボードの「Ctrl+S」などでファイルを保存すれば実行準備は完了だ。

Rubyプログラムを実行するには、コマンドプロンプトから

ruby 《実行したいファイルのパス》

と入力すればよい(もしくは、Windows XPであれば、「ruby(1マス空白)」と入力した後、「hello.rb」ファイルをコマンドプロンプトにドラッグ&ドロップしてEnterキーを押下する)。

正しく設定されていれば、以下のような実行結果が得られるはずだ。

はじめてのRubyプログラム

おめでとう! これではじめてのRubyプログラムが実行できた。Rubyアプリケーションを実行するには通常、このサンプルで示したように.rb拡張子でファイルを作成した後、コマンドプロンプトで実行していく。

ちなみに、違いを明らかにするために補足しておくと、Javaで同様の処理を実行する場合は以下のようなプログラムになるはずだ。また、Rubyを実行する場合に比べ、コンパイルという作業が1つ加わることになる。

class HelloWorld {
     public static void main(String[] args) {
          System.out.println("HelloWorld !");
    }
}

これをご覧になれば、Rubyでの作業はJavaに比べて大きく軽減されていることが実感できるだろう。Rubyが、その開発思想のとおり、プログラミングの楽しさを十分に味わえる言語になっていることが多少なりとも実感できるのではないだろうか。

次回は開発環境についての補足をした後、ヘルプおよびソースコードのダウンロード方法と、Rubyの特徴についてご紹介する。

JRubyとIronRuby

エンタープライズシステムは、企業が成長するにつれて改修が繰り返され、次第に規模が大きくなっていくケースが多い。したがって、初期段階はRubyですばやく実装しつつも、サービスが大きくなりそうなタイミングで大規模開発での実績があるJava EEに実装言語を切り替えられれば便利である。現在、この切り替えに使えると期待を集めているのがJRubyである。JRubyはJavaで実装されたRuby実行環境である。

JRubyの詳細については、「【ハウツー】話題のJRubyを動かしてみよう 導入編 - JRubyのコツをつかむ」や「Java + RubyのJRuby - EJBからSwingまでRubyからJavaを使い倒す」といった記事があるので、そちらを参照してほしい。

このような関係が現在、Rubyと.NETにおいても実現されつつある。2007年7月には.NETのCLR(Common Lunguage Runtime)にて動作するIronRubyが公開されている。.NETにおいてもJava同様の開発スタイルを実現する環境が整備されるというわけだ。

また、Java EEアプリケーションサーバにおいて独自にRubyへの対応を進めているベンダーがある。その最たる例がBEAだ。BEAではWebLogic Serverのコマンドラインでの管理を行うWLST(WebLogic Scripting Tool)でJRubyに対応する予定である(WebLogic Server 9.0からPythonのJava実装であるJythonに対応済)。この対応によってスクリプト言語で柔軟な管理をしたいというニーズに応えている。