はじめに

前回までの連載で、Rubyのインストール手順とRubyを使ってプログラミングをする際に参考になる資料、およびRubyの特徴的な文法について解説してきた。Java開発者なら、すぐにRubyプログラミングを始められるはずだ。

一方で、ここまで連載を読まれた方にはひとつの疑問が浮かんでいるのではないか。それは、

「結局、JavaとRubyの本当のちがいは何なのか?」

という疑問だ。

もちろん、JavaとRubyは別の言語なので、同じオブジェクト指向言語であっても、その文法は異なるのは当然だ。しかし、差は文法的なものだけなのだろうか。Rubyが登場してから、現在も利用者を大きく増やしている人気のある言語のひとつである理由は、文法だけなのだろうか、それとも設計思想のちがいも開発者を引きつけている理由なのだろうか。もし、文法上だけではなく、設計思想が異なっているとしたら、Rubyを開発に使わないかも知れないが、参考になる考え方が得られるかもしれない。

第5回では、この疑問に答えることでRuby編のまとめとしたい。

JavaとRubyの本質的なちがい

JavaとRubyの一番のちがいは、「目的のちがい」である。第1章のRubyの説明でも書いたが、Rubyの目的は「プログラミングの楽しさ(Enjoy Programing!)」である。Java言語の目的は、「一度書けばどこでも(Javaプログラムが)動く - Write Once, Run Anywhere)」であり、Java言語が登場してから、クライアントサイド/サーバサイドのどの環境であってもJavaが動くようになった。一方のRubyは、「プログラミングの楽しさ」を目的として設計されている。

ただ、この「プログラミングの楽しさ」は広い概念なので、実感が掴めないのではないだろうか。そこで、「プログラミングの楽しさ」について、次に述べてみたい。

プログラミングの楽しさ

以下に、3つの例を挙げる。

1. ソースコードが読みやすい

単純にソースコードを短く書くことができるから読みやすいわけではなく、読みやすくなるような文法が書けるように設計されている。このため、自分で書いた処理に限らず、他人が書いた処理でも読みやすくなる。

2. やりたい処理が書きやすい

Rubyはライブラリが充実しており、目的の処理を少ないコードで記述することができる。少ないコードでもやりたい処理を実装していけるので、生産性が上がる。

3. 柔軟な文法

Rubyでは既存のクラスもオープンクラスとして提供しており、メソッドなどを書き換えることができる。以下に単純なサンプルを示す。Webアプリケーションを開発する場合は、フレームワークの使用があたりまえになっているが、Rubyの文法を書き換えることができるので、フレームワークをより利用しやすくすることができる。後半で説明するRailsはRubyのクラスをオーバライドしている。

puts "Yaaaa!" #書き換え前 

def puts #putsメソッドの書き換え
  print "hoge"
end

puts #書き換え後

上記以外にも、開発者が感じる「プログラミングの楽しさ」はあるはずだ。明確に仕様として定義できない設計者のセンスで言語が実装されている部分も含まれるのではないか。

使っていて楽しい道具は開発者から人気があるだろう。プログラミング言語は、バイナリコードを解釈して大きいアプリケーションを作ることができない、人間のための道具である。「プログラミングの楽しさ」を目的にしているRubyは、プログラミング言語を使っている人間を強く意識して設計された言語と言える。プログラミング言語を使っているのが人間である以上、楽しさというのは開発者を惹き付ける要素となるのではないか。

さて、ここまではJavaとRubyの本質的なちがいについて述べてきた。ただし、筆者はJavaよりもRubyのほうが優れているとは考えていない。逆も然りである。プログラミング言語は道具なので、優れている/いないよりも、使いどころを意識することが大事だと考えている。最後に、この使いどころについて筆者の考えを述べてみたい。

JavaとRubyの使いどころ

開発に使う言語を決めるにあたって、大規模な開発と中小規模の開発では視点が異なる。

大規模な開発では、信頼性や実績のあるプラットフォームで、大人数で設計/実装/テストを行うことなどが求められるが、そこに「楽しさ」が高い優先度で含まれているとは思えないので、これまでとおりJavaが使われると思われる。

一方、中小規模の開発では、必ずしも上記の要件を満たす必要はなく、優先度も変わる。「アジャイル」という開発方法が開発者の注目を集めているが、これは大規模な開発よりも中小規模の開発で先に取り入れられていくと思う。さらに、アジャイルもいろんな解釈があると思うが、筆者はアジャイルを実践する上で重要な要素が「楽しさ」と「スピード」だと思っている。このため、「プログラミングの楽しさ」を目的とするRubyは、もしこれからの開発スタイルがアジャイルな方向に進むのであれば、押さえておくべき言語だと考えている。

まとめ

今回は、Ruby編の解説の最後として「JavaとRubyの本質的なちがい」について述べた。両方の言語のちがいは、Rubyがプログラミングの楽しさを目的としていることにある。プログラミングの楽しさについて3つ例を挙げた。また、JavaとRubyの使いどころについて、大規模開発と中小規模開発に分けて考えを述べた。

次回からはRuby on Railsについて解説していく。Railsは「スピード」が長所のフレームワークである。