JavaとRubyの共通点と相違点:JavaエンジニアのためのRuby入門(2)(1/2 ページ)
実は共通点の多いRubyとJava。Javaエンジニアであり、JavaとRubyの両方のインストラクターでもある筆者が贈る、JavaエンジニアのためのRuby入門。
前回「Javaエンジニアにこそ、Rubyの良さが分かる」では、JavaとRubyの概要と歴史、使われ方について紹介し、なぜJavaエンジニアがRubyの学習に向いているのかについて解説しました。
今回から2回にわたって、具体的にRubyとJavaの文法を比較してみます。JavaエンジニアがRubyを学ぶ際、「ここはすんなり通過できる」というような共通する部分と、「ここは違いをよく認識する必要がある」というようなRubyにあってJavaにない部分を、いくつか紹介したいと思います。
まずは、Javaエンジニアがほとんど戸惑うことがないと思われる、JavaとRubyの共通点をいくつか挙げてみます。
JavaとRubyの共通点(1)〜クラス定義・継承
JavaとRubyがともにオブジェクト指向言語であるということは、前回もお話ししたとおりです。Javaのクラス定義や継承の概念は、基本的にRubyでも同様と考えることができます。記述方法は多少異なりますが、書き方さえ知ってしまえば、特に難しいことはないはずです。
暗黙の親クラス(すべてのクラスの親クラス)がObjectクラスであるということ、1つのクラスは直接の親クラスを1つしか持てないこと(単一継承)も共通しています。
class クラス名 { }
class クラス名 end
class クラス名 extends 親クラス名 { }
class クラス名 < 親クラス名 end
JavaとRubyの共通点(2)〜演算子・制御文
RubyはCに近い体系の演算子を用意しています。同じくCの文法を踏襲しているJavaとは、演算子の内容も近いものが多く、違和感を覚えることは少ないでしょう。
例えば、四則演算(加算、減算、乗算、除算)と割り算の余り、比較演算子(等号、不等号、大なり、小なり、以下、以上)などは表記も含めてほとんど共通です。
下記は、JavaとRubyで表記が異なる演算子のいくつかを表にしたものです。参考にしてください。
演算子 | Javaでの表記 | Rubyでの表記 |
---|---|---|
べき乗 | なし | ** |
否定 | ! | ! / not |
論理積 | & / && | & / && / and |
論理和 | | / || | | / || / or |
表1 JavaとRubyで表記が異なる演算子 |
一方の制御文ですが、これもif/for/while などの基本的なものについてはよく似ています。
if文では、Rubyの場合は条件式を()で囲む必要がないこと、「else if」 を「elsif」と記述する点が異なりますが、基本的な使い方に違いはありません。for文についても同様で、書き方は少々異なりますが、使い方はよく似ています。
if (条件式1) { ・・・ } else if (条件式2) { ・・・ } else { ・・・ }
if 条件式1 ・・・ elsif 条件式2 ・・・ else ・・・ end
for(int i=1;i<=10;i++) { System.out.println(i); }
for i in 1..10 puts i end
JavaとRubyの共通点(3)〜例外処理の記述
JavaとRubyはともにオブジェクト指向言語のため、どちらも例外処理の機構を備えています。
Rubyの例外処理の構文は、ぱっと見るとJavaのそれと違うように思えます。しかし下記の例のように、begin→try、rescue→catch、ensure→finallyと読み替えれば、実はほとんど同じ枠組みを持っていることが分かるでしょう。
ただしRubyの例外処理には、Javaでいうところのthrows節はありません(Rubyにはcatchとthrowというメソッドが存在していますが、これは例外処理とは異なる目的で使われるメソッドです)。
try { 例外を発生させる可能性のある処理 } catch(Exception ex) { 例外を捕捉したら実行したい処理 } finally { 例外の発生の有無にかかわらず実行したい処理 }
begin 例外を発生させる可能性のある処理 rescue 例外を捕捉したら実行したい処理 ensure 例外の発生の有無にかかわらず実行したい処理 end
これ以外にも共通する点はありますが、いくつかの典型的な例として、JavaとRubyでよく似ている点を紹介してみました。
クラス定義、演算子、制御文などが似ているため、簡単な処理であれば、Javaと同じようなコードをRubyで書くことも難しくなさそうに思えますね。
ですが当然、JavaとRubyには相違点もあります。ここからはいよいよ、JavaとRubyで文法が異なる点を見ていきたいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.