プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。(ネットワーク応用通信研究所 まつもと ゆきひろ)

 プログラミングとは,コンピュータに作業手順を教え込むことです。ただ,コンピュータは決して賢くないので,言われた通りの作業をこなすことしかしません。コンピュータが優れているように見えるのは,単に超高速で計算する能力があるからです。効率の悪い作業を命じられても,プログラムによって指定された通り,文句の一つも言わずに黙々と処理します。コンピュータの能力を生かすも殺すもプログラムの書き方ひとつなのです。

 ですから,プログラムを書く人(プログラマ)はコンピュータを自分の意のままに扱う人であり,コンピュータの「ご主人様」であると言ってもよいでしょう。にもかかわらず,世間ではプログラマはコンピュータに奉仕する存在であるかのように扱われることもしばしばです。

 いや,世間一般だけでなくコンピュータ業界においてもそうです。むしろ,こっちの方がヒドいかもしれません。仕事だから仕方がないのでしょうか。

奪取の構造

 しかし,考えてみると不思議です。どうしてプログラマはコンピュータのドレイのように働かなければならないのでしょう。一体いつ私たちはコンピュータの主人としての立場をあきらめてしまったのでしょう。

 その原因は一種の「アルファ・シンドローム」にあるのではないかと私は考えています。アルファ・シンドロームとは,犬のしつけに際して発生する現象で,あれこれと世話を焼いてくれる飼い主のことを犬が勘違いして,自分がボスである,飼い主よりも自分の方が偉いと認識してしまうことです。

 コンピュータもいろいろと手がかかります。システムを設計するのも大変ですし,またプログラムにはいくつもバグが発生します。仕様変更が発生すればそのたびにプログラムを手直ししなければならないですし,バグがあれば直してやらなければなりません。

 そうやってあれこれ手をかけているうちに,いわば「逆アルファ・シンドローム」が発生して,主従関係が逆転する,それがプログラマがいつまでたっても「コンピュータのドレイ」あるいはせいぜい「コンピュータのお守り」になりさがってしまいがちな理由ではないでしょうか。これは人間の習性からくる必然なのでしょうか。

 いえいえ,あきらめてはなりません。本来人間はコンピュータなぞよりもはるかに賢い存在なのですから,コンピュータのドレイの立場から抜け出し,自分の仕事は機械に押し付けてラクをすべきです。目指せ,プログラマの復権。

 プログラマがコンピュータの持つ高速な計算能力と情報処理能力を使いこなせれば,ドレイどころかあたかも「魔法使い」のように仕事を片づけることができるのではないでしょうか。夢のような逆転劇です。まさに下克上。

 しかし,権利を勝ち取る戦いには「武器」が必要です。それがこの連載で解説する「言語」と「テクニック」です。

復権の武器

 前置きが長くなりました。本連載の目的は,プログラマあるいはその予備軍の人たちが,「逆アルファ・シンドローム」を脱出して「コンピュータの主人」に復権する助けとなることです。そして,そのための「武器」である「プログラミング言語」と,その言語を使った「プログラミング・テクニック」を解説します。

 プログラミング言語は,プログラム(処理手順)を記述する方法で,世の中にはたくさんあります。有名なものとしてはBASIC,FORTRAN,C,C++,Java,Perl,PHP,Python,Rubyなどがあります。

 聞くところによると,数学的にはほとんどのプログラミング言語は「チューリングコンプリート」*1と呼ばれる言語のクラスに分類されるそうなので,どの言語でも等価なプログラムを記述可能なのだそうです。しかし,だからといってどのプログラミング言語を選んでも同じ,というわけではありません。言語にはそれぞれ特徴や性質,長所・短所,向き・不向きがあり,プログラムの書きやすさ(生産性)もずいぶん違うからです。

 ある研究によると,プログラム開発に用いるプログラミング言語の種類と,プログラミングの生産性にはあまり相関がなく,一定期間に開発できるプログラムの規模はプログラミング言語によらず(ある程度)一定なのだそうです。

 また,別の研究によれば,同じタスクを達成するためのプログラミングの規模はプログラミング言語や利用するライブラリによって最大で数百から数千倍の差が発生するのだそうです。このことから,適切な言語を開発すれば,あなたも数千倍デキるプログラマになれる可能性があるというわけです。

 何にでも代償は必要で,プログラム開発効率が高い環境は,しばしば実行時の効率が低いことが多いのです。スピードのために人間があらゆる工夫を行わなければならない分野はいまだに存在します。しかし,今回はプログラマがコンピュータのご主人様として復権するというのがテーマですから,できるだけ人間が楽をする言語を選ぼうと思います。この観点から,連載ではプログラミング言語Rubyを使って解説しようと思います。もちろん,私が設計した言語なので解説しやすいということもあるのですが。

 RubyはLinuxをはじめとするUNIX系OSやWindows,MacOS Xなど各種プラットフォームで動作します。Rubyは多くのOSではパッケージとして提供されています*2。もちろん,Cコンパイラがあればソース・コードから簡単にインストールできます(別掲記事「Rubyのインストール」を参照)。


Rubyのインストール

 今回初めてRubyをインストールする方のために,再度,インストール方法を紹介しておきましょう。原稿執筆時点でのRuby安定版バージョンは1.8.2です。私がふだん使っているDebian GNU/Linuxでは,次の操作でRubyのパッケージをインストールできます。

 他の多くのLinuxディストリビューションでもRubyはパッケージとして提供されています。

 Windows上でRubyを使う場合にはOne ClickInstallerと呼ばれるバイナリパッケージを使うのが簡単でしょう。One Click InstallerのWebページからダウンロードしてください。

 ソースコードからRubyをインストールする場合には,Rubyの公式サイトから「ダウンロード」のリンクをたどってtarballを入手してください。

 ソース・コードをコンパイルするためには,コマンドライン上で次のように進めてください。

(ネットワーク応用通信研究所 まつもと ゆきひろ)