オープンソースのオブジェクト指向プログラミング言語「Ruby」の文法を一から学ぶための入門連載。最新版の2.1に対応しています。初回は、Rubyの概要や特長を紹介し、環境構築や「Hello World!」までの手順、プロンプトで対話的にRubyを使える「irb」の使い方なども解説します。
何らかの形でプログラミングに関わったことのある方なら、近ごろ「Ruby」と呼ばれるプログラミング言語が人気だという話を聞いたことがあると思います。
Rubyは、Perlの影響を受けたオープンソースのオブジェクト指向プログラミング言語で、1993年2月24日に産声を上げました。ちょうど先日、満21歳を迎えたところです。作者はまつもとゆきひろ(matz)氏で、Perl(パール)にあやかってRubyと名付けられました。
Rubyのモットーとして、まつもとゆきひろ氏は「Enjoy programming」であると語っています。「まつもとゆきひろ 答える | スラッシュドット・ジャパン」というインタビュー記事から、まつもとゆきひろ氏による印象的なコメントを引用します。
そして何よりストレスが多いとプログラミングが楽しめないじゃないですか。「Enjoy programming」がRubyの真のモットーです。
筆者は、ここにRubyの全てが詰まっていると思います。簡潔で明快な文法、洗練されたクラス定義の仕組み、関数型言語の特徴をうまく取り入れた美麗な記述ができる、などなど、Rubyによるプログラミングは、本当に楽しくてエキサイティングです。
また、最近人気のツールはRubyを使って作られているものが増えてきています。Rubyの人気を爆発させたWebアプリケーション開発フレームワーク「Ruby on Rails」はもちろんですが、「fluentd」「Chef」「Capistrano」「Puppet」「Vagrant」「serverspec」「Redmine」「Sass」「Compass」「Cloud Fundry」など例を挙げるときりがありません(※編集部注2014年2月28日:「LESS」は、昔はRubyを使っていましたが、古い情報なので上記から外しました)。
このように、これら多くのツールがRubyを使って実装されていることをみると、Rubyのなじみやすさと奥深さが実感できるのではないでしょうか。
さらに、iOSやOS X(Mac)のアプリをRubyで開発するためのツール「RubyMotion」「MobiRuby」や、組み込み用の軽量Ruby「mruby」などもあります。
Rubyの公式ページより、Rubyの特長を引用します
- シンプルな文法
- 普通のオブジェクト指向機能(クラス、メソッドコールなど)
- 特殊なオブジェクト指向機能(ミックスイン、特異メソッドなど)
- 演算子オーバーロード
- 例外処理機能
- イテレータとクロージャ
- ガーベージコレクタ
- ダイナミックローディング(アーキテクチャによる)
- 移植性が高い。多くのUNIX上で動くだけでなく、DOSやWindows、Mac、BeOSなどの上でも動く
以上は一般的に言われるRubyの特長で、掘り下げれば枚挙にいとまがありません。
Rubyは、C++やJava、C#などの静的型付け言語とは違い、動的型付け言語に分類されます。一長一短なので、どちらが優れているかという議論は宗教戦争のようになりますが、C#を使っていた経験から筆者は動的型付け言語を推します。その理由は、本連載を読み進めていくごとに明らかになるでしょう。
Rubyは初心者でも取っつきやすい言語ですが、一方で非常に奥深い言語です。
JavaやC#では言語レベルで強い制約があるので、誰が書いても似通ったコードになります。しかしRubyは、プログラマーは優秀であることを前提としていて、プログラマーに強い権限が与えられています。プログラマーが望めば、カプセル化を破ってprivateなメンバー変数やメソッドにアクセスすることも容易です。C#でもリフレクションを使えば可能ですが、それを是とするシチュエーションはまれでしょう。
プログラマーの実力がコンスタントに試されるところも、Rubyの興味深い側面の一つです。
本連載は、執筆当時で最新のバージョンである2.1にフォーカスし、2.1の新機能なども積極的に紹介します。以下、Ruby 2.1における主な新機能や変更点です。
実のところ、1.9から2.0へのバージョンアップ時にも大きな変更があったため、2.0での新機能も併せて連載中に紹介します。
本連載は、文法をはじめとするRubyの基本中の基本から始まり、クラスやモジュールの概念、入出力、スレッドプログラミングについて解説します。
続いて、発展的な内容としてクロージャ、メタプログラミングについても解説します。特に「黒魔術」といわれるメタプログラミングは、Rubyの一番面白いところだと筆者は思います。
最後に実践編として、Rubyのテストフレームワークである「RSpec」について解説し、簡単な「テスト駆動開発」を通して、小規模な「gem」(Rubyで書かれたプログラムをパッケージ化したもの)の作成を行います。
本連載は、Ruby以外のプログラミング言語の経験がある方を対象としています。特に、JavaやC#などの言語をメインにしている方にとっては、新しい発見の連続で楽しんでいただけると思います。
初心者に優しく玄人をも楽しませる、エキサイティングなRubyの不思議の国へ、あなたをご案内します。
本連載では、開発用のOSとしてOS X(Mac)やLinuxなど、UNIX系のものを想定しています。
事実、多くのRubyプログラマーはOS XもしくはLinuxなどを利用しています。本連載では、LinuxのディストリビューションとしてUbuntu 12.04 LTSを想定していますが、他のディストリビューションを利用している方は、紹介している手順を適宜読み替えてください。ちなみに筆者は、普段OS XとopenSUSEを使っています。
Windowsユーザーには、3つの選択肢があります。
Windows上でのRubyによる開発では、処理系のパフォーマンスが悪い、Rubyに関する情報源の多くはUNIX系のOSが前提となっているなど、残念ながらイバラの道を歩むことになります。ですので、1もしくは2の選択肢を選ぶことを強くお勧めします。
多くのRubyプログラマーは、ターミナルでのコマンドによる操作と、軽量なテキストエディターを駆使して作業することを好みます。主なエディターを幾つか紹介しますので、参考にしてください。
筆者は普段、Vimを利用しています。高いカスタマイズ性と軽量さの絶妙なバランス、洗練された操作体系は他のエディターの追随を許しません。
また、Vimと双璧を成すといわれるEmacsも伝統的で人気の高いエディターです。近ごろは、モダンなルックスを持つSublime Textも人気のようです。Aptana StudioはEclipseをベースとしたIDE(統合開発環境)で、Javaをメインとする方には親しみやすいのではないでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.