Date:  Wed, 16 Nov 2005 16:02:35 +0900
Subject:  【オブジェクト倶楽部: 2005-42号】
X-Mail-Count: 00123

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.117 2005/11/16

■ I N D E X
┃
┣【Topics】クリスマスイベント 登録開始間近です!
┣【プログラミング】Rubyで進むオブジェクトの道 〜脱初心者をめざして〜[10]
┣【PF】アジャツール - Agileなツール紹介[5]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  クリスマスイベント 登録開始間近です!
  〇 〇━━━━━━━━━━━━━ ━━・ 

お待たせいたしました。オブジェクト倶楽部のクリスマスイベントの登録開始
を下記日程より開始いたします。みなさんこぞってご参加ください。

登録開始日時:11月21日(月)
http://www.ObjectClub.jp/event/2005christmas/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【プログラミング】Rubyで進むオブジェクトの道 〜脱初心者をめざして〜[10]

●今回のテーマ

今回のテーマは、Duck Typingについて学習します。
Duck Typingはあるオブジェクトがどのクラスに属するかより、オブジェクトが
メッセージにレスポンスできるかに関心を払うプログラミングスタイルです。

Duck Typingは動的型の言語の特徴の1つを端的にあらわした重要なキーワード
なのでおさえておきます

●Duck Typingの由来

"if it walks like a duck, and talks like a duck, then it is a duck"
(もしアヒルのように歩いて鳴けば、そいつはアヒルだ)
の言葉に由来しています。Dave Thomasによって、知られるようになりました。

●Duck TypingをRubyっぽく表現

プログラムっぽく先の言葉を表現するとつぎのようになります。

def foooo(duck)
  # メッセージ重視(Duck Typing)
  if duck.respond_to?(:walk) && duck.respond_to?(:talk)
    duck.walk
    duck.talk
  end
end

メッセージ重視のDuck Typingの場合、duckオブジェクトが属するクラスが何で
あるかを問いません。代わりに、duckオブジェクトがwalkのメッセージにレス
ポンスできること(duck.respond_to?(:walk))を期待します。

●型重視の場合をRubyっぽく表現

一方、型重視の場合、次のようになります。

def foooo(duck)
  # 型重視
  if duck.kind_of?(IDuck)
    duck.walk
    duck.talk
  end
end

型重視の場合、duckオブジェクトの属するクラスがIDuckであること
(duck.kind_of?(IDuck))を要求します。Duck Typingの場合のduckオブジェクト
がIDuckクラスの属さなくてもよいのに比べて、より制約が強くなっています。

●型重視の設計方針

型重視の場合、変更が起こりそうな箇所を予言して、抽象クラス(インタフェー
ス)を使って変更箇所を隠蔽し、それぞれのバリエーションをサブクラスで実現
するように設計します。

●メッセージ重視のデザイン方針

一方Duck Typingの場合、型重視の設計方針で必要とした抽象クラス、継承は不
要です。メッセージで変更箇所を隠蔽し、それぞれのバリエーションをレシー
バ(メッセージの受信側)で表現します。
Javaなどの静的型の言語の場合、リフレクションなどを駆使する必要がありま
すが、Rubyなどの動的型の言語の場合は、容易に実装できます。

Duck Typingの利点として、継承しなくてよい、あらかじめ抽象クラスを抽出す
る必要がないため、型重視と比べ変更が容易になる傾向があります(例えば抽象
クラスに変更があったら、サブクラスもメンテナンスが必要)。

欠点としては、静的型の言語の利点として上げられる厳密なコンパイルチェッ
クができないなどがあげられます。
そのため、小さなステップで繰り返し確認しながら開発を進めるテスト駆動開
発が重要な役割を担っています。

今回の例では、respond_to?やkind_of?を記述しましたが、説明をしやすくする
ためで本来は記述しません。どうしても事前チェックが必要の場合は、
respond_to?を選択することで、Duck Typingに近づくことができます。

●感想

Java出身の筆者がDuck Typingを初めて学習したとき、「ポリモフィズムを表現
するのに「抽象クラス(インタフェース)と継承(実現)がなくてもいい。メッセー
ジがあればポリモフィズムを表現できる」ことを知ってびっくりしました。い
や、いろいろ学ぶことありますねぇ〜。

次回は、モックテストを例にDuck Typingについてのもう少し具体的に学習して
いきたいと思います。

●参考

まつもと直伝 プログラミングのオキテ 第4回 日経Linux 2005年8月号
http://itpro.nikkeibp.co.jp/article/COLUMN/20050913/221012/

Programming Ruby
http://www.amazon.co.jp/o/ASIN/0974514055/xpjp-22

●その他

foooo
ダックがフォー。「o」が4つでフォー/~~ 特に意味はありません。 
(IENAGA)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-9&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-9&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-9&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【PF】アジャツール - Agileなツール紹介[5]

●はじめに

今回のアジャツールは、王道のホワイトボードに触れたいと思います。読者の
中には、ホワイトボードに思い入れが強い方がたくさんいらっしゃると思いま
す。ホワイトボードについて語りたいという方がいらっしゃいましたら、
editors@objectclub.jpまでドシドシ投稿してください。今回はホワイトボード
の種類について考察してみます。

●ホワイトボードの種類

オフィスで一般に「ホワイトボード」というと、どのような形態のホワイトボー
ドを想像するでしょうか?筆者は設置場所に着目して、一般的なホワイトボー
ドの形態を3つに分類してみました。

・壁面設置型
・脚付き型
・携帯型

更に素材で分類したり、印刷可能かどうか、スクロールできるかどうか、マグ
ネットが使えるかどうか、様々な切り口で分類できるのですが、今回はこの3つ
の形態を中心に見ていきます。

●壁面設置型

スペースが許せる場合に設置しておきたいのが、この壁設置型のホワイトボー
ドです。ホーローやスチールを素材としたものを、壁に固定するタイプが一般
的です。この壁設置型の利点は、なんといっても壁面に固定されているため、
グラつかず書きやすいという点です。ただし一度設置してしまうと移動できな
い点や、壁面にホワイトボードを設置するだけのスペースがない場合は敬遠さ
れることがあります。

オブジェクト倶楽部の事務局がある永和システムマネジメントの品川オフィス
では、会議室及び作業フロアの壁面に巨大なホワイトボードが数枚設置されて
います。このボードは本当に書き味が良く、幅もかなり大きいことから個人的
にお気に入りなのです。お客様の所やイベント会場など様々な場所でホワイト
ボードを使ってきましたが、このホワイトボード以上に書きやすいものはまだ
お目に掛ったことがありません。もちろん印刷はできませんし、移動も壁面設
置のため困難です。なのでいつもホワイトボードの近くの場所の取り合いになっ
てしまいます。

また、ホワイトボードではなくホワイトボードシートを表面にコーディングし
たマグネットシートや粘着シートなども存在します。これは直接壁面や、スチー
ル面に貼り付けて使用します。ホワイトボードシートは大きなサイズを指定す
ることができるので、壁面全てホワイトボードということも可能になります。
ただし一度貼ると剥すことができない(粘着シートの場合)点や、壁面がゴツゴ
ツしているとシートの表面もゴツゴツしてしまい、書きづらいこともあります。
最近では静電気で貼り付けることのできるシートも存在しますね。

●脚付き型

オフィスでもっとも普及しているのがこのタイプのホワイトボードかもしれま
せん。脚付きで移動できるため、使いたいところで使うことができるというの
が最大の利点でしょうか。また、このタイプのホワイトボードではスクロール
が可能になっていたり、両面使用できたり、書いた内容を印刷できるものも多
く普及しています。使い勝手という点では壁面設置型を凌駕するのではないで
しょうか。

ただ筆者はこのタイプのホワイトボードはきちんと固定されていないという点
で若干書きにくさを感じます。また、ボードの表面がツルツルしているものが
多いせいか、ホワイトボードマーカーの粉が残りやすかったり、若干書きにく
いと感じたりしてしまうという欠点もあります。ボード面については商品にも
よりますので一概には言えないですけどね。

●携帯型

プロジェクトファシリテーション[*1]のグッズとしても紹介されている携帯型
のホワイトボード(ペアボード)は、個人用途でメモ代りに使ったり、気軽に持
ち運びできるという点が他のタイプと大きく異なっています。ペアボードの利
用され方と同じように、日常会話の口頭コミュニケーションを補完するという
コミュニケーションツールとしての役割も強いと言えるでしょう。サイズも様々
でA5サイズからA1サイズまで様々なサイズのボードが市場を賑わせています。
もちろん、このタイプのホワイトボードは、持ち運びも可能ですが、フックに
吊るしておいて壁面設置型としても使用することができます。オフィスではあ
まりないかもしれませんが、家庭で使用する際にはこのケースが多いのではな
いでしょうか。

オブジェクト倶楽部のメンバーが愛用しているペアボードはA3サイズ、平鍋さ
んが携帯しているのは(文字通り持ち歩いている!)B4サイズです。本当にパー
ソナルな使い方なら、A5やA6でも十分かもしれません。ちなみに筆者の自宅に
は3枚のホワイトボード(A4、A3、A2)があります。

●その他のタイプ

ここまで設置場所という観点から3つに分類して説明してきましたが、最近見つ
けたホワイトボードはいずれにも属さない新しいタイプのホワイトボードです。
コクヨが起したブランドの「創材」[*2]で扱っている「Light Write Board」[*3]
は、今までの3つの分類どれにも当てはまり、更に「立て掛ける」ことが可能な
ホワイトボードなのです。高さ180cmという立て掛けるのに十分な高さに、持ち
運びに楽な軽量ということもあって、どこにでも移動して立て掛けておくことが
できます。更に、この「Light Write Board」ならば、机の上に置いて使用する
こともできますし、両面使うことも、横長で使うこともできます。

筆者が今作業しているスペースには、ホワイトボードを設置する十分なスペー
スも、常用使用できる脚付き型のホワイトボードもありません。無理矢理壁面
を空けてマグネット式のホワイトボードを貼って使っていますが、十分な大き
さだとは言えません。今までは、「ホワイトボードをイーゼルで立て掛けて使
う」くらいの発想しかなかったのですが、この「Light Write Board」はホワイ
トボード自体を「立て掛ける」という点が衝撃的でした。もちろん、素材とし
てカットできるため、自分の使いやすい大きさにして使うのもいいでしょう。
実際に私の知人は、このホワイトボードを手頃な大きさにカットして使ってい
るようです。筆者も早速購入してしまいました(笑)

●ホワイトボードの部屋

最後にホワイトボードに囲まれた(というか一面ホワイトボードの部屋)をご紹
介します[*4]。ホワイトボードを壁として、更に机の上までホワイトボードに
なっているそうです。壁一面ホワイトボードという部屋は、アジャイル関連の
文献によく登場しますが、机までホワイトボードになってしまうと、ホワイト
ボードを設置している」という感覚ではなく、「ホワイトボードの中で作業す
る」という感覚になってしまうのではないでしょうか。Agile Modelingでもホ
ワイトボード(特に壁そのものがホワイトボードである)の重要性を問いていま
す[*5]。アイディアを記録し、議論を視覚化して共有し、イメージを表現する
ホワイトボードは、知識労働者には必須のアイテムと言っても過言ではないで
しょう。

また、白という色は、「心も身体も浄化されて、新しく生まれ変わるような感
じをもたらし、素直で明るい心をつくる」そうです[*6]。案外精神的な面にも
効果があるのかもしれません。

●まとめ

今回は、ホワイトボードについて設置場所による分類と、その解説をしました。
次回は引き続きホワイトボードについて取り上げる予定です。(懸田)

[1]:http://www.ObjectClub.jp/community/pf/

[2]:http://www.souzai.jp/

[3]:http://www.souzai.jp/products/plate/lwb.php

[4]:http://kakutani.com/20051105.html#p02

[5]:http://www.agilemodeling.com/essays/agileModelingRoom.htm

[6]:http://yahana.ld.infoseek.co.jp/iyashi_1.htm
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M002-5&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M002-5&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M002-5&choice=2
 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「個人でインターネットをする場合、1日平均何時間していますか?」の
ホントのところ。仕事以外でインターネットをする場合、平均すると、何時間く
らいインターネットを利用してますか?

  10時間以上!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=0
  3時間以上10時間未満。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=1
  2時間以上3時間未満。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=2
  1時間以上 2時間未満。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=3
  1時間未満。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=4
  まったくしません。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=5
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=83&choice=6
  ちょっと語らせて!
     editors@ObjectClub.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「どちらにお住まいですか?」の結果は公開中。ぜひご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol82/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。突然寒くなってきましたね。インフルエンザの流行
シーズン目前です。日常生活ではまず、体調を整えて抵抗力をつけ、 ウイルス
に接触しないことが大切ですよね。手洗いとうがいを心がけ、元気な日々をお
過ごしください。

なお来週のメルマガは、勤労感謝の日でお休みさせていただきます。

今週の強引な一言
*** 先入主となる(ことわざ)***
今まで信じてきたことも、時代とともに変わりゆくもの。たまには、自分の考
え方や、やり方を客観的に振り返ってみませんか。
(さとみ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒http://www.ObjectClub.jp/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋  健児
Copyright (c)2003-2005 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.