日本が世界に誇れるものと聞いて何が思い浮かぶでしょうか。寿司や天ぷらなどの日本食、トヨタや日産などの自動車、アニメやゲームなどのオタク文化が思い浮かぶでしょう。しかし、IT業界で言うなら「Ruby」を挙げることができるでしょう。Rubyは世界中の人が使っている日本初のプログラミング言語です。今回は、日本が世界に誇るRubyについて紹介します。

  • RubyのWebサイト

    RubyのWebサイト

「オブジェクト指向スクリプト言語 Ruby」のWebサイト
https://www.ruby-lang.org/ja/

Rubyの生い立ちとブレイクについて

Rubyは1993年にまつもとゆきひろ氏によって開発され、1995年にオープンソースのプログラミング言語としてリリースされました。Rubyの名前の由来は、同じく有名なプログラミング言語のPerlが6月の誕生石であるPearl(真珠)と同じ発音をすることから、7月の誕生石である「ルビー」を取って名付けられました。

Rubyが世界的にブレイクするきっかけになったのは、2004年に登場したWebフレームワークの「Ruby on Rails」です。これは名前にもある通り、Rubyを利用して作られています。Ruby On Railsを使うと、プログラムをたくさん書かなくても、高度なWebアプリを作ることができます。また、その設計思想であるMVCアーキテクチャは、他のフレームワークにも大きく影響を与えました。今では、GitHub、Hulu、Cookpad、Gunosyなどの人気サイトがRuby On Railsで開発されており、無名のものまで含めると、かなりの数のWebアプリが、Ruby On Railsを使って作られています。もちろん、Ruby On Rails登場前も、それなりにRubyは世界中で使われていましたが、間違いなく、Ruby On RailsがRubyを世界中に知らしめるきっかけとなりました。

Rubyの特徴

RubyのWebサイトのタイトルには、「オブジェクト指向 スクリプト言語 Ruby」と書かれています。オブジェクト指向であり、スクリプト言語なのです。これが、Rubyの特色です。

『スクリプト言語』とは、手軽にプログラムを作成できるプログラミング言語のことです。そして、その特徴の通り、プログラムを機械語に翻訳する「コンパイラ」ではなく、ソースコードを読んで直接実行する「インタプリタ」の方式で実行されます。ただし、実行速度を速くするために、一度、バイトコードと呼ばれる独自形式に変換してから実行します。

そして、なんと言ってもRubyの特徴は、オブジェクト指向を貫いていることです。Rubyでは「すべてがオブジェクト」であり、数値でさえその例外ではありません。そして『オブジェクト指向』というのは、オブジェクト(物)を中心に考えるプログラミング手法であり、その手法は大規模開発を行う際にも役立ちます。

プログラミング言語によって、できることには差がありますが、Rubyでは以下のようなプログラムを開発できます。

・Webアプリの作成 --- 前述のRuby On Railsを利用することによって、素早く高度なWebアプリを開発することができます。
・スマホアプリの作成 --- RubyMotionなどのフレームワークを使うことで、iOSやAndroidのアプリを開発できます。
・バッチ処理 --- Rubyには様々なライブラリが存在します。しかも、RubyGemsというパッケージ管理システムがあるので、必要なライブラリを手軽に追加導入できます。

(雑談)「ひげとRuby」

ところで、何年も前ですが、筆者はRuby開発者のまつもとひろゆき氏と話したことがあります。その時の印象は、気さくで知的な人というものでした。その時には「有名なプログラミング言語作者は必ずひげを生やしている、プログラミング言語を開発するなら、ひげを生やすところから」と言う話で盛り上がりました。改めて、画像検索でまつもと氏を検索すると、やはり、素敵なひげが印象的です。Rubyがブレイクした理由の一つに、まつもと氏のひげも貢献しているのかも(?)しれません。

Rubyのインストール

それでは、実際にRubyをインストールして使ってみましょう。

【Windowsの場合】

Windowsの場合は、RubyInstallerというWebサイトから、インストーラーをダウンロードできます。[Download]ボタンをクリックし、開発ツール込みの「WITH DEVKIT」の最新バージョン、あるいは、開発ツールなしの「WITHOUT DEVKIT」の最新バージョンをダウンロードすると良いでしょう。ここでは、macOSに合わせて、開発ツールなしを選んでダウンロードしました。

インストーラーをダウンロードしたら、ダブルクリックして実行しましょう。ライセンスに同意したら、[Next]ボタンを 数回押して行くだけでインストールは完成します。

  • Rubyのインストールをしているところ

    Rubyのインストールをしているところ

【macOSの場合】

macOSの場合ですが、何もしなくてもRubyが最初からインストールされています。さすが、世界のRubyです。

  • macOSでは最初からRubyがインストール済みです

    macOSでは最初からRubyがインストール済みです

一番簡単なプログラム - Hello, World

Rubyがインストールできたら、最も簡単なプログラム、Hello, World!と表示するだけのプログラムを作ってみましょう。以下のプログラムをテキストエディタに記入したら「hello.rb」という名前で保存します。

 print "Hello, World!\n"

そして、コマンドラインから以下のコマンドを実行すると、Rubyのプログラムを実行できます。Windowsでは、コマンドプロンプトかPowerShell、macOSでは「ターミナル.app」を起動して、以下のコマンドを入力しましょう。

 $ ruby hello.rb
 Hello, World!
  • Hello, World!を実行したところ

    World!を実行したところ

プログラムを見てみましょう。スクリプト言語らしく、面倒な手続き表現もありません。『print "メッセージ"』のように書くだけです。

FizzBuzzを書いてみよう

Rubyの雰囲気を味わうために、FizzBuzz問題を解いてみましょう。本連載では、様々な言語でこの問題を解くプログラムを紹介しています。なお、FizzBuzz問題とは、次のようなものです。

1から100までの数を出力するプログラムを書いてください。ただし、3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」と表示してください。3と5の倍数の時は「FizzBuzz」と表示してください。

 # 値iに応じてFizzBuzzを表示する関数 --- (*1)
 def fizzbuzz(i)
   if i % 3 == 0 and i % 5 == 0
     print "FizzBuzz\n"
   elsif i % 3 == 0
     print "Fizz\n"
   elsif i % 5 == 0
     print "Buzz\n"
   else
     print "#{i}\n"
   end
 end

 # 1から100までfizzbuzz()を呼ぶ --- (*2)
 (1..100).each do |i|
   fizzbuzz(i)
 end

プログラムを実行するには、上のプログラムを「fizzbuzz.rb」という名前で保存し、rubyコマンドに与えて実行します。コマンドラインで以下のコマンドを実行します。

 ruby fizzbuzz.rb

実行すると、以下のように表示されます。

  • FizzBuzz問題をRubyで解いたところ

    FizzBuzz問題をRubyで解いたところ

プログラムを確認してみましょう。ここでは、最初に、(*1)以降の部分で関数(メソッド)fizzbuzzを定義します。この関数は、与えられた値に応じて、FizzBuzzかFizzかBuzzかあるいは数字そのままかの反応を表示するものです。そして、(*2)の部分では、1から100まで繰り返し関数fizzbuzz()を呼び出します。この際、他のプログラミング言語のように、for構文を使うこともできますが、『(n..m).each do |i| ... end』構文も使えるというのは、Rubyの表現力の高さを物語っています。

Rubyのまとめ

Rubyは日本初ということもあるので、Rubyに関する様々な反応がインターネットに溢れています。それで「Ruby 楽しい」などのキーワードで検索すると興味深い意見がたくさん出てきます。というのも、開発者のまつもと氏は、Rubyの価値は「楽しいプログラミング」にあると繰り返し述べているからです。楽しいからこそ、Rubyを基本にして、多くの実用的なプログラムが作られ、それが世界中で使われるようになりました。皆さんも、Rubyで楽しくプログラミングを味わってみてはどうでしょうか。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。