Date:  Wed, 03 Oct 2007 17:24:04 +0900
Subject:  【オブジェクト倶楽部: 2007-35号】
X-Mail-Count: 00210

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.204 2007/10/03

■ I N D E X
┃
┣【Topics】オブラブ秋イベント開催決定!(10/31:東京)
┣【コラム】ボストンの澄んだ空の下で考えたこと
┣【プログラミング】組込みlinuxを使ったはじめての組込み開発[3]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 オブラブ秋イベント開催決定!(10/31:東京)
  〇 〇━━━━━━━━━━━━━ ━━・ 
お待たせいたしました!学びの秋真っ只中ということで、オブラブの秋イベン
ト開催が決定いたしました。受付は10月中にこのトピックスにてご案内予定で
す。瞬時にお申し込みが完了してしまう可能性がありますので、どうぞお見逃
しなく!

【開催概要】
  開催日時 : 10月31日(水)19:00〜21:00(受付開始  18:30〜)
  場  所 : 港区立港勤労福祉会館(東京・田町)
                http://www.3710pic.com/mkf/web/map.html
  参 加 費 : 無料
  講  師 : 平鍋健児(オブジェクト倶楽部主宰)
  テ ー マ : 「プロジェクトファシリテーション」

●講師よりひとこと
「仕事の楽しさ、喜び、と、プロジェクトの成功をANDで取る」ことを目的とし
ている、プロジェクトファシリテーションを、もう一度みなさんにお話したい
と思います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【コラム】ボストンの澄んだ空の下で考えたこと

●はじめに

こんにちは、オブラブの懸田です。去る2007/09/18-21にアメリカ、ボストン
で開催されたSD Best Practices 2007(SDBP)にて、チェンジビジョンの
TRICHORDという製品を出展してきました。筆者はその説明員としてボストンに
飛びTRICHORDを説明してきました。
今回のメルマガはその時の筆者の2つの気づきをまとめたものです。
チェンジビジョンの展示自体についての詳しいレポートはTRICHORDのblog[*1]
を参照してください。

●アジャイルの浸透を実感

今回のイベントで、筆者はアジャイルソフトウェア開発の浸透広がりを実感し
ました。実感した理由は2つあります。1つはイベント自体から受けた印象です。
SDBP自体はアジャイル開発専門のイベントではなかったのですが、
「People, Project and Team」、「Requirements & Analysis」、
「Process & Method」、「Design & Architecture」といったトラックで、アジャ
イルに関係するセッションが多く開催されていることにまず驚きました。

2つ目は、実際に説明員として説明している時にブースの来訪者から受けた印
象です。TRICHORDという製品の説明をしている時にバーンダウンチャート[*2]
を見て「うん、これ知ってるよ。Scrumのでしょ?」という人が多かったり、
ブースの壁にカードを貼ってタスクかんばんの例を見せると「そうそう、そう
いうのは、いいよね」と大きく頷く人がいたりしました。残念ながら詳しくは
聞いていませんが、アジャイル開発の素養がある人が多い印象を受けました。
SDBPの隣で組込開発のイベントも開催しており、そこからブースに来る人もい
ました。そういった人達にもアジャイルの話をしても特に拒否反応もなく、自
然に受入れられた印象を受けました。

日本発のニコカレの受けがいいのもアジャイルの浸透を意味しているといって
もよいかもしれません。なんと言っても見た瞬間にみんな笑顔になったり、笑
いだしたりするんですから!

トラックの構成を見て気づいたのは、日本では「アジャイルか、そうでないか」
という二者択一的な比較をされてしまいがちですが、SDBPのセッションでは、
アジャイルはプロセス、方法論という視点からブレイクダウンされ、人、設計、
要求といったそれぞれの分野において、その個々の構成要素が広まっているの
ではないかという印象を持ちました。日本においても、プロジェクトファシリ
テーション[*3]は、人、改善といった要素がアジャイルの文脈外で浸透してい
ます。今後日本でも、アメリカと同様な現象が起きるかもしれませんね。

●日本から世界へ

次に筆者が2日という短い時間で、何十人もの参加者に説明して気づいたことは、
これからの日本のエンジニアは、現場で得た気づき、経験、思想、哲学をもっ
ともっと海外に向けて発表していかなければならない、ということです。
この気づきの直接の原因は、実は身近な平鍋さんにあります。

平鍋さんは、先のAgile2007において、「かんばん」というオブラブでもお馴染
なプラクティスを分析し、TRICHORDという製品のベースコンセプトをまとめた
ホワイトペーパーを公開し、海外で話題になりました[*4]。この記事の評判に
なった理由としては、平鍋さんの構成力、英語力に寄る所が多いですが、最も
根源的要因としては「英語で伝えるために公開した」という行為そのものだと
考えます。
今回、このホワイトペーパーもSDBPのブースで配りましたが、皆さん興味深く
読んでくれました。

日本では、どうしてもソフトウェア開発に関する情報は海外(特にアメリカ)出
自のものが多く、例えば海外の良書を翻訳して日本に紹介する、という流れが
一般的になっています。すべてがそうとは言いませんが、言い換えるならば、
「優れたものは海外からやってくる。それをとり入れて日本流にアレンジする」
という認識が広く浸透しているのではないでしょうか。

もちろん海外の良書、知見を日本に紹介することは、依然として大切なことは
間違いありません。しかし、これだけで満足してしまってよいのでしょうか?
筆者は、これからソフトウェア開発についてのアイディアについて、日本人が
世界という舞台を鑑賞するだけでなく、舞台に上って演じる時代が来たのでは
ないかと感じました。そしてそれは、一方的な発信だけではなく、相互対話に
よるフィードバックを前提とするものである必要があります。
平鍋さんが海外の有名エンジニアとホワイトペーパーについて会話しているの
を横で聞いていて、その想いを更に強くしました。
もっと理想を言うと、Agile2007で平鍋さんがセッションを持ったように、日本
人が海外のイベントで自分のセッションを持つような状況を生み出すというこ
とです。

国外に向けて発表する際には、それ相当の英語力が必要になります。ある意味
ここが最大の壁になるでしょう。筆者も英語は得意ではありません。しかし
SDBPで出会ったエンジニア達は、アジア、インド、ヨーロッパ、アメリカと様々
な人種がいるにも関らず、TRICHORDのデモをしている最中ですら、御互いに意
見を言い、議論していました。英語が...と尻込みをして対話に参加できていな
い私のような日本人は、同じ舞台にすら立っていないという疎外感を感じました。
ボストンで重要だと感じたのは対話です。読者の皆さんも「懇親会重要」とい
う発言を聞いたことがあると思います。繰り返しになりますが、直接対話によ
るコミュニケーションなくして、本当の発信は生まれないのではないかと直感
しました。

「世界」と言うとちょっと尻込みをしてしまいますが、筆者は決してそんなこ
とはないと考えます。「内容が海外に出すレベルになんて逹していない」、
「体系化するのは難しい」と言う人もいるかもしれません。まず考えているレ
ベルということは問題にならず、むしろ日本人的な繊細な視点は興味をもって
もらえるんじゃないでしょうか。体系化が苦手であれば、まず経験やそこから
得た気づきを発表すればよいのではないでしょうか。

手段は、最初はblogでも、海外のMLでも、どこかのサイトに投稿するのでも構
わないと思います。このメールマガジンを読んでいるあなたの経験や知見が、
どれだけ世界中の多くの人に知られて、影響を与え、どんなフィードバックが
来るかということを想像してみてください。わくわくしてきませんか?

一番有名なところでは、オープンソースという世界で、Rubyが優れた日本のソ
フトウェアとして広まっています。作者のまつもとゆきひろさんは、以前から
海外への発信を怠っておらず、英語のMLを長年主催して今のブームの下地を作っ
てきました。筆者はソフトウェア開発のプラクティスや方法論という分野につ
いても、Rubyのようなことを実現できたら、と夢を抱きボストンを後にしまし
た。

さて、長くなってしまいましたが、今回のSDBPでの気づきをまとめると以下に
なります。

 * アジャイルはアメリカでは確実に浸透してきていると感じた
 * 海外の良書を翻訳して満足する時代は終わらせたい
 * 積極的に日本人が世界を舞台にして発信・対話する時代にしたい
 * 言語の壁はどうにかして乗り越えたい

筆者の回りには優秀なエンジニアが多くいます。筆者は世界という舞台で、自
身の考えを積極的に発表し、直接対話を含めて世界の業界に影響を与える意志
を持ち実行する日本のエンジニアが増えて欲しいと願います。この記事を書い
てから知ったのですが、先日InfoQの日本語版公開のアナウンス[*5]でも同様の
ことが書かれていました。筆者も勉強がてら英語blogでも立ち上げてみようと
おもいます。(懸田)

[1] : TRICHORDのblog
      http://trichord.change-vision.com/blog/2007/09/sd_best_practices_2007.html
[2] : ある期間の残作業量をプロットするチャート
[3] : http://www.objectclub.jp/community/pf/
[4] : http://blogs.itmedia.co.jp/hiranabe/2007/09/kanban_6bb6.html
[5] : http://www.infoq.com/jp/news/2007/10/japan-open

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【プログラミング】組込みlinuxを使ったはじめての組込み開発[3]

1ヶ月のご無沙汰でした。
僕はランチダイエットに勤しんでました。4Kg落ちました。ウシシ。

さて、前回は開発環境の構築でした。残り3回でアプリを作っていきましょう。

■作成するアプリの概要
社員番号を入力後、「出社」ボタンを押下して出社処理を完了するWebアプリが
既にあるとします。
そこで、EdyカードのIDの読取/送受信アプリを作成し、既存のWebアプリと連携
させてEdyカードをリーダにタッチすることで出社処理を済ませられるようにし
てみましょう。

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

【SW構成】
 1. EdyカードID読取/送信 アプリ(Armadillo上で動作)
    カードリーダからカードIDを読取,tcp/ipで読取ったIDを送信する
 2. ID受信/出勤入力 アプリ(勤怠サーバマシン上で動作)
    tcp/ipで送信されてきたカードIDを受信し,IDから社員番号を引く
    Webアプリに社員番号を送信し,出社処理をさせる

* Armadilloを使用しない場合は通常のLinuxマシンで大丈夫です
* カードリーダには「Pasori」というフェリカカードリーダを利用します

今回は、1のアプリのID送信部分を作って行きます。

■アプリのフォルダ構成
フォルダ構成を下記のようにします。
図中のMakefile及び、subdir.mkは、こちらからダウンロード出来ます。
Armadillo版/Linux版両方置いてありますので参考にしてみてください。
[ダウンロード]
http://www.ObjectClub.jp/ml-arch/magazine/magazine204/Makefile.zip


 \sample  + ・ バイナリが生成される場所
          | ・ Makefileもここに置く
          |
          +─ \src ・ソース格納フォルダ
                   ・subdir.mkもここに置く

■ID送信部分の作成
勤怠サーバに対して接続しに行くので、ID送信部分はクライアントとなります。
(送信に必要な必要最低限のコードです。最終回に正規版のコードを乗せる予定
です。)
srcフォルダにファイル名:TCPClientSocket.cで作成後、sampleフォルダで
make all コマンドを実行します。
組込みと言ってますが、コードを見ると普通のPOSIXのソケットプログラムです
ね。

<----- TCPClientSocket.c ----->
#include <stdlib.h>
#include <unistd.h>
#include <string.h> 
#include <sys/utsname.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>

#define ERR_SOCKET -1
#define ERR_CONNECT -2
 
 /**
 * ホスト名、10進ドット表現文字列からIPアドレスを求めます
 *
 * hostent構造体
 *
 * hostent {
 *     char*   h_name          ホストの公式名 
 *     char**  h_aliases       エイリアスへのポインタのポインタ 
 *     int     h_addrtype      ホストアドレスのタイプ(AF_INET | AF_INET6)
 *     int     h_length        アドレスの大きさ 4 | 6
 *     char**  h_addr_list     IPv4 | v6アドレスへのポインタ配列へのポインタ
 * };
 * 
 * @param host ホスト名
 * @return host byte orderのIPアドレス
 *                            
 */
unsigned long getAddrByName(const char* host)
{
       struct hostent *hp;
       unsigned long a;

       if (NULL != (hp = gethostbyname(host))) {
               memcpy(&a, hp->h_addr, sizeof(a));
               /**
                * ntohlはネットワークのリトルエンディアン
                * ビッグエンディアンのPC毎の不整合を解決します
                */
               return ntohl(a);
       }

       /**
        * inet_addr() は network byte order の 32bitネットワークバイトIPv4
        * アドレスを返します  IPv6に対応させるには修正する必要があります
        */
        a = inet_addr(host);

        return (-1 == (long)a)? 0 : ntohl(a);
}

/**
 * TCPクライアント用のソケットを作ります
 *
 * @param hostName ホスト名
 * @param portNum ホストのポート番号
 * @return 接続済のTCPClientソケットディスクリプション
 */
int createTCPClient(const char* hostName, int portNum)
{
       struct sockaddr_in sa;
       unsigned long addr;
       int sd;

       addr = getAddrByName(hostName);  

       memset(&sa, 0, sizeof(sa));
       sa.sin_family = AF_INET;
       sa.sin_addr.s_addr = htonl(addr);
       sa.sin_port = htons((unsigned short)portNum);

       if ((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
               return ERR_SOCKET;
       }

       if (connect(sd, (struct sockaddr*)&sa, sizeof(sa)) < 0) {
               close(sd);
               return ERR_CONNECT;
       }

       return sd;
}

/**
 * メッセージを送信します
 *
 * @param sd ソケットディスクリプタ
 * @param message 送信メッセージ
 * @return  送信長さ
 */
int sendMessage(int sd, char* message)
{
       return send(sd, (const char*)message, strlen(message), 0);
}

/**
 * main関数
 *
 */
int main(int argc, char** args) 
{
       /** 勤怠マシン, 10000ポートに接続する */
       const char* host = "kintai.no.url";
       int portNum = 10000;

       int sd = createTCPClient(host, portNum);
       if ( sd < 0) {
               return EXIT_FAILURE;
       }

       sendMessage(sd, "todo send card id"); 
       return EXIT_SUCCESS;

}

■終わりに
tcp/ipによるクライアントサイドのソケットプログラムを実装しました。
「通常のLinuxプログラムと変わらないぞ」と思って頂けましたでしょうか?
リアルタイム性をさほど求めない要件などでは、このように組込みLinuxを使う
ことで、未経験の方でも割合容易に取組んで行けるという訳です。
是非トライして頂ければと思います。

■次回
カードID受信部分作成して今回作成したカードIDの送信部分と接続します。
また、カードID読取り部分を作成し、Armadilloに転送・実行してみます。(藤井)

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

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

今週は「パートナーと出会った場所は?」のホントのところ。これだけ忙し
いIT業界の皆さんですが、結婚率や恋人いる率は高いのですね!我オブラブ
スタッフもなかなかですよ!素晴らしい!
そこで、突撃で聞いちゃいます。「出会った場所はどこですか!!」

  職場。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=0
  合コン。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=1
  コミュニティー。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=2
  仕事外の趣味など。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=3
  人の紹介。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=4
  SNSなどのネット上。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=5
  学生のときから。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=6
  これから出会う予定です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=7
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=170&choice=8
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

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

こんにちは、編集人です。今年も秋イベントを開催できることになりました。
去年は「ライトニング・トークス」をやったんですよね。そちらも大盛況でし
た。あれからもう1年も経ったんですねぇ。(しみじみ)今回は改めて「プロジェ
クトファシリテーション」をテーマとしました。日々進化し続けているPFを
この目で確かめなくちゃ!ですね。読者の皆さんと一緒に、学びの秋にしたい
と思います。お楽しみに!

今週の強引な一言
*** 残り物に福がある(ことわざ)***
人が取り残したものには落ちこぼれの福があるという意味。誰もサインアップ
しないタスクがあれば、率先してやりましょう。思わぬ成長や発見が待ってい
るかもしれませんよ。ただし、最後までサインアップしないでよいという意味
ではありませんからね。
出典参考:故事ことわざ辞典 東京堂出版
(上田雅美)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒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.