第2回 JavaとRubyの共通点と相違点
ナレッジエックス 中越智哉
2008/3/25
■JavaとRubyの相違点(4)
〜Rubyの真偽値はtrueとfalseだけではない
JavaもRubyも、ともに真偽値を持っており、条件判断などに利用することができます。Javaの場合、boolean型のリテラルであるtrueとfalseがそれに当たります。
Rubyにもtrueとfalseがありますが、Rubyの真偽値はこれだけではないのです。Rubyには、「falseとnil(Javaのnullに当たるもの)」が「偽」で、それ以外の値はすべて「真」というユニークなルールがあります。これによって、例えば「オブジェクトが空かどうか」の判定の記述をシンプルにすることができます。
<Javaでオブジェクトが空かどうかを判定する例>if (obj != null) { System.out.println("objは空ではありません"); } |
<Rubyでオブジェクトが空かどうかを判定する例>
if obj puts "objは空ではありません" end |
また、Rubyでは正規表現のマッチング結果として、マッチすればマッチした位置、マッチしなければnilが返るようになっているため、正規表現のマッチングの条件判断も同様にシンプルな記述が行えます。
<Rubyで正規表現の判定を行う例>unless /^\d+$/ =~ str puts str+"は数字以外の文字が含まれています" end |
■JavaとRubyの相違点(5)
〜Rubyはクラス定義しなくてもコードを実行できる
Javaでは、どんな小さなプログラムを実行する場合でも、最低限、
(1)クラス定義とmainメソッドの定義を書いて、
(2)その中に行いたい処理を書き、
(3)ソースを保存し、
(4)コンパイルして、
(5)javaコマンドで実行する
という手順が必要です。
Rubyはオブジェクト指向言語ですが、スクリプト言語でもあり、さらにインタプリタ言語でもあります。Rubyではこれらの特徴を生かすために、クラス定義を書かなくてもコードの実行ができるようになっています。
ですから、上記のJavaの手順にならっていえば、Rubyの場合は、
(1)行いたい処理を書き、
(2)ソースを保存して、
(3)rubyコマンドで実行する
というステップで済ませることもできてしまいます。さらに、クラス定義とクラス定義以外のコードを混在させることもできます。
<JavaのHello,Worldプログラム>public class HelloWorld { public static void main(String[] args) { System.out.println("Hello,World!"); } } |
<RubyのHello,Worldプログラム>
puts "Hello,World!" |
<Rubyのクラス定義とクラス定義以外のコードが混在したプログラム>
class KnowledgeEx def hello puts "こんにちは" end end k=KnowledgeEx.new k.hello |
<実行結果>
こんにちは |
さらにRubyでは、ソースファイルを作らずにコードを実行する方法もあります。
プログラムを書いていると、「このメソッドの使い方をちょっと確かめたい」「この文法について動作を確かめたい」ということがよくあると思います。Rubyではirbというコマンドを使えば、OSのコマンドを実行するような感覚で、簡単にRubyコードの動作を確認することができます。
※これ以外に、rubyコマンドの引数に-eオプションでコードを渡して直接実行させる方法もあります。
いかがでしょうか。いくつかの例を挙げながら、Javaエンジニアから見た、JavaとRubyの共通点、相違点を紹介してみました。
これ以外にも留意すべき点はまだまだあるのですが、まずは簡単なところからいくつか取り上げてみました。今回の記事がヒントとなって「これまでよく分からなかったRubyのコードが、少しだけ読めそう、書けそうな気がしてきた」というJavaエンジニアの方がいらっしゃれば幸いです。
次回は、Javaエンジニアの視点でRailsとStrutsを比較し、Railsをどう学んだらよいかについて紹介する予定です。お楽しみに。
今回のインデックス |
JavaとRubyは、こんなに共通点が |
JavaとRubyの相違点を知り、試してみよう |
手軽にコードを実行できるRuby |
筆者プロフィール |
中越智哉●北海道出身。北海道大学大学院電子情報工学専攻修士課程修了。在学中はJavaとLinuxに熱中。1999年にテンアートニ(現・サイオステクノロジー)に入社し、Javaの受託開発案件や教育事業などを幅広く担当。2006年3月にナレッジエックスを設立。同社では主にJava/Rubyを中心としたIT開発技術の教育・研修に従事。2007年にはRuby/Rails講師養成講座で講師を務めるなど、Ruby研修講師の実績も豊富。趣味は自転車と草野球、そして毎日欠かさない耳かき。 |
@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。
現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。
これからも、@IT自分戦略研究所をよろしくお願いいたします。