Date:  Wed, 17 Dec 2008 17:42:12 +0900
Subject:  【オブジェクト倶楽部: 2008-48号】
X-Mail-Count: 00273

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.264 2008/12/17

■ I N D E X
┃
┣【Topics】ソフトウェアテストシンポジウム2009東京 参加者募集
┣【Topics】モデリングコンテスト 応募モデル公開
┣【Topics】「オブラブ冬合宿」詳細発表&申込み開始!
┣【特集】「オブラブ冬合宿」の見所紹介
┣【プログラミング】SproutCoreでカッコイイ
┃                  Webアプリケーションを作りたい [3]
┗【アンケート】気になるシステム業界 ホントのところ

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

『実践ソフトウェアエンジニアリング』の著者ロジャー S. プレスマン氏によ
る基調講演をはじめ、ソフトウェアの品質やテストについてのセッションで構
成する2日間。
LT、TDDライブはオブLOVE事務局長のプロデュースです。
ぜひぜひ、ご参加ください。

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

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 モデリングコンテスト 応募モデル公開
  〇 〇━━━━━━━━━━━━━ ━━・ 

熱いバトルが繰り広げられた、モデリング道場主催「モデリングコンテスト」
の応募モデルが公開となりました。
モデルもさることながら、審査員のコメントも一見の価値あり。モデリングス
キル向上のヒントになるでしょう。

http://ec2-75-101-210-248.compute-1.amazonaws.com:9080/judeshare/
モデルの鑑賞には、ログインが必要です
  メールアドレス:user01@example.com
  パスワード    :user01

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 「オブラブ冬合宿」詳細発表&申込み開始!
  〇 〇━━━━━━━━━━━━━ ━━・ 

オブジェクト倶楽部初となる合宿イベントを開催します!1泊2日の合宿を通し
て、アジャイルを体験してみませんか?オブラブスタッフ畠山によるイベント
見所紹介記事もあわせてお読みください!

● タイトル:オブジェクト倶楽部2009冬合宿 
            〜箱根で湯ったりアジャイル体験〜
● 開催日  :2009年2月20日(金) 〜 21日(土)
● 場所    :箱根高原ホテル (http://www.hakonekogenhotel.jp/)
● 参加費  :13,000円
● イベント詳細およびお申込みはコチラから!
   → http://www.ObjectClub.jp/event/2009wintercamp/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【特集】「オブラブ冬合宿」の見所紹介

こんにちは、畠山です。

来年2月、オブラブ忘年会に続く冬イベントを開催します。
今度のイベントはなんと・・・合宿イベントです!
その名も「オブラブ冬合宿 〜箱根で湯ったりアジャイル体験〜」!!

名前のとおり、合宿のテーマは「アジャイル体験」。一泊二日の合宿の中で思
う存分アジャイルを体験していただきます。

セッションはふたつ。ひとつは『アジャイル開発体験』セッション。もうひと
つは『ゲームでアジャイル体験』セッション。お申込み時にふたつのうちのひ
とつを選んでください。

『アジャイル開発体験』セッションでは、チームを組んでのアプリケーション
開発を通してアジャイルを体験します。以前に開発セッションを行った2008夏
イベントではTDDとペアプログラミングだけでしたが、今回は「計画ゲーム」や
「漸進的な開発」も体験できちゃいます。教科書に載ってないアジャイルを味
わってみませんか?

『ゲームでアジャイル体験』セッションは、カードやサイコロを使ったゲーム
仕掛けのアジャイル体験です。たかがゲームと馬鹿にするなかれ、実践でも使
えるアジャイルのエッセンスを濃厚に味わえますよ。XPユーザ会でご紹介した
「タスクボードシミュレーション」[*1]などを行う予定です。(内容は変更にな
ることがあります。リクエストがありましたらお申込み時のコメントで!)

現役開発者のみならず、最近プログラミングはご無沙汰で開発体験はちょっと、
という方や、直接開発をするわけではないけれど、アジャイル的な仕事の進め
方を知りたい、という方にもおすすめです。

今回オブラブが合宿の開催場所として選んだのは日本屈指の湯治場、箱根。
あなたもオブラブ冬合宿へ参加して、箱根のお湯とアジャイル体験で体と心を
リフレッシュしてみませんか?(畠山)

[*1] プロジェクトゲーム:http://www.ObjectClub.jp/community/projectgames
______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H005-18&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H005-18&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H005-18&choice=2

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

こんにちは、浦嶌です。

先日開催されたオブジェクト倶楽部の忘年会イベントにて、拙作のSproutCore
製LTタイマーを使いました。ソースコードを公開していますので、興味のある
方は是非ご覧ください。
http://d.hatena.ne.jp/ursm/20081207/1228644930

さて、前回は公式ドキュメントのHello Worldチュートリアル[*1]をとおして、
ビューとコンローラ、バインディングについて学びました。一点お詫びなので
すが、本文中のソースコードにいくつか誤植がありました。試してみて動かな
かったという方、申し訳ありません。
オブラブメンバーのkenchanが訂正箇所を書いてくれましたので、ご参照くださ
い。
http://blog.shu-cream.net/2008/12/09/1

それでは、引き続きチュートリアルの4章から見てきましょう。
http://www.sproutcore.com/documentation/hello-world-tutorial-4-observers/
ここではオブジェクトの状態が変更したとき、自動的にメソッドを呼び出す、
オブザーバという機構について紹介されています。

● Step 1. Setting up an Observer
前回作成したappControllerにコードを追加します。ファイルの場所は
clients/hello_world/controllers/app.js
でしたね。

require('core');

HelloWorld.appController = SC.Object.create({
   greeting: "Hello World!",
   toggleGreeting: function() {
     var currentGreeting = this.get('greeting');
     var newGreeting = (currentGreeting === 'Hello World!') ? 'I am on SproutCore!'
                                                            : 'Hello World!';
     this.set('greeting', newGreeting);
   },
   isClockShowing: NO,
   isClockShowingObserver: function() {
     var isClockShowing = this.get('isClockShowing');
     var newGreeting = (isClockShowing) ? 'CLOCK!' : 'Hello World!';
     this.set('greeting', newGreeting);
   }.observes('isClockShowing')
});

isClockShowingというプロパティと、isClockShowingObserverというメソッド
を追加しました。isClockShowingの値がNOという見慣れないものになっていま
すが、これはfalseと同じ意味です。

isClockShowingObserverの後ろにobserversというメソッドの呼び出しがくっつ
いていますね。メソッドのメソッドというのも妙な話ですが、これによって
sClockShowingの値が変化したとき、自動的にisClockShowingObserverが呼ばれ
るようになります。

この節の注釈ではsetとgetについて簡単に説明されています。SproutCoreでは
オブジェクトのプロパティを取得したり、設定したりする場合にgetやsetとい
うメソッドを介して行います。普通だったら直接代入してしまえばよさそうな
ものですが、前回ご紹介したバインディングや、今回のオブザーバを実現する
ためにこのような決まりになっているそうです。ちょっと手間ですね。

● Step 2. Creating the Checkbox
同様に前回作成したビューを書き換えます。対象のファイルは
clients/hello_world/english.lproj/body.rhtml
です。

<div class="sc-welcome">
   <img class="logo" src="<%= static_url('images/sproutcore-logo') %>" />
   <div class="message">
     <%= checkbox_view :clock_checkbox, :label => 'Show Clock',
           :bind => {:value =>
'HelloWorld.appController.isClockShowing'} %>
     <%= label_view :my_label, :tag => 'h1',
           :bind => {:value => 'HelloWorld.appController.greeting'} %>
   </div>
</div>
<% end %>

今まであったbutton_viewをcheckbox_viewに置き換えました。

早速動作を確認してみましょう。sc-serverでサーバを起動し、ブラウザで
http://localhost:4020/hello_worldを表示します。チェックボックスをオンに
してみると、ラベルの中身が"CLOCK!"に変わりました。ちゃんと動いているよ
うですね。

● Step 3. Add the Clock
今のコードはClockと言っているくせに固定の文字列を表示しているだけです。
時刻を表示するようにしましょう。

appControllerを以下のように書き換えます。toggleGreetingメソッドは、もう
使っていないので消してしまいました。

require('core');

HelloWorld.appController = SC.Object.create({
   greeting: "Hello World!",
   isClockShowing: false,
   isClockShowingObserver: function() {
     var isClockShowing = this.get('isClockShowing');
     if (!this._timer) {
       this._timer = SC.Timer.schedule({
         target: this, action: 'tick', repeats: YES, interval: 1000
       });
     }
     this._timer.set('isPaused', !isClockShowing);
     var newGreeting = (isClockShowing) ? this.now() : 'Hello World!';
     this.set('greeting', newGreeting);
   }.observes('isClockShowing'),
   tick: function() {
     this.set('greeting', this.now());
   },
   now: function() {
     return new Date().format('hh:mm:ss');
   }
});

tickとnowというメソッドを追加し、isClockShowingObserverがそれらを使うよ
う書き換えました。詳しく見ていきましょう。

nowは簡単ですね。現在時刻の文字列表現を返しているだけです。tickは
appControllerのgreetingプロパティにnowが返す値をセットするメソッドです。

isClockShowingObserverはまず、this._timerが初期化されていない場合には
SC.Timerオブジェクトを生成して代入します。SC.Timerは、指定した間隔で、
メソッドを呼び出すオブジェクトです。この場合、間隔は1000ミリ秒(=1秒)、
呼び出すメソッドはtickです。

ここでthis._timerへの代入にsetメソッドを使っていないことに気が付かれた
でしょうか。このプロパティはコントローラが内部的に利用するものなので、
外部から直接参照されることはありません。だから直接代入してしまっても問
題ないのですね。

次に、SC.TimerオブジェクトのisPausedプロパティにisClockShowingの値を反
転したものをセットします。isClockShowingはビューのcheckbox_viewにバイン
ドされていますので、チェックボックスをオンにするとisPausedがNOになると
いう仕組みです。

では、動作を確認してみましょう。ブラウザをリロードしてチェックボックス
をオンにしてみると、現在時刻が表示されて毎秒更新されていきます。
JavaScriptプログラミングに付き物の煩雑なDOM操作なしにここまでできるとい
うのはなかなか凄いですね。

● まとめ
今回はチュートリアルの第4章を通してオブザーバについて学びました。次回は
そろそろ実際に動作するアプリケーションを作っていきたいと思います。
(id:ursm)

[*1] http://www.sproutcore.com/documentation/hello-world-tutorial/
______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0015-02&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0015-02&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0015-02&choice=2

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

今週は「風邪の予防に有効なのは?」のホントのところ。
クリスマスに忘年会に仕事納めに・・・と大忙しの12月。風邪なんてひいてる
場合じゃないですよね。予防をしっかりすればかかる確率がグッと抑えられる
ので、複数の予防策を取られている方も多いのではないでしょうか。みなさま
が取られている/一番有効だと思われる風邪予防策を教えてください♪

  基本は手洗い・うがいでしょう!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=229&choice=0
  防寒をしっかり。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=229&choice=1
  睡眠をたくさんとっています。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=229&choice=2
  加湿器を使っています。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=229&choice=3
  サプリ・漢方などをとっています。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=229&choice=4
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=229&choice=5
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「ボーナスは使う?貯金する?」の結果は公開中。ぜひご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol228/PlonePopoll_results2

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

こんにちは、編集人のナガタユウコです。気づけば仕事納めまであと10日ほど
なんですね。それまでに片付けなければならない仕事が山積みで、ちょっと泣
きそうです・・・。でもそれが終われば年末年始のお休みが待っています!今
年も寝正月になりそうですが、実家に帰省して家族と会うのが楽しみです☆
(と、このメルマガを読んでいる両親に向けていい娘アピール!)

今週の強引な一言
*** 前車の覆るは後車の戒め(ことわざ) ***
前人の失敗は後人の戒めになること。自分が失敗をしてしまったとしても、な
ぜ失敗してしまったのかの原因を周囲に報告したりドキュメントとして残たり
することで、同じような失敗を他の人が繰り返すのを防ぐことができます。自
分個人の失敗だと嘆くのではなく、チームにとってはプラスになると前向きに
とらえ、情報を共有していきましょう。
出典参考:故事ことわざ辞典 東京堂出版
(ナガタユウコ)

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