Date:  Wed, 16 Dec 2009 18:54:50 +0900
Subject:  【オブジェクト倶楽部: 2009-43号】
X-Mail-Count: 00318

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.307 2009/12/16

■ I N D E X
┃
┣【Topics】「オブラブ2009忘年会」はいよいよ今週金曜日!
┣【Topics】「アレグザンダー祭り」お申込みは12月25日まで!
┣【Topics】ソフトウェアテストシンポジウム2010東京 参加者募集
┣【プログラミング】SproutCoreでカッコイイ
┃                  Webアプリケーションを作りたい [11]
┣【PF】現場リーダーの心得 [22]
┗【アンケート】気になるシステム業界 ホントのところ

┏━<Developers Summit 2010>━━━━━━━━━━━━━━━━━━━━┓
┃   技術者コミュニティとの連携から生まれた総合ITコンファレンス      ┃
┃   2010年2月18日(木)・19日(金) 会場:目黒雅叙園              ┃
┃   主催:株式会社翔泳社       参加料:無料(事前登録制)     ┃
┗━◆最新情報はコチラから◆ ⇒ http://codezine.jp/devsumi/2010     ━┛

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 「オブラブ2009忘年会」はいよいよ今週金曜日!
  〇 〇━━━━━━━━━━━━━ ━━・ 

「オブラブ2009忘年会」はいよいよ今週金曜日開催です!お申込みいただいた
方へ入場チケットをお送りしましたので、当日はお忘れなくお持ちください。
みなさまにお会いできますことを、スタッフ一同楽しみにしています!

●オブジェクト倶楽部2009忘年会
  日時:2009年12月18日(金) 19:30開始
  場所:ダーツバーBENOA(ベノア)上野店
  詳細はコチラから!
  → /event/2009winter/

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 「アレグザンダー祭り」お申込みは12月25日まで!
  〇 〇━━━━━━━━━━━━━ ━━・ 

「アレグザンダー祭り」のお申込みは12月25日までとなります。ライトニング
トークスのご応募も同日締切となりますので、イベントにお申込みでない方、
ライトニングトークスへご応募されてない方はお急ぎください!

●オブジェクト倶楽部2010初春アレグザンダー祭り
  日時:2010年1月15日(金) 10:00開始
  場所:国立オリンピック記念青少年総合センター(代々木)
  詳細およびお申込みはコチラから!
  → /event/2010alexander/

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 ソフトウェアテストシンポジウム2010東京 参加者募集
  〇 〇━━━━━━━━━━━━━ ━━・ 

『Manage It! 現場開発者のための達人式プロジェクトマネジメント』の著者
ジョハンナ ロスマン氏による基調講演をはじめ、ソフトウェアの品質やテスト
についてのセッションで構成する2日間。
ライトニングトークスもあります。
ぜひぜひ、ご参加ください。

日  時:2009年1月28日(木)〜29日(金)
場  所:目黒雅叙園 (東京・目黒)
お申込み:http://jasst.jp/
LT問合せ:lt10tokyo@gmail.com

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┣【プログラミング】SproutCoreでカッコイイ
┗                  Webアプリケーションを作りたい [11]

こんにちは、ursmです。

前回はデータを永続化するための簡単なREST APIサーバを作成しました。今回
はこのサーバとアプリケーションを組み合わせます。

SproutCoreのモデルレイヤとREST APIを繋ぐDataSourceを作成します。

$ sc-gen data-source Rist.BacklogsDataSource
 ~ Created file at data_sources/backlogs.js

生成された雛形に以下のメソッドを定義します。

-- apps/rist/data_sources/backlogs.js --
Rist.BacklogsDataSource = SC.DataSource.extend({
  // すべての backlog を取得する
  fetch: function(store, query) {
    SC.Request.getUrl('/backlogs').json().notify(this, function(res) {
      store.loadRecords(Rist.Backlog, res.get('body'));
      store.dataSourceDidFetchQuery(query);
    }).send();

    return YES;
  },
  // backlog を作成する
  createRecord: function(store, storeKey) {
    SC.Request.postUrl('/backlogs').json().notify(this, function(res) {
      store.dataSourceDidComplete(storeKey, null, res.header('Location'));
    }).send(store.readDataHash(storeKey));

    return YES;
  },
  // backlog を更新する
  updateRecord: function(store, storeKey) {
    SC.Request.putUrl('/backlogs/' +
store.idFor(storeKey)).json().notify(this, function(res) {
      store.dataSourceDidComplete(storeKey);
    }).send(store.readDataHash(storeKey));

    return YES;
  },
  // backlog を削除する
  destroyRecord: function(store, storeKey) {
    SC.Request.deleteUrl('/backlogs/' +
store.idFor(storeKey)).json().notify(this, function(res) {
      store.dataSourceDidDestroy(storeKey);
    }).send();

    return YES;
  }
});
----

4つのメソッドを定義しました。それぞれ以下の操作に対応しています。

fetch         => GET /samples
createRecord  => POST /samples
updateRecord  => PUT /samples/1
destroyRecord => DELETE /samples/1

上記のメソッドはリクエストパラメータにもJSONを使うので、サーバ側もJSON
で受け取れるよう改造します。パラメータを使うのはPOSTとPUTですね。

-- backlogs_store.rb --
...
post '/backlogs' do
  b = Backlog.new(JSON.parse(request.body.read)['title'])
  backlogs[b.id] = b

  status 204
  response['Location'] = "/backlogs/#{b.id}"
end

put '/backlogs/:id' do |id|
  not_found unless b = backlogs[id]

  b.title = JSON.parse(request.body.read)['title']

  content_type 'application/json'
  b.to_json
end
...
----

モデルのバックエンドを、作成したDataSourceに差し替えます。今はフィクス
チャになっている箇所ですね。

-- apps/rist/core.js --
Rist = SC.Object.create({
  NAMESPACE: 'Rist',
  VERSION: '0.1.0',
  store: SC.Store.create({
    commitRecordsAutomatically: YES
  }).from('Rist.BacklogsDataSource')
});
----

RistとサーバはAjaxで通信するため、それぞれ別ポートで起動するとクロスド
メイン制限に引っかかってしまいます。SproutCoreの開発用サーバにはプロキ
シ機能がありますので、今回はこれを使います。

-- Buildfile --
config :all, :required => :sproutcore
proxy '/backlogs', :to => 'localhost:4567'
----

これでlocalhost:4020/backlogsへのアクセスがlocalhost:4567/backlogsへ転
送されるようになります。

さて、設定は以上で終了です。動作を試してみましょう。

$ sc-server
$ ruby backlogs_store.rb

いつものようにlocalhost:4020/ristにアクセスすると・・・

127.0.0.1 - - [16/Dec/2009 06:42:15] "GET /backlogs HTTP/1.1" 200 2 0.0021

一覧を取得するためREST APIサーバにアクセスが来ていますね。
backlogの作成と編集も試してみます。

127.0.0.1 - - [16/Dec/2009 06:40:21] "POST /backlogs HTTP/1.1" 204 - 0.0011
127.0.0.1 - - [16/Dec/2009 06:40:35] "PUT /backlogs/70034765764640
HTTP/1.1" 200 39 0.0015

動いているようです。ページをリロードしてみても、編集内容がちゃんと保持
されています。

● まとめ
SproutCoreはデータレイヤを抽象化することで、アプリケーション側をほとん
ど変更することなくバックエンドを切り替えられるようになっています。素晴
らしいですね。(id:ursm)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
/community/object_ml/estimate?vol=E0015-10&choice=0
普通:
/community/object_ml/estimate?vol=E0015-10&choice=1
イマイチ:
/community/object_ml/estimate?vol=E0015-10&choice=2

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

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

早いものでもう年の瀬ですね。
「現場リーダーの心得」は、今回が2009年最後の掲載となります。
本年もご愛読ありがとうございました。

さて、先日久しぶりに現場の作業に携わりました。中規模のシステム開発案件
での分析・設計作業で、いわゆる上流工程です。このプロジェクトではRDBの経
験者がおらず、データベースの物理モデルを導く作業が難航していました。そ
こを乗り切り、プロジェクトを軌道に乗せるのが一番の目的です。

いわゆる伝家の宝刀を抜いたわけですが、単に抜くだけではよいリーダーとは
言えません。今目の前のプロジェクトや作業が無事乗り切れてもても、次のプ
ロジェクトや作業で同じ状況が発生しては意味がありません。そうならないよ
う、人を育てるのがよいリーダーです。
今回の記事では、最近の私の経験を通じて得た、「現場で伝家の宝刀を見せな
がら人を育てる4つのコツ」をご紹介することにします。

1.魚釣りの仕方を教える
魚を与えるのではなく魚の釣り方を教える。これは有名な格言ですが、まずは
この姿勢を貫くのが基本となります。

人を育て組織を育てることは、ある意味では知識を伝え続けることです。しか
し、単に知識の伝言ゲームを続けても、それらは程なく劣化します。そうでは
なくて、うまくいくやり方を伝え続けなくてはいけません。いつぞやの優秀な
先輩の書いた設計者ソースコードを代々コピペし続けてもその質はだんだん悪
くなります。先輩が設計したときの判断基準や手法などを正しく伝えるほうが
格段に効率的です。

あなたがプロジェクトに乗り込み突貫工事でモデルを書きあげ「これを使いな
さい」と渡してしまえば、それはそれでプロジェクトの進捗は進むでしょう。
しかしその場合、そのモデルに含まれるかもしれないちょっとした誤りやあな
たの思い違いからくる非効率さが、そのままメンバーに伝わる可能性がありま
す。

一方、やり方を伝える場合、目の前でそれを説明しながらやってみせることで、
より質の高い知識が伝わるでしょう。例えば、UMLを使い概念モデルを書き・議
論し・整理する過程で教え手の勘違いで書き違い(依存関係を逆にしちゃった!)
をしたとしても、その場で指摘し修正すれば済むことです。後からモデルをみ
て「なんでだろう」と思い悩むこともありません。折り紙の「作品そのもの」
と「おり方の手順」、どちらが正確に作品を伝えられるか想像してみてくださ
い。

蛇足ながら、ここまでは野中郁次郎先生の知識創造SECIモデルでいうところの、

ゞζ渦(Socialization)
表出化(Externalization)

に相当するかと思います。さらに、これらのやり方がマニュアル化(形式化)さ
れ組織に蓄積され、O結化(Combination化)し、それを他の人が活用し広まる
ことでて睫眠(Internalization化)することで、知識が組織に広くいきわたる
ことになります。

ちょっと脱線しました。

もちろんやり方を教えるには時間がかかります。場合によっては一日の大半を
メンバーと過ごすことになりますが、このことは、副次的にあなたとチームメ
ンバーのコミュニケーション深化という効果をもたらすことになります。

2.寛容と徹底の姿勢を見せる
特にリーダーや上司といった立場からプロジェクトを支援する場合は「寛容」
と「徹底」の姿勢を両方見せます。これは足して二で割ったようなものではな
く、両方ともきっちり見せるという意味で中庸さが必要です。

寛容とは「知らないこと」「未経験なこと」を責めないことであり、過去はと
もかく今からどうするかが大事だというメッセージを言い続けることです。
「こんなことも知らないのか」などといった小言は不要です。

ただし、一旦一緒に作業をスタートした以上、そこで使う「やり方」は徹底的
に教え込みます。もちろん、やり方(手法)には適材適所があります。UMLを覚え
てもモデリングが得手になるかはわかりません。しかし、いったん始めたなら、
中途半端ではなく徹底的に手法を適用し、メンバーに身につけさせましょう。
まんべんなく生半可な知識を持っていても役には立ちません。多少偏っても深
い知識を身につけさせるべきです。

いつまでたっても伝家の宝刀を抜いていてはメンバーの成長が遅れます。背中
を見せることでやり方を徹底的に教え、次の機会からは独り立ちしてもらうの
です。

と、このあたりで紙面が尽きてしまいました。
残り2つのコツは、次回の掲載までお待ちください。では、よいお年を!(岡島)

● 『ソフトウェア開発を成功させるチームビルディング』
  現場リーダーの仕事術をチームビルディングの観点から説明しています。
  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/
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
/community/object_ml/estimate?vol=M004-21&choice=0
普通:
/community/object_ml/estimate?vol=M004-21&choice=1
イマイチ:
/community/object_ml/estimate?vol=M004-21&choice=2

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

今週は「読んでみたい新連載は?」のホントのところ。
突然ですが、「気になるシステム業界 ホントのところ」は今回をもって終了と
なります。長い間ご愛読&ご回答いただき、本当にありがとうございました!
最終回となる今回は、気になるシステム業界 ホントのところに代わる新連載は
どんなものがいいか、みなさまにアンケート。ぜひご回答ください!

  オブラブスタッフ紹介
     /special/kininaru/vote?vol=273&choice=0
  技術書紹介
     /special/kininaru/vote?vol=273&choice=1
  お役立ちグッズ紹介
     /special/kininaru/vote?vol=273&choice=2
  お悩み相談室
     /special/kininaru/vote?vol=273&choice=3
  特選上野情報
     /special/kininaru/vote?vol=273&choice=4
  それは秘密です。
     /special/kininaru/vote?vol=273&choice=5
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「お風呂で何してますか?」の結果は公開中。ぜひご覧下さい。
⇒/special/kininaru/vol272/PlonePopoll_results2

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

こんにちは、編集人のナガタユウコです。2009年最後のメルマガをお届けしま
す。今年はみなさまにとってどんな一年でしたでしょうか?忘年会で一年を忘
れてしまう前に、しっかりとふりかえりを行いたいものですね。
さて、本号をもちまして、「気になるシステム業界 ホントのところ」「今週の
強引な一言」は最終回となります。長い間のご愛読、本当にありがとうござい
ました。新コーナーは何にしようか検討中ですので、最後のアンケートにて、
みなさまのご意見をお聞かせください!

オブジェクト倶楽部カレンダーの2010年1月分の電子データを公開します。
1月のカレンダーは「オブジェクト倶楽部は人」です。新年の始まりにふさわし
く、オブジェクト倶楽部とは一体何なのかを説明してみました。また、2010年
のカレンダーには、オブラブスタッフの誕生日にそのスタッフのTwitterアカウ
ントが入っています。気になるスタッフの誕生日をチェックしてみるのも面白
いかも!
● カレンダー電子データ
/special/#calendar

今週の強引な一言
*** 終りが大事(ことわざ) ***
物事はしまいぎわを慎重にやらねば失敗すること。
継続期間が長ければ長いほど、最後が大切になってきます。それまでの苦労や
努力をムダにしないためにも、最後はきっちりと締めくくり、有終の美を飾る
ようにしたいものですね。
「強引な一言」は今回が最終回となります。毎週ことわざ辞典とにらめっこし
ながら続けてきたこのコーナーも、終わりだと思うと寂しかったり・・・。最
終回にふさわしいことわざを選んでみましたがいかがでしたでしょうか?長い
間おつきあいいただきありがとうございました!
出典参考:故事ことわざ辞典 東京堂出版
(ナガタユウコ)

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