Date:  Wed, 27 Jun 2007 18:00:17 +0900
Subject:  【オブジェクト倶楽部: 2007-22号】
X-Mail-Count: 00197

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.191 2007/06/27

■ I N D E X
┃
┣【Topics】2007夏イベントのお礼と感想のコーナーを作りました
┣【イベントレポート】オブラブイベント 2007夏 〜帰郷〜スタッフ初体験記
┣【プログラミング】Rubyで進むオブジェクトの道[22]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 オブラブ2007夏イベント、ご参加ありがとうございました!
       感想のコーナーを作りました
  〇 〇━━━━━━━━━━━━━ ━━・ 

去る6月20日(水)に、タワーホール船堀にて開催した、オブジェクト倶楽部2007
夏イベントは、おかげさまで大盛況のうちに終了しました。
快くご講演くださった講師の皆さん、ライトニングトークストーカーの皆さん、
お忙しいところをご参加くださった大勢の参加者の皆さん、たくさんのプレゼ
ントをご提供くださった協賛の皆さん、本当にどうもありがとうございました。

講演資料等は順次公開中です。
http://www.ObjectClub.jp/event/2007summer/files/

講師、トーカー、参加者の皆さんからのそれぞれの感想はこちらから!
ぜひ、皆さんもトラックバックしてくださいね。
http://www.objectclub.jp/event/2007summer/comment.html

なお、参加レポートを随時受付中です!2007summer@objectclub.jp

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【イベントレポート】オブラブイベント 2007夏 〜帰郷〜スタッフ初体験記

こんにちは、メルマガ初登場となります、オブジェクト倶楽部 森田秀幸です。
今回は、多くの参加者の方にご来場いただきました「オブラブ夏イベント2007」
でのスタッフとしての体験記を、当日の様子を交えながらレポートしたいと思
います。

イベントに向けての戦いは当然、イベント開催前の準備から始まっています。
講演内容の決定から、講演者やトーカーの方との連絡・調整、当日のスタッフ
担当割り振りなどなど、その準備は多岐に渡ります。ひよっこスタッフの私に
とっての最初の準備期間は、そんな多種多様な作業を次々と華麗にこなすベテ
ランスタッフを、尊敬のまなざしで見つめる日々でした。
ですが、一人のスタッフとして、このままただベテランスタッフの方々の作業
を見つめつづけているわけにはいきません。ということで、微力ではありまし
たが、私も当日の参加者の皆さんへの配布物準備のお手伝いさせていただきま
した。
そんな配布物準備の作業のなかで、特に印象に残っているのは、鈴のヒモとお
し作業です。この鈴は、当日参加者みなさんに配布された「うちわ」に取り付
けるためのものです。その鈴についている小さな穴一つ一つにヒモを通してい
くという単純な作業だったのですが、私にとっては神経をすり減らしながらの
作業となりました。というのも、なんせ鈴の穴が小さいので、少しでも気を緩
めると、穴に通そうとしているヒモが、ヒョイヒョイっとすぐにはずれてしま
うのです。集中力のない私にとっては、常に気を引き締めながらの作業となり
ました。そんなおマヌケな私をよそに、他のベテランスタッフの手により準備
は着々と進められていきました。

そしてイベント当日です。朝8時に会場に集合して、まずは荷物の搬入から開始
です。たくさんの段ボールつめられた準備物を手に、もうすぐ始まるイベント
に期待と不安を膨らませていました。準備も整い、イベントが開場すると、
さっそく多くの参加者の方が受付にみえられました。準備の間はその具体像が
見えていなかった「参加者の方々」を直接目の当たりにして、改めて「皆さん
に楽しんでいただけるイベントにしていきたい。」という気持ちが高まってい
くのを感じました。
当日、私はイベントのカメラ撮影を担当していました。これは役得とばかりに、
講演中はほとんど会場内にいりびたって、講演を観覧させてもらいました。も
ちろん、大切な仕事であるカメラ撮影をしながらではありますが。とはいいつ
つも、講演者の皆さん一人一人の非常に興味深い内容、それでいておもしろい
語り口での講演に聞き入ってしまい、ついついシャッターを切るのを忘れそう
なことが何度もありました。
また、午後に行われたワールドカフェのセッションでは、司会進行も担当させ
ていただきました。司会というなかなか慣れていない仕事に、少々戸惑うこと
もありました。ですが、いざラウンドが始まると、各テーブルで活発な議論が
なされ、最終的には参加者の方にいろいろな「気づき」を持ってかえってもら
えたようで、セッション終了時には司会を担当できて良かった、という思いで
いっぱいでした。

そして、ライトニングトークスでのトーカーの方々の短くも熱い「語り」も終
わり、イベント閉会を迎え、イベントは無事終了しました。
後片付けは、懇親会までの短い時間のなかでの慌ただしいものでしたが、イベ
ントを無事終えることができた充実感で、明るく作業をこなしていました。

さて、イベントを終えて2日後。イベント自体は終了しましたが、スタッフには
もう一つ大きな仕事が残っていました。そう、プロジェクトの締めくくりであ
る「ふりかえり」です。もちろん、いちプロジェクトである今イベントも、そ
の締めくくりとしてスタッフメンバーによるふりかえりが行われました。
当日参加者の皆さんから寄せられたアンケートや、当日のスタッフが思ったこ
と、感じたこと等を元に、スタッフ同士で熱い議論が交わされました。その結
果として、50 KEEPs、 83 PROBLEMs、 53 TRYsと、もりだくさんな結果となり
ました。その中でも特に、PROBLEMは他のKEEPやTRYに比べてたくさん挙がる結
果となり、メンバーみんなが反省しきりなふりかえりとなりました。ですが、
そこで得られた「気づき」や、そこで感じたイベントに掛ける「思い」は、
きっと次回以降のイベントに受け継がれていけそうだな、と感じることができる、
すばらしい「ふりかえり」であったと思います。

以上、イベントスタッフとしての私の視点を通して、オブラブイベント夏2007
をレポートしてみました。普段なかなか見えない、イベントスタッフの内幕を
少しでも感じていただけたでしょうか。
スタッフ一同、みなさまの次回のイベントご参加をお待ちしてます。
それでは。(森田秀幸)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H003-32&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H003-32&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H003-32&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【プログラミング】Rubyで進むオブジェクトの道[22]

■はじめに
数回にわけて今日からRSpecを紹介します。
執筆時点でのRSpecバージョンは1.0.5になります。

■RSpecとは?
ホームページ[*1]によるとRSpecを下記のように要約しています。

RSpec is a framework which provides programmers with a Domain Specific
Language to describe the behaviour of Ruby code with readable,
executable examples that guide you in the design process and serve well
as both documentation and tests.

ここではまず、xUnitと似たフレームワークと大雑把に理解してください。
xUnitとRSpecの差異の詳細については、実際に触りながら少しづつ探って行き
たいと思います。
xUnitを使った例は、過去のテストファーストメルマガ記事[*2]をご覧ださい。

■RSpecのインストール
すでにgem[*3]がインストールされていれば、下記を実行すればOKです.

 gem install rspec

■RSpecのサンプル
ここでは、RSpecの使い方に注力するため、すでにあるArrayクラスの動作確認サ
ンプルを例にRSpecの記述方法を学習します。
ここでは、配列要素が「空の場合」と「3つの場合」を例にsizeメソッドとfind
メソッドの振る舞いの確認を行っています。

● array_spec.rb
describe Array, "が空の場合"   do
  before do
    @empty_array = []
  end

  it "サイズはゼロであるべきです" do
    @empty_array.size.should == 0
  end

  it "[node1]を条件に検索した場合、結果はnilであるべきです" do
    @empty_array.find { |e| e == "node1" }.should == nil
  end

  it "[not_found]を条件に検索した場合、結果はnilであるべきです" do
    @empty_array.find { |e| e == "not_found" }.should == nil
  end
end

describe Array, "に[node1]を含む3要素が追加されている場合" do
  before do
    @array = []
    @array << "node0"
    @array << "node1"
    @array << "node2"
  end

  it "サイズは3であるべきです" do
    @array.size.should == 3
  end

  it "[node1]を条件に検索した場合、結果は[node1]であるべきです" do
    @array.find { |e| e == "node1" }.should == "node1"
  end
  it "[not_found]を条件に検索した場合、結果はnilであるべきです" do
    @array.find { |e| e == "not_found" }.should == nil
  end
end

■実行方法
下記のコマンドを実行します。
spec array_spec.rb --format specdoc

Array が空の場合
- サイズはゼロであるべきです
- [node1]を条件に検索した場合、結果はnilであるべきです
- [not_found]を条件に検索した場合、結果はnilであるべきです

Array に[node1]を含む3要素が追加されている場合
- サイズは3であるべきです
- [node1]を条件に検索した場合、結果は[node1]であるべきです
- [not_found]を条件に検索した場合、結果はnilであるべきです

#このレポート。いいですね。読みやすいです。

■array_spec.rbの解説
● describe do ・・・ end
describeには、配列オブジェクトがどのような初期状態であるかを記述してい
ます。上記の例では2つのdescribeがあります。

 * describe Array, "が空の場合"   do ・・・ end
 * describe Array, "に[node1]を含む3要素が追加されている場合" do
・・ end

オブジェクトはオブジェクトが保持する状態によって、メソッドの振る舞いが
異なります。
RSpecはオブジェクトの初期状態を明確に意識して、期待する振る舞いの記述す
る特徴があります。そのため、オブジェクトの初期状態をdescribeで明確に記
述し、describeごとにオブジェクトの期待する振る舞い(it should ・・・)を
記述します。

xUnitのよくあるテストの分割の指針は、1クラスごとに1テストクラスだと思
います。
(class User があれば対となってclass UserTest < Test::Unit::TestCase
一方、RSpecでは、describeごとに分割して期待する振る舞いを記述します。
# まだRSpecになれていませんが、筆者はここが気に入っています!

上記はややシステマチックに説明してしまいました。
「describe Array, "が空の場合" 」もっと対話風にとらえると次のようになり
ます。
----------------------------------------------------------
「配列が空の場合の(振る舞いを)説明してください」
----------------------------------------------------------

● before do ・・・ end
describeで記述した配列の初期状態をつくります。xUnitのsetupメソッドに近
い存在になります。
beforeには、引数  :each, :allを引き渡す事ができます。詳細は別の回で解説
します。
上記の例では、空の場合と3つの要素が入った配列の場合の2つの初期状態を
作っています。

● it  "・・・” do ・・・ end
配列がdescribeで明記した初期状態の場合に、実際どのように振る舞うかをit
のなかで記述します。
xUnitのdef testXXX do ・・・ endに近い存在になります。

● @array.size.should == 0
xUnitのassertメソッドに近い存在になります。
shouldのキーワードで期待の値が返っていること確認しています。

またまた、システマチックに説明してしまいました。
「describe Array, "が空の場合" 」と「it "サイズ0を返すべきです"」
を対話風にとらえると次のようになります。
-------------------------------------------------------------
「配列が空の場合(の振る舞い)を説明してください」
「(配列が空なら、)サイズはゼロであるべきです」
-------------------------------------------------------------

RSpecではディベロッパ方言のTestの語彙ではなく、ユーザとの対話をも視野に
入れたSpecの語彙を意識していること、readableを意識していることから、
「describe」「it should xxx」といった語彙を利用しています。
Specの語彙やreadableを強調しているのも、RSpecの大きな特徴の1つです。

■終わりに
Arrayの振る舞いを確認するプログラムを例にRSpecの基本記述を学びました。
今回はRSpecの基本記述の触りまでです。次回も引き続いてRSpecを探り、少し
ずつRSpecやBDD[*4]の全貌に近づけたらと考えています。

■参考
[1] RSpec Home
http://rspec.rubyforge.org/

[2] 過去のテストファーストメルマガ記事
http://www.objectclub.jp/ml-arch/magazine/86.html

[3]RubyGems Manuals
http://rubygems.org/

[4]BDD: Behaviour Driven Development
かなり大雑把に説明すると,TDDと仕様を足して2で割ったようなもの。私自身
は、ユーザとプログラマとコンピュータの共通の語彙を創ってよいソフトウェ
ア習慣を得るためのパタン活動の変種だと、勝手に思い込んでいる。
http://en.wikipedia.org/wiki/Behavior_driven_development

参考:生きてま2
http://giantech.jp/wiki/BDDIntro
参考:An Agile Way
http://blogs.itmedia.co.jp/hiranabe/2005/10/tdd__bdd__731d.html
http://blogs.itmedia.co.jp/hiranabe/2005/12/bdd_behavior_dr_b757.html
参考:TUTORIAL.ja
ttp://kakutani.com/trans/rspec/TUTORIAL_ja.html
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-21&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-21&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-21&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「オブラブのトークス出てみる?」のホントのところ。
先日行われた夏イベントでは、なんと16人のトーカーが出場し、熱いトークス
が行われました。会場でご覧になっている皆さんの姿を見ながら、「本当は出
てみたいと思ってたりして」とか、「見てるほうが楽しいのかな?」なんて思
いました。さて、「オブラブのトークス出てみる?」について教えてください。

  すでに出場を果たしました。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=0
  ぜひ一度出てみたいと思っていて、もう暖めているテーマがある。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=1
  出てみたいなぁ〜と思うんですけど、ネタが・・・
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=2
  出てみたいと少し思うけど、自分には、絶対無理っす!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=3
  観戦する(みている)ほうが断然楽しい。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=4
  ライトニング・トークスって何ですか?
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=5
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=157&choice=6
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

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

こんにちは、編集人です。あっという間にイベントが終了しました。改めてご
参加いただいた皆さん、ありがとうございました。今回は会場で書籍販売を行
いました。平鍋や角谷といったオブラブスタッフの本も並び、臨時でサイン会
場まで作られる大盛況振りでした。そして、ご参加くださったそのほかの著者
の皆さんも、飛び入りしてくださってありがとうございました。なんといって
も、出版社の皆さまの多大なるご支援無しには行えませんでした。たくさんの
本を持って来てくださった出版社の皆さま、ありがとうございます。
あんなに頑張って下さって、会社で叱られていないかどうかちょっと心配して
います(笑)

今週の強引な一言
*** 水に油(ことわざ)***
二つのものがしっくりと調和しないこと。二人の性分が互いに合わないという
意味。いまどきは「洗剤入れたら混じる」もんね。昔は絶対にだめだと思った
ことが、今時では可能になったということはないでしょうか?
(上田雅美)

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