title: Moriq and Ruby author: Kazuhiro Yoshida mailto: moriq.kazuhiro@nifty.ne.jp %href:ruby.pi% is Pi source.(ShiftJIS) 1.Moriq and Ruby 1.1. はじめに さて, Ruby とは何ですか ? と周りから聞かれることも全くないもりきゅうの生活は,労働と趣味とで成り立っており,労働とは高松花市場,趣味とはプログラミングであります。 ここでは,趣味の時間に捻り出したプログラムを公開する。できれば,プログラミングの手法や考え方についても記述したい。 最近のプログラミングといえば, Ruby スクリプトを書くこと,さもなくば, Ruby Extension Module を C で書くこと,となっている。もちろん,私個人の話ではある。私的に流行っている。そんな感じ。 1.1. 言語遍歴 私のプログラミング言語遍歴を現時点から振り返ってみると, + Ruby + Java + Perl + Filly/Toffy + Pascal + Ray/mml + C + N88BASIC + BASIC on EPSON HC-40 となる。情報科学に関する教育は大学でちょこっと 2,3 の講義を受けただけなので ( 私は教育学部に所属していた ) ,ほぼ独学といえる。困ったもんだ。この一覧で Pascal がちょうど大学 1 年に当たる。 ところで,一覧中で C と書いては見たが,私はあまり使った記憶がない。それまで BASIC をばりばり使っていたためであろう。あの構造化プログラミングにはなじめなかった。 C を思い出したように使い始めたのは Ruby を知ってからである。 なお, HC-40 BASIC 上で生み出した数々の名作ゲームは失われてしまった。主な原因は HC-40 のバッテリー部が壊れてしまったことである。 1.1. ネット インターネットを利用できるようになってから,先端技術の情報が得られやすくなった。これまでは本が出版されるのを待たねばならず,しかも本はその出来事から 1,2 年遅れているし,洋書の翻訳本であれば,その遅れはなおさらだ。 確かに,インターネットの情報の質は ( 石の含有率がかなり高い ) 玉石混淆だから,ピントのずれた情報を掴むことはよくある。このずれに気づかないと回り道をする羽目になる。勉強にはなるけど。 1.1.UNIX Ruby を語る前に UNIX について語ろう。私は一昔前の富士通のノート型パソコン FMV-5120 NA2/W いわゆる BIBLO ( マシン名は thany) に FreeBSD-2.2.5 をインストールし,これを Ruby 用にしている。スペックは CPU 120MHz, RAM 48MB である。私が UNIX に触れたのは大学 3 年も終わるころ, FreeBSD-2.2.1 を NEC PC-9821 Cx2 いわゆる CanBe にインストールしたのがはじめである。それから 2 年も経っていない,いわば,へなちょこユーザの称号 'novice' を贈ってほしいと言いたいくらいの経験である。大学には SUN-SPARC-Solaris が 1 台置いてあり,これを触っては見たが,どうやって電源を切るのかも分からないありさまであった。今では shutdown くらいはできるようになった。うん,偉い偉い。 thany は X Window System を導入できるくらいのスペックはある。実際,液晶はドット落ちが 2,3 個見つかるだけで,きれいなものだ。そのおかげで Ruby/Xlib を開発することができる。 1.1.vi 私はテキストエディタとして elvis つまり日本語の使える vi を使う。 mule (Emacs) も使ってみたがよく分からなかった。 vi はそれなりに分かりやすい。 気になるテキストエディタとしては RE がある。 Windows で復刻版 ( というかクローン ) が使えるのだが,元祖 UNIX の RE はどこにあるのだろう。気になって仕方がないが,この名前のおかげで検索は困難だ。 1.1.Ruby どんな言語にも得手不得手があり,それぞれがニッチを占めている。スクリプト言語の特長をここではあえて述べない。私の知識は浅いから。 Ruby に触れたことの大きな収穫は UNIX 使いへの道を踏み出せたことだ。確かに UNIX は最初の第一歩を踏み出すときのハードルが高い。私の場合は Ruby が後押ししてくれたおかげで試練に耐えることができた。また, Ruby は質の高いソフトウェア技術のカタログのようなものなので,真のソフトウェア技術者への道を指し示してくれる。そう私には思えてならない。この啓示が的外れなものではありませんように。 Ruby はお気楽極楽な言語だ。 Perl 使いがにやにや笑いを浮かべるなら, Ruby 使いはにっこり微笑む ( ほほえむ ) だろう。この差は大きい。なぜかって ? Ruby 使いの方が明らかに品が良いではないか。 Ruby を使っていて思うことは,つまづきが少ないこと,つまづいても立ち直りが早いことだ。つらつらスクリプトを書いたのち,実行して間違いが見つかると, Ruby は位置と原因を教えてくれる。たいてい,直しかたはすぐ分かる。分からないときでも,直前に知りたい情報を出力するための %c: p foo % を書き込んで,再実行すればよい。要するに,開発効率が非常に高いのである。 1.1.Ruby との出会い 私が Ruby を知ったのは NIFTY の FGALTS でであった。大学 3 年当時 ( 1997 年 ) , Perl が究極のスクリプト言語だと思い込み, Perl 道に鍛錬を重ねていたのだったが, Ruby を知ったとき私には Ruby = Perl + Java という構図が浮かんだ。ということは Ruby > Perl .. で,あっさり乗り換えた。 ^^; FFILLY でお世話になったともゆきさんから仕事をいただいた縁で,私は Perl, Java を勉強し,それなりに使うようになっていたのだ。その当時 ( 私にとって ) 双璧だった言語を足したように思えた Ruby は,今後,ネットワークプログラミングの覇者になるに違いない。この予想は当たる筈だ。当たってくれなくては困る。 1.1. 作品 では FGALTS 時代に作った Ruby スクリプトを紹介しよう。なんにせよ,私は新しいプログラミング言語を使うとき,はじめにゲームを作ってみる。 1.1.1.adv adv はテキストアドベンチャーツクールである。テキストアドベンチャーとは,読み手が数々の選択をしながら読み進めていき,たいていは主人公が死んでしまって Game Over ,正しい選択をしていくと最後には Happy End にたどり着く,というものだ。そういうジャンルの本もあって,ダイス ( サイコロ ) を使って条件判定をするものもある。例えば,私は「火吹山の魔法使い」という本を読んだ ( というよりも遊んだというほうが適切かな ) ことがある。しかし,いまだにクリアしたことがない。もちろん,ページをめくれば結果は載っているのだが,この手のゲームは過程を楽しむのであるから,そんなことをしても意味がない。 adv は簡素なもので,本文と選択肢から成る。 1 ページが 1 ファイルに対応しており,その書式は次のようになる。 --text [ 本文 空行まで何行でも .. ] [ 選択肢 1 の文 ] [ 選択肢 1 のファイル名 ] [ 選択肢 2 の文 ] [ 選択肢 2 のファイル名 ] .. -- 1 ページ目は adv.txt に書く。「選択肢 # のファイル名」は拡張子 .txt を外した名前である。 * %href: adv/adv.rb % * %href: adv/adv.txt % * %href: adv/comein.txt % 今では懐かしい記法が見られる。メソッドの引数は必ず括弧で囲んであるし, attr の引数は String だし,シングルクォートしても良いところをダブルクォートしている。 当時は Ruby version 1.0 を使っていた。しかし,この骨董品は Ruby-1.4.2 でもちゃんと動く。