第1回 2002/06/05

復刻シリーズのうち Flash分(あまりFlashFlashしてなかったが)は終わったのでもっと時代を遡って2002年 !4年も前だ!のも続けます。
復刻シリーズ第31弾

━━━━━━━━━━━━━━━━━━━━━━ 2002.06.05 Vol.506 ━━━━━
 □■□
 ■□■□■□■□■ 日刊「WEBのツボ!!」
 □■□                      http://www.soho-union.com/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                          配信部数 2730部

【○】本日のお題 「システムは、オブジェクト指向 そしてRubyで」(#001) ━━━
                           福井修@Fsys

  皆さんこんにちは、福井修@Fsysです。リニューアルで今回から Ruby を中心にそ
のベースになっているオブジェクト指向について語らせて頂こうと思います。

私自身の紹介につきましては2001.05.09 Vol.327で載せましたのでそちらも御参照下
さい。 http://www.melma.com/mag/02/m00020302/a00000116.html

Ruby というのは「オブジェクト指向スクリプト言語」です。まあ Perl の後から出て
きて先輩 PerlJava の良いとこ取りで 新進気鋭な、使いやすくて強力な『言語』
です。(公式サイト http://www.ruby-lang.org/ja/)

WEBサイト構築で動的なページを提供しない場合は、サーバサイドプログラミングは、
関係ありませんが、コンテンツが大量になりDB連携とかが避けて通れなくなったら
本当にどの基盤(OS,言語,フレームワーク...)を採用するのか、評価・選択しなけれ
ばなりません。サーバサイドプログラミングは避けて通れません。では、いったいど
れが良いのでしょうか?

▽ WEBサイト構築の基盤

 さて現実のWEBサイト基盤(プラットフォーム)は、どうなっているのでしょう。

1) 商用Unix系
2) Linux系
3) Windows系
4) その他

まあWebServerが Apache系かIIS系かそれ以外かという分類もありでしょうが。
エンドユーザにとっては、興味のない話ですね。WEBデザイナの方も興味ないかも知
れません。ちゃんと動いてくれたらブラックボックスで良いのです。

そう。何でも良いのです。営業的にあるいは、責任押しつけ先の都合的にそのサイト
毎の状況はありますから高くて悪くても、何でもありです。私個人は、今現在Linux
が安上がりで信頼性も良いと思っていますが、将来 Mac X が良いと言いだしている
かも知れませんし。

そうするとプラットフォームに依存しない言語やパッケージがよさそうですね。

ASP(ActiveServerPages)のVBScriptは、敷居が低いので、それなりに普及しています。
私もいろいろ利用しました。が VS.NET では使えなくなりました。VBScript資産は、
そのまま使い続ける(ほとんどはこうなるでしょうが)か、別の言語(例えばVB.NET)
に書き換えを迫られます。「チリ!ソフトASP」という手もありでしょうが。

PerlJava は、注意点はあるもののマルチプラットフォームですから、Windows←
→Linux等で互換性があります。これらの言語が普及しているのは、その部分が評価さ
れているところも大きいでしょう。Rubyももちろんマルチプラットフォームです。
Rubyは、新しい Mac X には、プレインストールされるようですし。

次にサーバサイドDB連携の観点ではどうでしょう。

PerlでDB連携はできますが、難易度が急にアップする感じですね。Perl-DB連携は、
私自身で踏み込んでやった訳ではありませんのでやっている方々にとっては、問題で
はないのかもしれませんが。

JavaでのDB連携は、まあいま一番主流になってきています。

PHPは、WebでDB連携したい時に、とっつきやすいですね。PHPオブジェクト指向
の必要性にめざめて PHP5(ZendEngine2)で、相当変化があるようです。
PHP3,PHP4,PHP5...と振り回される覚悟は、必要でしょう。PHPは、ひとつのWebアプ
リケーションです。内部に独自スクリプト言語を含むところの。

RubyでのDB連携は、とても優れています。ただまだ情報が少ないので事例は多くは
ありません。ですからそのあたりも含めこの連載で語りたいと思います。

▽ オブジェクト指向ってなに?

・ オブジェクト指向っていったい何が有利なん??

私はシステムエンジニア歴は長いですが、この問いには長らく答えられませんでした。
本では読んでも、自分でそのメリットを体感して納得できていませんでしたから。
「なんか使いこなすとええらしいけどそこまで行くのが大変そう」てな感じでした。

Ruby と出会って変わりました。Ruby は、根本からオブジェクト指向なので、「Ruby
を使うこと=オブジェクト指向を使うこと」になるのです。

コーヒを飲んだことの無い人においしいコーヒの味わいを口で説明するのは、難しい
ですよね。ぐちゃぐちゃいわずに飲んだらわかるのです。 

オブジェクト指向の有利さは、使ってみれば解るのです。Javaオブジェクト指向も
できますが、従来の手続き的にも使えるのです。ですから Javaを使ってもオブジェ
クト指向を避けて通れるのです。オブジェクト指向を避けて通れないときにオブジェ
クト指向がわかっていないとよくわからなくなります。私がそうでした。オブジェク
ト指向ではないやり方にずっとどっぷり浸かってきたのですから。

・ オブジェクト指向の有利さのひとつは『部品化』しやすい点です。

オブジェクト指向ではクラスという枠に、フィールドというデータとメソッドという
手続きを定義します。このクラスという枠から実体(インスタンス)を生成します。

クラスは、たこ焼き器で、インスタンスは、たこ焼きです。たこ焼き器は、食べられ
ませんが、たこ焼きは、食べられます。ここら辺は、ポイントです。たこ焼き器さえ
ちゃんと作っておけば、どんどんたこ焼きを焼いておいしく頂くことができるのです。

クラスという枠に、データと手続きをパッケージできることが、メリットになります。
従来の、サブルーチンや関数では、手続き部しか部品化できないので、結局データの
扱いの制約で、どこでも使える共通な部品化は難しく、小規模な部品化しかできなか
ったのです。
住宅建築でいうと、在来木造軸組工法では、窓枠はサッシで部品化できても、部屋ご
と部品化はできません。プレファブリック工法でやっと部屋ごと工場で作って現地で
は置くだけ(ユニットを組み立てるだけ)でできるようになったのです。

JavaEJB(エンタープライズJavaBeans)は、オブジェクト指向での部品化の現れです。
ただし十分複雑なベースが必要ですから、これが普及するか、大規模なシステムに限
定的となるかは、これからの市場の反応次第です。マイクロソフトActiveXがかつて
『部品化』を標榜し華々しくデビューしましたが、現状のザマです。あれだけ大々的
にアピールしていた『COM(ComponentObject Model』ですら .NET で位置づけは、変わ
りました。EJBもどうなるかはわかりません^^;

Perlの部品は、CPAN(Comprehensive Perl Archive Network)で入手できますし、
http://ring.asahi-net.or.jp/archives/lang/perl/CPAN/

Rubyの部品は、RAA(Ruby Application Archive)で入手できます。
http://www.ruby-lang.org/en/raa.html

ぱっと見では、どちらも同じ様ですね。でも Ruby は、日本発で、基本的に日本語な
のです。(海外向けに英訳してあったり、海外の作者もいますから英語も多々ですが)

使った時のRuby部品のわかりやすさは違うのですが、これはやっぱり体験するしかな
いでしょう。

・ オブジェクト指向の有利さのもうひとつは『継承』です。

親クラスで、実装されているメソッドを、それを継承した子クラスでは、そのまま使
えるのです。変更したり、追加したい分だけを記述すればよいのです。これを『差分
プログラミング』といいますが、このあたりの使い易さにおいて Ruby がとても優れ
ているのです。使い易さを追求している設計コンセプトの勝利です。

▽ Ruby ってマイナー?

Ruby って周りに使っている人が少ないので不安という人もいるでしょう。
まあ Javaも 1997年あたりでは、マイナーでしたね。5年たつと状況は、変わるでし
ょう。VBもVB6は、なくなってしまいますし。C#も今からですし。

良いものが勝ち残る訳で、負けたものあるいは賞味期限がすぎたものは、消えてゆき
ます。

Rubyは、国内はもとより海外での評価が高いです。

・ 平成12年度「未踏ソフトウェア創造事業」採択プロジェクト
オブジェクト指向スクリプト言語Ruby次期バージョンの開発
http://www.ipa.go.jp/NBP/12nendo/12mito/index.html

・ eXtream Programing の 権威 Kent Beck さんが絶賛

・ JAOO国際オブジェクト指向カンファレンス(www.jaoo.dk)atデンマーク
http://www.ruby-lang.org/en/jaoo2001/日本IBMのサイトで日本発最新のオープン・ソースの宝石 Maya Stodte
http://www-6.ibm.com/jp/developerworks/linux/ruby.html

・ 今後のWebサービス(SOAP/WADL/UDDI)では、Java と VS.NET が
   主導権争いを演じてくれるわけですが、 RubyGarden.orgでは、
   「SOAP/WSDL/UDDIを合わせてサポートして、RubyをキラーWeb 
   Service言語に」と言ってる人もいます。
http://www.rubygarden.org/comments.php?op=showreply&tid=41&sid=72&pid=40&mode=threaded&order=0&thold=0#41

【プロフィール】
福井 修 ( FUKUI Osamu )o-fukui@po.iijnet.or.jp
福井システムリサーチ http://fsys.net/  主幹。システム構築歴25年。
日本リヌクス協会、神戸商工会議所情報処理学会 会員
関西ソーホ・デジタルコンテンツ事業協同組合流通科学大学 委託SE http://www.umds.ac.jp/
デジタルハリウッド神戸校 Java講師