Date:  Wed, 17 Feb 2010 17:48:14 +0900
Subject:  【オブジェクト倶楽部: 2010-07号】
X-Mail-Count: 00325

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.315 2010/02/17

■ I N D E X
┃
┣【PF】現場リーダーの心得 [23]
┣【プログラミング】Let's Try 受入テスト [3]
┗編集後記

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【PF】現場リーダーの心得 [23]

オブジェクト倶楽部メルマガ読者のみなさん、こんにちは。
岡島です。

2010年もあっという間に2月ですね。年々月日の経つスピードが速くなるのを感
じている私の、今年の一文字セルフテーマは「軽」。何事も軽快にサクサクと
スピーディーに進めていく!という決意を込めました。

さて、前回に引き続き「現場で伝家の宝刀を見せながら人を育てる4つのコツ」
をご紹介しましょう。前回は「1.魚の釣りの仕方を教える」」「2.寛容と徹底
の姿勢を見せる」について説明しました。前回の内容については、以下リンク
先を参照してください。今回は、残り2つのコツについてのお話です。
/ml-arch/magazine/318.html

3.「魔境」を受け流す
久々の現場、しかも自分の得意分野となると、集中力も高まり、とてもいい仕
事をした感覚になることがあります。後輩や部下には「さすがですね!」と見
直され、「俺もまだまだ捨てたもんじゃない」という気持ちになれるのです。

しかし!これこそ「魔境」です。気をつけてください。

「魔境」とは禅の修行中に感じられる心境で、「悟り」を開いたと勘違いする
ような全能感や快楽を伴う状態だそうです。世界との一体感を感じたりいつも
と同じ風景が新鮮に見えたり針の落ちる音すら聞こえるような感覚の拡張・・・。
(興味を持たれた方は、京極夏彦の小説『鉄鼠の檻(てっそのおり)』を読んでみ
てください。禅や悟りについてわかりやすく学ぶことができます。)

と、我ながら大げさな比喩ですね。私達技術者にとってなじみある言葉だと、
「フロー」と呼ばれる状態に近い雰囲気でしょうか。問題を、客観的に余裕を
持って眺められることにより集中力が高まり、作業の効率も向上するのだと思
われます。これはこれで素晴らしいのですが、あなたの本来の仕事は他にあり
ます。この「魔境」を楽しみつつも軽く受け流し、冷静に自分の持つ技術・知
見を部下に伝えること、まずはそこにフォーカスしてください。

あなたの持っている技術は、過去の遺産かもしれません。今この瞬間はとても
役立ちましたが、今後も役に立つとは限りません。もっと重要なのはあなたの
次に続く人達に、あなたの問題解決ロジックや情報ソースを伝えることなのです。

4.「負けて勝て」
あなたがプロジェクトのメンバーと議論をしたとします。技術論や作業の進め
方に関するものです。そこで意見の違いがあったとしたら、おそらくメンバー
の考えの方が正しいです。なぜなら、あなたの方が現場から遠いからです。問
題に取り組んでいる時間が違います。経験則的、一般論的にはあなたの方が正
しいかもしれませんが、今回のケースでは、彼(彼女)のアプローチの方が正し
い可能性が高いです。

あなたのすべきことは、彼らの意見や思いをうまく引き出し、プロジェクト全
体の方針やアーキテクチャに反映できるようファシリテートすることです。

議論に負けてもいいじゃないですか。メンバーの成長はとても素晴らしいこと
で、あなたにとっても「勝ち」なのです。メンバーと真剣に議論できることを
喜びましょう。あなたの部下は、そこまで成長しているのです。

逆に、あなたの意見に全面賛成のメンバーばかりのプロジェクトには注意が必
要です。本当は「こうしたい」「こうすべきだ」と思っていても、あなたに遠
慮して言い出せないだけかもしれませんし、スキルや経験不足で、本当に問題
解決が困難な状況になっているのかもしれません。このような場合はメンバー
と面談し、状況をよく把握するところから始めてみてください。

「4つのコツ」と銘打ちましたが、前後篇をふりかえってみると「心がけ」と呼
ぶ方がふさわしい内容になってしまいました。本当に困っているプロジェクト
の支援をする場合は、心がけと言った抽象論よりも、当面を乗り切る具体的な
腕力が求められるかもしれません。いざという時の腕力(=「伝家の宝刀」)は
確かに必要ですが、しかし、いつまでもそれを繰り返すわけにはいけません。
開発現場をよりよくしていくためにも、これら4つの「心がけ」を意識してみて
ください。(岡島)

● 『ソフトウェア開発を成功させるチームビルディング』
現場リーダーの仕事術をチームビルディングの観点から説明しています。
http://www.amazon.co.jp/exec/obidos/ASIN/4797352434/xpjp-22

● 『受託開発の極意〜変化はあなたから始まる。現場から学ぶ実践手法』
受託開発の手ほどきと現場をよりよく変えていくための実践手法です。
http://www.amazon.co.jp/exec/obidos/ASIN/4774134538/xpjp-22

● 私のブログです。リーダーネタと少々の技術ネタを扱っています。
http://d.hatena.ne.jp/HappymanOkajima/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】Let's Try 受入テスト [3]

● はじめに
本連載のテーマは受入テストです。今日は、クリストファー・アレグザンダー
の設計思想と受入テストの関係について記述します。

● 今日の結論
「エンドユーザが欲しいシステムを作るためには、受入テストの活動(システム
の期待する振る舞いの明確化と確認作業)に顧客が積極的に参加できるように舞
台を整えることが重要」が今日の結論です。

● クリストファー・アレグザンダー
アレグザンダーは、建築家の一人です。ソフトウェア業界においては、デザイ
ンパターンの元ネタで有名なパタン・ランゲージ[*1]を考案しています。

建築における「パタン・ランゲージ」の目的の1つは、「住まいづくり、町づく
りの設計プロセスに、そこに住む人が積極的に参加できるようにすること」で
す。

アレグザンダーは、人々がいきいきと暮らすことができる家や街の形がどのよ
うに作られるかに強い関心を持っており、そのためには、普通の住民も家や街
の設計活動へ参加ができることが重要と考え、その下支えとなるパタン・ラン
ゲージを考案しました。

● パタン・ランゲージのソフトウェア開発への適用
アレグザンダーのアイデアをソフトウェア業界に持ち込んだのは、Kent Beckと
Ward Cunninghamです。論文「Using Pattern Languages for Object-Oriented
Programs」[*2]を1987年に発表しています。内容はUI設計に関するもので、論
文の最後を下記のように締めくくり、ユーザ自身がアプリケーション設計(プロ
グラミング)に参画する未来の可能性を述べています。
"Our initial success using a pattern language for user interface design
 has left us quite enthusiastic about the possibilities for computer
 users designing and programming their own applications."

UI設計についてはその後、Yahoo! Design Pattern Library[*3]、Search Patterns
[*4]、デザイニング・インターフェース[*5]等の発展を遂げており、画面プロ
トタイプと合わせて、現場で利用されるケースも出てきています。

● 顧客参加型の方法[*6]と受入テスト
ソフトウェア開発において、顧客参画は、UI設計に限りません。システムの期
待する振る舞いを明確にし、確認する作業である受入テストも同様です。

Ward Cunninghamは、受入テスト向けの自動テスティングフレームワークFit[*7]
を作成しています。(彼はWikiの発明者でもあります!)

Fitは、顧客が受入テストの活動に参画しやすいように、それほど学習コストが
いらない表形式でテストケースが読み書きできるようにしています。また、テ
スト実行結果で、システムが期待通りに振る舞っているかが一目でわかるよう
工夫されています。

Rails界隈で一部有名な、テスティングフレームワークであるCucumber[*8]も、
顧客が理解しやすいようにと、シンプルな語彙体系(Given、When、Then、表形
式でExampleを記述)を土台に、自然言語を使ってテストケースを読み・書き・
実行できるようにとデザインされています。

FITやCucumber等の自動テスティングフレームワークを利用しない場合も、これ
らのツールが採用している語彙体系を使って、顧客とシステムの期待する振る
舞いについて「会話」を深めることができれば、ユーザが欲しいソフトウェア
が手に入れられる確率が上がることが期待できます。

● まとめ
エンドユーザが欲しいと思うシステムを作るためには、システムの期待する振
る舞いの明確化と確認作業に顧客が積極的に参画できるように舞台を整えるこ
とが欠かせません。

受入テストで顧客参加の舞台を整える手がかりとして、ワークショップ形式で
の顧客との「会話」に焦点を当てるのであれば、『User Stories Applied』[*9]
『Bridging the Communication Gap』[*10]が参考になります。

自動テストまで範囲を広げるのであれば、FitやCucumberが参考になるでしょう。

アレグザンダーについてもっと詳しく知りたい場合は、『パターン、Wiki、XP
〜時を超えた創造の原則』[*11]が参考になります。

● 今後の連載の展開
今後、顧客との「会話」に焦点を当て、User Stories、BDDの語彙体系、表を使
いExampleを出すアプローチを取り上げます。
その後、自動テスティングフレームワークFit、Cucumberについて取り上げたい
と思います。(IENAGA)

● 備考
[*1] 『パタン・ランゲージ』
      http://www.amazon.co.jp/exec/obidos/ASIN/4306041719/xpjp-22
[*2]  Using Pattern Languages for Object-Oriented Programs
      http://c2.com/doc/oopsla87.html
      http://capsctrl.que.jp/kdmsnr/wiki/transl/?UsingPatternLanguagesForOOP
[*3]  Yahoo! Design Pattern Library
      http://developer.yahoo.com/ypatterns/
[*4] 『Search Patterns』
      http://www.amazon.co.jp/exec/obidos/ASIN/0596802277/xpjp-22
      http://www.flickr.com/photos/morville/collections/72157603785835882/
[*5] 『デザイニング・インターフェース』
      http://www.amazon.co.jp/exec/obidos/ASIN/4873113164/xpjp-22
[*6]  顧客参加の方法
      UI設計でもなく受入テストでもなく、システムの内部の構造と振る舞い
      について顧客参加型の設計方法を模索している人は、次が参考になるか
      もしれません。
     『Domain Driven Desgin』
      http://www.amazon.co.jp/exec/obidos/ASIN/0321125215/xpjp-22
      The DCI Architecture
      http://www.artima.com/articles/dci_vision.html
      http://d.hatena.ne.jp/digitalsoul/20100131/1264925022
[*7]  FIT
      http://fit.c2.com/
[*8]  Cucumber
      http://cukes.info/
[*9] 『User Stories Applied』
      http://www.amazon.co.jp/exec/obidos/ASIN/0321205685/xpjp-22
[*10] Bridging the Communication Gap
      http://www.acceptancetesting.info/the-book/
[*11]『パターン、Wiki、XP〜時を超えた創造の原則』
      http://www.amazon.co.jp/exec/obidos/ASIN/4774138975/xpjp-22

● 過去の連載一覧
1) /ml-arch/magazine/316.html
2) /ml-arch/magazine/321.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人のナガタユウコです。『Ruby逆引きレシピ』プレゼントの
ご応募はいよいよ本日が締切です!ご希望の方はお急ぎくださいね☆そして来
週の編集後記にて当選者の発表を行いますのでお見逃しなく!(ナガタユウコ)

▼応募方法
1)Twitterで @objectclub 宛に、『Ruby逆引きレシピ』を含むつぶやきをする
  必ず『Ruby逆引きレシピ』+なにかひとこと、お願いします☆
  例:「『Ruby逆引きレシピ』欲しい!!!!! @objectclub」
2)http://twitter.com/objectclub で「@××× さん、ご応募受け付けました」
  とつぶやかれたら応募完了(×××はあなたのアカウント、つぶやきがない場
  合は再度応募してみてください)
3)上記のつぶやきの他にも本書についてつぶやくと当選確率が上がるかも?!

*** オブラブスタッフ自己紹介 ***
No.03 わたなべ
( @t_wtnb )
こんにちは、わたなべです。私は主にオブジェクト倶楽部のイベントで受付や
会場設営をやっています。髭を生やした外見とあまり合わない(?)細々とした
仕事をしています。
私がオブジェクト倶楽部と出会ったのは、5年以上前の事になります。その頃の
私は独学でオブジェクト指向やXPを学んだものの、現場で上手く生かせず悩ん
でいました。周囲に相談する相手もおらず、モチベーションを維持するのが困
難な状態でした。そんな中、参加したオブジェクト倶楽部のイベントで沢山の
エネルギーとヒントを貰い、再び頑張ることが出来たのを覚えています。
その後縁あって永和システムマネジメントに転職し、助けられたオブジェクト
倶楽部へ少しでも恩返しが出来ればと、オブジェクト倶楽部のスタッフになり
ました。イベントに参加される皆様に、色々なものを持って帰って頂けるよう
今後も頑張っていきますので、よろしくお願いします。(わたなべ)

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