Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-02-27

C 言語ユーザーが Ruby を使う

C 言語を知っていれば何となくRubyを書くことができます。 C++ の class を知っていれば Ruby の class を使ったオブジェクト思考プログラミングも可能です。

C で書いていたような書式の多くは Ruby にも通用します。(とくに)型がないぶんだけより書式がシンプルになりますが、ちょっとしたコツを覚えればすぐに Ruby で動作するプログラムを書けるようになります。

次のプログラムは C 言語の hello world です。

#include <stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

これを Ruby で書くとこうなります。 Ruby では C 言語の main 関数のようなものは不要です。

puts("hello world")

puts は自動的に改行を行うメソッド(メソッドとは簡単に言えば C 言語の関数にあたるもの)です。これは次のように書く事もできます。

(追記: あとで気がつきましたが C 言語にも puts がありましたね。忘れていました(汗))

print("hello world\n")

print メソッドは改行の出力を行わないので文字列の最後に"\n"を追加してあります。また Ruby にも C 言語と同じように動作する printf があります。また通常は省略しますが文の最後にセミコロンを置くこともできます。

printf("hello world\n");

main メソッドと ruturn を書いてより C 言語ライクに記述することも可能です。

def main()
  printf("hello world\n");
  return 0;
end

main();

これはあくまで上記の C 言語のサンプルに無理矢理合わせて書いただけなので 実際は Ruby の hello world には main メソッドも return もセミコロンも不要です。また main メソッドが自動的に呼び出されるわけではないので最後で明示的に main メソッドを呼び出しています。

メソッドは次のように定義します。

def メソッド名(引数)
  処理
end

C 言語の関数定義には型が必要ですが Ruby のメソッド定義に型はありません。ちなみに引数はこんな風に記述します。

def main(str)
  print(str)
end

main("hello world\n")

いかがでしょうか? C 言語の知識があれば Ruby のプログラムを記述することは難しくありませんし、 Ruby の方がよりシンプルに同じ処理を記述できます。 Ruby には C 言語にはない便利な概念がたくさんありますが、さしあたってはそんなことを知らなくても Ruby の便利さを教授することはできます。