コード・ジェネレーションとは,ユーザー・インタフェース作成やDBアクセスなど似たようなコードが何度も登場する場合に役立つ手法です。開発したコードを読み込ませることで,定型部分を自動生成できるからです。今回はコード・ジェネレーションに向いたRubyを例に考え方,導入方法を紹介します。

 コンピュータ業界に身を置いていると,日本は外国からの影響を受けやすいと強く感じます。ほとんどのコンピュータ技術が外国生まれなので,仕方のないことなのかもしれません。米国製アーキテクチャのPCに,米国製のOS(私のはフィンランド産ですが)を使い,使用するアプリケーションの多くも外国産です。ソフトウエアの流行も米国に半年から数年遅れて広まるため,海外の状況を見ていると大まかに日本のソフトウエア業界の将来を予測できます。

 純粋な日本生まれのRubyにも同じ傾向があるようです。2005年12月に正式版が登場した「Ruby on Rails」というフレームワークは世界的に注目を集めました(関連記事「生産性の高いWeb開発環境 Ruby on Rails」を参照)。これによって日本でも今までとは違った層,「仕事としてソフトウエアを開発しよう」という人々の関心を集め始めたのです。これまでJavaやPHPを使ってきたプログラマが仕事上のソフトウエアを開発する言語としてRubyに注目するようになってきました。「Rubyは知ってるけど仕事には…」という意見を聞いてきた身としては,「日本もここまで来たか」という印象に加えて,「Rubyでもやっぱり海外に遅れを取ってしまう」と感じてしまいます。

 ここは,Rubyがようやくビジネス分野でも注目されてきたことを素直に喜び,どうすればよりよく活用できるのか考えようではありませんか。

Rubyをビジネスに利用する

 2002年にワシントン州シアトルで開かれた「Ruby Conference」では,「達人プログラマ」ことAndy Hunt氏が仕事にRubyを適応する4段階について紹介しました。

(1)趣味・勉強としてのRuby
(2)個人的ツールとしてのRuby
(3)仕事の支援ツールとしてのRuby
(4)出荷するプログラムとしてのRuby

 第1の「趣味・勉強としてのRuby」は,文字通りRubyにちょっと関心を持って勉強してみようという段階です。本を読んでサンプルを打ち込む,小さなプログラムを作るという経験を通じて,Rubyという言語と背景にある設計思想に触れるというレベルです。もちろん,誰もが最初はここから始めることになります。

 第2の「個人的ツールとしてのRuby」では,自分が日常生活で使うツールをRubyで作るという段階です。例えばデジカメ画像の整理をする小さなプログラムであったり,毎日ログを監視して異常があればメールで通知するプログラムかもしれません。Rubyを使えばこのようなプログラムを作ることは比較的簡単ですし,実際に私が以前に作って日常的に利用しているものでもあります。

 第3の「仕事を支援するツールとしてのRuby」にまで進むと,成果物であるプログラムそのものはRubyで記述しないものの,開発作業を支援するツールを作るためにRubyを使うようになります。

 ほとんどのソフトウエア開発業務はチーム作業であり,成果物の開発言語はマネージャや顧客の意向で決定されることがほとんどです。そのような場合にはC++やJavaあるいはPHPが選ばれることが多いでしょう。

 しかし,開発支援ツールについては開発者が比較的自由に選択できることが多いようです。テスト用ツール,ドキュメント生成ツール,ビルド支援ツール,集計ツール,そして今回解説するコード・ジェネレーション・ツールなどが支援ツールの代表例です。

 そして,Ruby好きにとっての理想であり最高の段階が「出荷するプログラムとしてのRuby」です。数年前まではごく限られた環境以外では夢物語でしたが,最近のRubyの知名度の向上と,Ruby on Railsの勢いを考えると2006年度からは,特にWebアプリケーションの分野では珍しくなくなるかもしれません。

 あなたはどの段階でしょうか。ほとんどの方はまだ(1)や(2)かもしれません。しかし,事態は急速に変化しつつあります。