Date:  Wed, 19 Dec 2007 17:18:56 +0900
Subject:  【オブジェクト倶楽部: 2007-46号】
X-Mail-Count: 00221

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.215 2007/12/19

■ I N D E X
┃
┣【Topics】オブジェクト倶楽部サイト 書籍情報更新
┣【Topics】オブジェクト倶楽部クリスマスイベント2007 いよいよ明後日!
┣【プログラミング】組込みlinuxを使ったはじめての組込み開発 [5](最終回)
┣【PF】がんばれ小さなプラクティス [2]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 オブジェクト倶楽部サイト 書籍情報更新
  〇 〇━━━━━━━━━━━━━ ━━・ 

12月22日に『アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣』
が発売されます。こちらはオブラブスタッフの木下史彦さんと角谷信太郎さんが
監訳しています。来週のメルマガではブックレビューを予定しています。
ぜひ、手にとってじっくり読んでいただきたい1冊です。

●オブジェクト倶楽部 書籍一覧
 http://www.ObjectClub.jp/technicaldoc/bookguide/

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 オブジェクト倶楽部クリスマスイベント2007 いよいよ明後日!
  〇 〇━━━━━━━━━━━━━ ━━・ 

12月21日、明後日金曜日ににオブジェクト倶楽部クリスマスイベント2007を
開催します。当日皆様にお会いできるのを、スタッフ一同楽しみにしています!
参加レポートもメルマガで配信しますので、参加されない方もぜひ読んでみて
くださいね。

●オブジェクト倶楽部クリスマスイベント2007
 http://www.ObjectClub.jp/event/2007christmas/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【プログラミング】組込みlinuxを使ったはじめての組込み開発 [5](最終回)

今回はこれまでに作ったモジュールを組み合わせてアプリに仕立てていきます。

【作成中システムのHW/接続構成】
                 usb                  tcp/ip 
[カードリーダ] ―――― [Armadillo] ――――― [勤怠サーバマシン] 

■サンプルコードについて
今回使用するサンプルコードは以下のURLからダウンロードできます。
 http://www.ObjectClub.jp/ml-arch/magazine/magazine215/cardreader.zip

■カードリーダー
前回までに作ったTCPクライアント送信部分とカードリーダ部分をくっつけます。
送信にはmainの始めの方で張ったコネクションを使いまわします。
これでカードリーダー部は完成です。

    /** サーバのIP */    
    const char* host = "KINTAI.SERVER";
    /** サーバのポート番号 */    
    const int port = 30000;
    /** ソケットのディスクリプタ */    
    int sd = createTCPClient(host, port);
    .
    .
    for(;;) {
        /** 
         * カードの有無をポーリングする 
         */
         f = felica_polling(p, POLLING_ANY, 0, 0);

         if(f){
             /** カードIDmのみ抜き出す */
             cpDumpStr(f->IDm, 8, idm);
             /** LFを末尾にセットする */
             idm[8] = 0x0a;
             /** データを送信する */
             sendMessage(sd, idm);
             printf("Send Idm ..\n");	
         } else {
             printf("Edy Card not found ..\n");	
         }

         free(f);
         sleep(1);		
    }

■勤怠サーバの処理部分
勤怠サーバに置くI/F部分を作成します。「ID、PASSを入力し出社処理を行える
Webアプリ」があることを前提としていますので、IDm受信後にその画面を叩く
I/Fを作成します。
これらはJavaで実装しています。また、画面を叩く部分はJakarta Commons
HttpClientを使用しました。

今回は以下の3つのクラスを作成しました。
 ・ComeWorkServer         カードリーダからの送信を受けるサーバ
 ・ComeWorkReportThread   IDm受信後に処理を行うスレッド
 ・ComeWorkReport         Webアプリを叩いて実際の出社処理を行うクラス

「ComeWorkServerがカードリーダからのIDmの受信待ちを行い、受信後は
ComeWorkReportThreadのリクエストキューにIDmを詰めて出社処理を任せる」と
いったフローになります。
以下は、それぞれのコードを抜粋したものです。

◇ComeWorkServer
 public void doServe() throws IOException {

    /** 処理スレッドの起動 */
    startWorkTheread();
    .
    . (お決まりのソケット処理なので省略)
    .
    while(true) {
        BufferedReader reader = 
         newBufferedReader(newInputStreamReader(socket.getInputStream()));
        String rcvId = reader.readLine();
        /** 
         * 受信したら処理はリクエストキューに詰めてスレッドに任せる.
         * スレッドはキューに詰めた後にenqueueReqメソッドの中でnotifyさ
         * れる.
         */
        workThread.enqueueReq(rcvId);
    }
}

◇ComeWorkReportThread
@Override
public void run() {
    synchronized (this) {
        while(true) {
            try {
                /**
                 * リクエストキューに何も無かったら寝る 
                 * 3sec毎にリクエストキューをチェックしに起きるか、
                 * enqueueReq時のnotifyで起こされる
                 */
                if (!isAvailableRequest()) {
                     wait(3*1000);
                } else {
                     /** 
                      * doWorkの中でキューからIDmを取出して
                      * PassWordを引いて
                      * ComWorkReportのdoWorkを呼出す。
                      */
                     doWork();
                }
            } catch (InterruptedException e) {
            .
            . (例外処理省略)
            .
        }
    }
}

◇ComeWorkReport
public int doWork(String id, String pass) throws HttpException,
                                                   IOException {

    HttpClient client = new HttpClient();

    client.getHostConfiguration().setHost(OA_SITE, OA_PORT, "http");
    client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

    PostMethod loginpost = new PostMethod("/portal/login_form");
        
    /** ユーザ名とパスワードをセットする */
    NameValuePair userid   = new NameValuePair("userId", id);
    NameValuePair password = new NameValuePair("password", pass);
        
    loginpost.setRequestBody( 
        new NameValuePair[] {userid, password});
        
    client.executeMethod(loginpost);
        
    loginpost.releaseConnection();
        
    /** 
     * 現在はstatusCodeを戻すが、本来は
     * statusCodeとレスポンスの内容から正常登録か判断する必要がある。
     */
    return loginpost.getStatusCode();
} 

■Armadilloへのダウンロード
Armadilloにはftpサーバが起動しているので、ftp経由でカードリーダのバイナ
リを転送できます。
受信サーバ起動後にカードリーダを起動するとPaSoRiのLEDがポーリング毎に点
滅します。フェリカカードをかざすとIDmが送信され、出社処理が行われます。
ただ、この手順でダウンロードしたバイナリはArmadilloを再起動すると消えて
しまいますので、実際の使用時にはオンボードFlash上のユーザー領域の更新な
どをする必要があります。
なお、ここで行った手順は以下のリンク先が詳しいのでそちらを参照してくだ
さい。

 ・ftpでファイル転送する
   http://armadillo.atmark-techno.com/howto/ftp
 ・オンボードFlashのユーザランドをカスタマイズする.
  http://armadillo.atmark-techno.com/howto/customize-userland-a

■終わりに
組込みLinuxを使ってフェリカカードを使った出社システムを作ってみました。
OSにLinuxを使用することでその資産を使って簡単にシステムを作ることができ
ました。また、既存システムのI/FはJavaを使って作成しました。組込みにある、
Cだけで職人のように作り込むイメージとはちょっと違いますよね。組込みの分
野ではOSの利用、組込みDBの登場や、単純なOn/Off制御から入力情報に応じたき
め細かい制御・情報の表示など、業務系の技術との連携が多くなってきています。
IT/ETの垣根は徐々に低くなって来ています。

今回でこの連載は終わりですが、一連の記事でIT/ETの垣根の低さ、組込みの楽
しさを少しでも感じ取って頂けたら幸いです。
最後までお付き合い頂きまして有難うございました。

因みにもう少し付き合っても良いよって方は、「組込みZine」の方でリアルタ
イムOSを利用したレゴマインドストームNXTの記事も書いております。是非ご覧
になってください(藤井)
◆組込みZine :  http://kumikomizine.jp/article/detail/7

■URL
 ・Armadillo http://armadillo.atmark-techno.com/ 
 ・PaSoRi http://www.sony.co.jp/Products/felica/pcrw/index.html
 ・felica networks http://www.felicanetworks.co.jp/index.html
 ・Jakarta Commons HttpClient
    http://jakarta.apache.org/httpcomponents/httpclient-3.x/
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0010-4&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0010-4&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0010-4&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【PF】がんばれ小さなプラクティス [2]

こんにちは、オブジェクト倶楽部の水越です。この連載では私の職場の良い習
慣=プラクティスを紹介しています。まあ、『良い』習慣といっても前回のバ
グレゴのように、結局やらなくなっちゃった事もありますので、『良いかもし
れない』習慣、くらいで聞いてくださいね。

★ほぼ○マインドマップ
皆さん『ほぼ日』って知っていますか?そうです、ほぼ日刊イトイ新聞のこと
です。『ほぼ○マインドマップ』はほぼ日からインスパイアされたのですが、
ほぼ日とはまったく関係ないから伏字にしています。勝手に使ってごめんなさ
い。ちなみに、ほぼ日ホワイトボードカレンダー、会社で愛用していますよ。
ほぼ○マインドマップは、毎日プロジェクトにおきたことを記録していって、
後で思い出すという一見まじめなプラクティスですが、とても楽しくてかわい
いヤツです。

★ほぼ○マインドマップの運用
まず、ホワイトボードを用意して、みんながいつも見える位置に置いておきま
す。週のはじめにきれいに消して、誰かが中心にその週をイメージする絵を描
いておきます。そして何か良いことか悪いことがおこった時、中心の絵から線
を延ばして、その出来事を書き込みます。誰でもいいので、何かに気がついた
人が書き込みます。これを一週間続けると、その週の出来事が一枚のマインド
マップになるわけです。たとえば出張帰りの人がお土産を買ってきたら「羽二
重餅おいしい」と書き込まれます。また変なバグに悩まされていたら、そのバ
グから連想するムシ(ハチやカブトムシ)がどこからともなく発生してきます。

★ほぼ○マインドマップの効果
ほぼ○マインドマップを描いていると「そうそう羽二重餅美味しいよね」とか、
「なかなかこのバグ倒せないねぇ」、など、描いているその場でプロジェクト
の仲間と気持ちを共有できます。また、一週間のおしまいにプロジェクトをふ
りかえるときにも、今週はこんなことがあったよねと簡単に思い出すことがで
きます。気が向いたら絵を描いて遊んだり、いやなことがあってもここに何か
描いてすっきりしたり、なかなか素敵なプラクティスじゃないですか。

★ほぼ○マインドマップの衰退
最初は楽しかったほぼ○マインドマップですが、毎日やっているとさすがに飽
きてくるのでしょう。3ヶ月くらいしたらやらなくなってしまいました。参考に
ほぼ○マインドマップをはじめた最初の週と最後の週の画像へのリンクを下に
載せておきます。最初の週はカラフルで華やかですよね。でも最後の週は1色
だし寂しいマインドマップです。このころには、金曜日にその週の分をまとめ
て書くいう意味の無いことも行っていました。その次の週には誰もほぼ○マイ
ンドマップのことに触れることはなく、プラクティスが自然消滅したのです。
さようなら、ほぼ○マインドマップ。

★参考
ほぼ日刊イトイ新聞
http://www.1101.com

TRICHORD blog 先週のふりかえり(10/23-27)
http://trichord.change-vision.com/blog/2006/11/post_10.html
ほぼ○マインドマップをはじめた週。

TRICHORD blog 今週のふりかえり(2007/01/15-19)
http://trichord.change-vision.com/blog/2007/01/2007011519_1.html
ほぼ○マインドマップの最後の週。

★次回予告
次回のプラクティスは『非常階段のぼり』です。お楽しみに。(水越)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M005-1&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M005-1&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M005-1&choice=2

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

今週は「年賀状出しますか?」のホントのところ。
テレビのCMでシーズンを感じます。年賀状の季節ですね。皆さんは年賀状を書
いていますか?最近はメールでご挨拶をいただく方も多いようですが、先日デ
パートで大きな手製の版がど真ん中に押されている年賀状を見たら、こういう
のも味があるねなんて思いました。
さて、読者の皆さんは年賀状を出していますか?どのぐらい出していますか?

  例年出していません。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=0
  だいたい50枚ぐらい。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=1
  およそ100枚ぐらい。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=2
  200枚ぐらいかな。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=3
  300枚はいくね。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=4
  それ以上。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=5
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=181&choice=6
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「仕事関係の1ヶ月あたりの飲食費は?」の結果は公開中。ぜひご覧
下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol180/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.