2004年8月25日号

復刻第24弾!
━━━━━━━━━━━━━━━━━━━━━  2004.08.25 Vol.1002 ━━━━
 ■□■□■
 ■□■□■ 日刊「WEBのツボ!」
 □■□■□              http://www.soho-union.com/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                             配信部数 3254部

「続々 システムはオブジェクト指向 Ruby & Flash」(#004)   
                                                        福井修@Fsys.NET

【○】本日のお題 「 メタ と ベタ そして blog と Wiki 」━━━━━━━━

祝 WEBのツボ 1000通突破!!。 Fsys福井システムリサーチの福井です。 

職人の技は、繰り返す事、続ける事で、磨かれて、いぶし銀のように光ってくる
訳で、メールマガジンも続けることって難しいし、値打ちのあることですよね。

前回「 リッチクライアント は Flash ActionScript 」注1)までコードレス(ソ
ースリストが載ってないこと^^;;;)の論評が続いていますが、まあプログラムコ
ード(=ソースリスト)には、関心がない方も大勢いらっしゃいますので、まあ
それはそれでよしとして、今回は、オブジェクト指向Rubyプロダクツの話です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ オブジェクト指向ユビキタス
────────────────────────────────────
  オブジェクト指向というと、キャズム 注2)で言うところの [1]Innovators 革
新者段階は、とっくに過ぎていますが、 次の[2]Early Adopters 初期導入者段
階もまあ超えて、 [3]Early Majority 初期大衆段階 が来ようとしている段階か
なと感じます。しかしながら、まだまだ一般的にはまだなじめないというのが、
状況でしょう。他にもXMLも似たようなものでしょうか。

ユビキタスという言葉も以前 「オブジェクト指向ユビキタス」注3) で取り
上げました。

今回は「 オブジェクト指向ユビキタス 」として取り上げます。
ユビキタスというのは「いつでも、どこでも」という意味なので、言い換えると
「 オブジェクト指向は、いつでもどこでも 」ということになります。

オブジェクト指向では、「クラス」と「オブジェクト(狭義)」の関係を理解しな
ければなりません。「システムはオブジェクト指向、そしてRubyで(#004)」注4)
で説明したとおり「クラス」は 枠・まとまり・グループ で、「オブジェクト」
は、インスタンス=実体で、特定固有なひとつです。

実装では、「クラス」から「オブジェクト」を生成するので、必ず先に、「クラ
ス」が定義されています。

昔「クラスは、たこ焼き器で、インスタンスは、たこ焼きです。」注5)
たこ焼き器(というクラス)の型枠を使って焼いたら たこ焼き(というオブジ
ェクト=インスタンス(実体))がおいしく頂けるという例示(メタファー)をし
ました。

実装例を見てみましょう。 次のRubyスクリプトを rubynokai.rb と保存して、
実行してみてください。 
環境構築は、「人にやさしいプログラミング言語」注6) 参照。

 class Rubyist
   def initialize(name)
     @name = name
   end
   def join_rubynokai
     print @name ,"'s favorite language is Ruby."
   end
 end

 instance = Rubyist.new('福井')
 instance.join_rubynokai

 実行すると

 福井's favorite language is Ruby.

 が出力されます。

上のスクリプトでは、Rubyist というクラスがあって、その型枠からひとつの
オブジェクト=インスタンス(実体)を生成すると、共通の定義(メソッドなど)
は、引き継がれます。福井 を いろいろ例えば高橋や中村..に変えても、クラス
で定義したjoin_rubynokaiメソッドは共通に引き継がれます。

共通の性質をくくりだして一般化して定義するのが「クラス」でひとことで言う
と『抽象化』です。
実体として、個別にそこにあるものが「オブジェクト=インスタンス」で、ひと
ことでいうと『具体化』です。

この『抽象化』と『具体化』を 対照的に 表現するのに近頃 「メタ」と「ベタ」
という言葉を使っています。語呂の滑らかさから、ついつい口にでてしまいます。

「そんなに メタメタにつくったら後で追いかけるのが大変やで..」
「そんなに ベタベタに作らんともっと抽象化せいや..」
   :

  人によって「メタ」「メタ」派と「ベタ」「ベタ」派に別れるというか傾向が
あるのですが、どちらに偏ってもダメです。
  
デザインパターンの適用は、「メタ」「メタ」ですし、クラスを導入しない従来
の手続き型(ActiveServerPagesやほとんどのperl,PHP..)は「ベタ」「ベタ」
です。

この 「メタ」と「ベタ」の程良いサジ加減(適度に抽象化して、適度に具体的)
に落とすのが、設計の面白さかな と感じる今日この頃なのです。

そして、この「メタ」と「ベタ」という言葉は、オブジェクト指向の設計・実装
のみならず、生活のあらゆる場面で、適用できるのです。

法律の制定などは「メタ」な仕事ですし、個別の判例は「ベタ」な事例ですし。

これ すなわち 「 オブジェクト指向ユビキタス 」。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ blog は tDiary
────────────────────────────────────
  論評が、続いているのですが、論評(=メタ)ばかりでなく実装(=ベタ)の
記事がないと偏ってしまいます。「どちらに偏ってもダメ」なので、ちと実装の
話もします:-)

  blog が 大流行で、猫も杓子も私も 注7) マイクロソフト 注8) も^^

  rubyキラーアプリのひとつ tDiary には以前にも 注9) 着目しました。

  tDiaryは、Rubyの公式サイト 注10) に使われています。
  
日本の従来からのWeb日記も 1) RSSサポート 2) TrackBackサポート 3) SEO対応
4) ping更新通知 などの機能強化が進んでいます。 

tDiaryも Diary=日記 という印象が強いですが、7月31日に バージョン2.0
が公開され、いろいろ機能が充実しました。注11) 

BlogKitをインストールすると、日付が意味を持たなくなり、記号番号扱いにな
り、日記という定義から離れて まさに blog になってゆきます。
私のにも BlogKit をインストールしてあります。

なんと言っても tDiaryは、見栄えを たくさんのテーマから選べるし、自分でカ
スタマイズできるのがうれしいところです。スタイルシート大活躍の世界ですね。

テーマのイメージを鳥瞰するのに かずひこさんが zphoto 注12)をベースにした
ツールを提供されています。注13) 

ここでも RubyFlash が遭遇しています。

このズーム感は、興味深いので、私もやってみました。【見たい人限定】 注14)


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ WikiHiki
────────────────────────────────────
  blog は blog の特長があって、時系列情報発信には、向いていると思います。
が、情報の集約や、最新版維持には、Wiki が向いています。

Wiki とは、ブラウザから簡単にWebページの発行・編集などが行なえるしかけで
す。

歴史は、結構もう長いですね。結城浩さんが C Magagineで Perl実装のYukiWiki
注15)をはじめて紹介されていたのは、2000年10月号でした。 

  Rubyでの Wiki実装は Rwikiを筆頭にたくさんあります 注16) が、最近では、
Hiki 注17) が人気です。
  日本Rubyの会のサイトにも採用されましたし、逆引きRubyも設置されています。

  特長は、tDiaryのテーマ(スタイルシート)が使えることとHikifarm で、複
数サイトを管理できることです。
  
Fsysも仕事に使っています。
  
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ JavaScript との 融合 Wema またの名は 変なもの
────────────────────────────────────
  知る人ぞ知るWikiの 変り種 も紹介しておきます。

それは Wema (Web + Ema(絵馬)) またの名は 変なもの 注18) です。
  
ウェブページ上に付箋を貼り付けられる優れものです。凄い 感動です。

JavaScriptを使いこなすことで、相当リッチなこともできる事例ですね。
  
私のところでも、設置してみました。注19)
使い方は Help をよく読みましょう。

作者の伏原幹さんは、「lily」というblosxom(Perlのblog)のruby版も実装して
おられます。

日本発のオブジェクト指向スクリプト言語 Ruby の作品は、どんどん生まれて、
浸透しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ まとめ
────────────────────────────────────
 今回は、久しぶりにオブジェクト指向の話と、「メタ」から「ベタ」とキーワ
ードを提唱しました。「論評」から「実装」へ話題を移して blogツールとして
の tDiary、テーマイメージ閲覧で zphotoツールWikiのさまざまと ブラウザ
付箋のWema そして 人気の Hiki について チェックしてみました。

この blog と Wiki はコミュニケーションツールとして、もっともっと普及する
のは、確実です。早く使いこなしたものが有利でしょう。

Ruby は、その基盤言語として着々と地歩を築いています。

何度か言及していますが「日本Rubyの会」http://wiki.fdiary.net/RubyNoKai/
が8月8日に正式に発足しました。もちろん私も入会しました。

興味のある皆さんも是非どうぞ。

JavaRubyに近づいて来ています。ぐルビー(Groovy) 注20) :-p

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※ 注釈、資料、参考情報
────────────────────────────────────
 注1) 続々 システムはオブジェクト指向 Ruby & Flash (#003)   
    「 リッチクライアント は Flash ActionScript」2004.08.05
http://www.melma.com/mag/02/m00020302/a00000789.html

 注2) キャズムについては、以前↓でも取り上げました。
 ソフトエンジニアの雇われない生き方 (#004)  「技術まわり」2003.09.23 
http://www.melma.com/mag/75/m00094675/a00000037.html
 ↓に 良い図が出ています。
 ブログはキャズム(ハイテクの落とし穴)を越えてブレイクするのか?
http://www.goodpic.com/mt/archives/000227.html

 注3) システムはオブジェクト指向、そしてRubyで(#012) 2003.7.21 
http://www.melma.com/mag/02/m00020302/a00000584.html

 注4) システムはオブジェクト指向、そしてRubyで(#004) 2002.09.23
http://www.melma.com/mag/02/m00020302/a00000375.html

 注5) システムは、オブジェクト指向 そしてRubyで(#001) 2002.06.05
http://www.melma.com/mag/02/m00020302/a00000302.html

 注6) 続 システムはオブジェクト指向 Ruby & Flash (#001) 2004.01.22
「人にやさしいプログラミング言語http://www.melma.com/mag/02/m00020302/a00000690.html

 注7) Fsys blog
http://blog.fsys.net/

 注8) マイクロソフト、ブログサービス「MSN Spaces」ベータサービスを開始
http://internet.watch.impress.co.jp/cda/news/2004/08/04/4164.html

 注9)「SOHOのツボ!」2003.10.21「家庭 & Home Office」
http://www.melma.com/mag/75/m00094675/a00000057.html

 注10) オブジェクト指向言語Ruby
http://www.ruby-lang.org/ja/

 注11) ただただしさんの tDiary
http://www.tdiary.org/

 注12) zphoto: Flashベースのフォトアルバムを作るツール
http://namazu.org/~satoru/zphoto/

 横着プログラミング 第7回: zphoto
http://namazu.org/~satoru/unimag/7/

 注13) tDiaryテーマ選択ツール (かずひこさん) 
http://tdiary2.tdiary.net/theme/zphoto.swf 

 注14) Fsys member
http://ns2.fsys.net/tubo/member/

 注15) 結城浩さんの YukiWiki
http://www.hyuki.com/yukiwiki/
 
 注16) Ruby で実装された Wiki達
 咳さん なひさんの RWiki
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=top 

 wikisuck
http://cvs.m17n.org/cgi-bin/viewcvs/wikisuck/?cvsroot=ruby

 tiki windowsで動作するTikiWinもあり。 テーマには tDiaryのテーマが使える
http://todo.org/

 ASDP: AsWiki amrita を使用している
http://www.assist.media.nagoya-u.ac.jp/ASDP/index.cgi/AsWiki

 VikiWiki インデントを主体とした整形フォーマット
http://www14.org1.com/~mopia/dynamic/vikiwiki.cgi

 KoBit - TheKoBit 複数Wiki を発行する機能を持つ
http://kobit.zive.net/

 青木峰郎さんの BitChannel 徹底的に CVS を活用できる
http://i.loveruby.net/w/BitChannel.html

   :

 注17) 竹内仁さん かずひこさんの Hiki
http://www.namaraii.com/hiki/

 逆引きRuby
http://www.namaraii.com/rubytips/

 注18) kanさんの変なもの(wema) 付箋とWikiの融合した不思議空間 
http://www.mikihoshi.com/wema/

 注19) wema お試し
http://ns2.fsys.net/wema/

 注20)  標準化進む新スクリプト言語“Groovy”
http://www.atmarkit.co.jp/fjava/kaisetsu/j2eewatch03/j2eewatch03.html

【プロフィール】
福井 修 ( FUKUI Osamu ) o-fukui@po.iijnet.or.jp
福井システムリサーチ http://fsys.net/  主幹。システム構築歴28年。
システム構築エキスパート
日本Linux協会、神戸商工会議所情報処理学会、関西IT共同体 会員
関西ソーホ・デジタルコンテンツ事業協同組合 監事