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) ここでも Ruby と Flash が遭遇しています。 このズーム感は、興味深いので、私もやってみました。【見たい人限定】 注14) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ Wiki は Hiki ──────────────────────────────────── 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日に正式に発足しました。もちろん私も入会しました。 興味のある皆さんも是非どうぞ。 Javaも Rubyに近づいて来ています。ぐルビー(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共同体 会員 関西ソーホ・デジタルコンテンツ事業協同組合 監事