筆者は日経ソフトウエアという初級/中級プログラマ向け雑誌の編集をしている。本誌が目指しているのは,読者にプログラミングに必要な知識を獲得していただくことと,プログラミングの楽しさを感じてもらうこと――である。これは筆者の個人的な興味ともけっこう一致する。幸せなことである。

エンジニアとしての幸せとは

 筆者の個人的な興味は,実はもうちょっと広い。コンピュータ・システムに限ったことではないが,「正しく設計されたものが正しく製造され,設計者の思い通りに動作している状態」を,どうやったら楽に素早く得られるか――である。短く書き直せば,エンジニア的な幸せを素早く得るには,だ。

 筆者がどんなときに幸せを感じるかというと,オープンソースのデータベース「PostgreSQL」とJavaサーブレット・エンジン「Tomcat」を簡単なアプリケーションとともに自分のPCで動かし,タスク・マネージャでプロセスのCPU使用率やメモリー使用量の増減を見て,“思った通りだ”と感じるなどがそうである。自ら設計し,製作した模型飛行機が飛んでいる姿を見て,飛行機にかかる荷重のベクトルを重ねて“予定通り”とニヤニヤするときもそうだ。

 ある取材先のマシン室でACOS-2(NECの小型汎用コンピュータ)が帳票をバリバリ印刷している横で,そのシステムを構築したエンジニアが「かくかくしかじかという工夫をしてこのスピードで帳票が出るように・・・」とうれしそうに話してくれるのを聞いていると,こちらまでうれしくなってしまう。

 デスマーチを乗り超えて,困難を乗り越えた喜びよりも,思い通りにできた喜びが優先する。与えられた条件で,自らエンジニアとして信じるベストな要素技術の組み合わせを得て,それを実現したときに喜びを感じる。

 よくある言葉で言えば「エンジニア冥利に尽きる」というやつだろう。エンジニアではない方から見れば「工学オタク」かもしれない。まぁ,どっちでもいい。多くの場合,筆者の幸せはこの“思い通りに動いたという事実”にあり,筆者の興味は“この事実にたどり着くにはどうするのがよいのか”にある。

“思い通り”の結果を得るために,プログラミング言語の仕様は重要

 さて,コンピュータを思い通りに動かすのに欠かせないのがプログラミング言語である。データとアルゴリズムをコツコツと積み重ねて紙の上や頭の中に設計図を作り,プログラミング言語を利用して設計を実装していく。できたソース・コードをコンパイラなどの処理系に渡せば,動かせるモノ――思い通りに動けば幸せなモノ――ができあがる。

 プログラマ,またはプログラミングするエンジニアにとって,プログラミング言語の仕様は守らなければならない絶対のものだ。その仕様が自分に合うと感じるかどうかは,プログラムの生産性を大きく作用する。いつも自由にプログラミング言語を選べる自由があるわけではないが,せめて自由があるときは,自分が気に入る言語を選びたい。

 筆者は,C言語でプログラミングを本格的に学び,データ構造とアルゴリズムという概念と実装の関係を知った。ポインタと構造体は,どちらもそれ自体の有用さよりも,プログラム実装の考え方そのものを筆者に教えてくれたことに意味があった。その後C++に挑戦して挫折し,Javaでオブジェクト指向を知り,いくつかプログラムを書くうちにC++も理解できるようになった。数カ月前までの筆者がもっとも馴染んでいて,気に入っていた言語はJavaだった。

 そんな筆者が,最近気になっている言語がオブジェクト指向スクリプト言語のRuby(関連情報)である。筆者が考えるスクリプト言語とは,JavaやC言語など他のプログラミング言語と比べて,性能,可読性などを犠牲にした代わりに,気軽な用途で素早くコーディングするのに向くプログラミング言語である。

思い通りに書けるRuby

 筆者は割と面倒くさがりな方なので,手っ取り早く思い通りに動いたという結果を得やすいスクリプト言語が好きだ。過去はsh,sed,awkなどでちょっと便利なプログラムをいくつか書いてきた。ここ6年ほど,Perlの普及に伴い,「ちょっと好きにはなれないけど便利だから」と思いながらもPerlも利用してきた。

 そこで知ったのがRubyである。Rubyという名前の言語があること,開発者が「まつもとさん」という日本人であること,オープン・ソースであること――くらいは知っていたが,その言語仕様はほとんど知らなかった。たまたまRubyに触れる機会があり,Javaに比べてオブジェクト指向をシンプルに実装していること,またPerlと比較して一貫性がありソース・コードの見た目が美しく読みやすいこと――などを知り,好きになった。

 どれほどよいのか,使い込んでみるとどこがよいと感じるのかを知りたくなり,読者にも伝えたいと考え(ここでちょっとだけ宣伝である)現在書店にて発売中の日経ソフトウエア9月号,特集2の中で,Rubyを日常から利用している筆者にお願いして,Rubyのよいところを書いてもらった。

 記事の編集を通してRubyに触れるにつれ,筆者がRubyに抱いた想像は確信に変わり,ますます好きになったのである。言語の仕様に触れて,プログラムを書きたくなる,という経験は筆者にとって初めてのことだった。あるプログラムを書くことを考えるとき,これまで筆者の頭に浮かぶ言語はいつもCだったが,最近はRubyのコードが出てくることが多い。たとえばある配列のすべての要素を処理するなら,ちょっと前まではC言語のfor文を最初に思い浮かべていたが,今はRubyのイテレータを利用して

hoge.each{|i|
  …
}

というコードが浮かぶのである。

 こう書くと,まるで“Ruby信者”のようだ,と思われるかもしれない。実際そうかもしれない。ただし,確かに感じていることは,筆者の“思い通りに動いたという事実にたどり着くにはどうするのがよいか”という興味に,Rubyの言語仕様がよくマッチしていることである。

 無理に押しつけるつもりはないが,もしRubyの仕様を詳しく知らないで食わず嫌いの「エンジニア」の方がいたら,ぜひ(再びちょっとだけ宣伝である)日経ソフトウエア9月号を手に取ってみてほしい。

 また,2003年8月9日に,LL Saturdayというイベント(関連情報)がある。Perl,PHP,Python,Rubyなど,「簡単なことを手軽に,凝ったことでもそれなりに実現できる」軽量なプログラミング言語(Lightweight Language)の世界を体験できるカンファレンスである。残念ながら参加申し込みもすでに満席でうち切られているが,イベント後には各セッションの議事録などがWeb上で参照できるようになるはずだ。Rubyに限らず,これらのスクリプト言語に触れてみる機会を求めている方には,よいチャンスだと思う。

 コンピュータを思い通りに動かすというのは,そもそも楽しいものだ。納期や品質など,仕事の制約が加わると苦しくなるが,それでも楽しさそのものが失われるわけではない。

 プログラムを作る面倒を最小にして,思い通りに動かす喜びを手に入れてみたいと,ちょっとでも思っている方は,ぜひRubyに触れてみてほしい。もちろんプログラミング言語である以上,ある程度の勉強は必要だが,ちょっとだけ学べば,筆者が感じた「プログラムを作りたくなる気持ち」を持っていただけるのではないだろうか。Rubyには,それだけの力があると筆者は感じている。

(矢崎 茂明=日経ソフトウエア)