Date:  Wed, 19 Mar 2008 17:20:50 +0900
Subject:  【オブジェクト倶楽部: 2008-11号】
X-Mail-Count: 00233

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.229 2008/03/19

■ I N D E X
┃
┣【Topics】HAPPYMANこと岡島幸男の最新刊発売のお知らせ
┣【コラム】僕の営業日記 ?「ふりかえり」を始めてみて−
┗【プログラミング】気軽に画像編集 〜 いまそこにあるPython [5]

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 HAPPYMANこと岡島幸男の最新刊発売のお知らせ
   『受託開発の極意 ―― 変化はあなたから始まる。現場から学ぶ実践手法』
  〇 〇━━━━━━━━━━━━━ ━━・ 

オブラブスタッフとしてもダントツに存在力のある、現場リーダー岡島幸男の
最新刊が発売になります。

発売日  : 2008年4月8日
タイトル : 受託開発の極意 ―― 変化はあなたから始まる。
           現場から学ぶ実践手法 (WEB+DB PRESS plusシリーズ)
価  格 : 1480円+税
出  版 : 技術評論社

前作の『プロジェクトを成功させる 現場リーダーの「技術」』から2年。
どうぞお楽しみに!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【コラム】僕の営業日記 「ふりかえり」を始めてみて

こんにちは。Hiroshiです。いつもは、ビジネスワードを連載しているのです
が、趣を変えて、僕が営業をしている中でいろいろ体感したことを皆様と共有
できればと思っています。それでは、、、

オブジェクト倶楽部では、「ふりかえり」[*1]というものを、ご紹介させて頂
いています。しかし、実際の現場では、「いいのは分かるけどさー」、とか
「どうやって周りを巻き込んで始めていいか分からないし」、という声をよく
耳にします。そんな人のために、年明け位から「ふりかえり」を始めたプロジェ
クトを、脇からほぼ毎週見ていた営業の立場からどうだったか、という感想を
紹介できればと考えてます。

まず、簡単にプロジェクト紹介です。
・人数は約10名
・1月頃は、顧客との仕様の詰め。2月頃から実装、テスト。
  今は結合テストを実施中
・若いメンバーが中心。
・これまで一緒に仕事をしたことがない10名が集まっている
・ふりかえりという単語も始めて聞き、最初は懐疑的な雰囲気も・・・

さー、最初のふりかえりがスタートしました。どうなるか、盛り上がるのか不
安な気持ちでいっぱいでしたが、そんな気持ちは始まって10分で吹き飛んでし
まいました。「仕様の詰めを効率的にするには」というテーマでしたが、みん
な意見をいう機会を待っていたかのようです。
次々と、Keepを共有して、Problemが出て、Tryに変わりという感じです。
あっ、という間の1時間半でした。その後、毎週「ふりかえり」を実施しました
が、山あり谷ありの3ヶ月間でした。
その間に、現場の活性化に関するセミナーを実施しましたが、メンバー全員
「ふりかえり」の意味・活用方法を自然と理解し、特にファシリテーター役が
いなくても、メンバーが適宜にファシリテートしだす(いい意味で)くらいとな
りました。脇から見る最後の日には、「ふりかえりのふりかえり」を実施し、
メンバーの感想として主なものをご紹介します。

【Keep】
 ・問題、やるべきことが共有できた
 ・チームがまとまった
【Problem】
 ・時間が長くて疲れる
 ・テーマ選びに時間がかかる
 ・金曜日に実施すると月曜にTryを忘れてしまう
【Try】
 ・ふりかえりの時間を短く頻繁に、もしくは、時間を厳守
 ・ふりかえりの曜日を変える
 ・ふりかえりの形式、場所を変える

通して見ていて思ったことは、
 ・やってみることが重要
 ・メンバーは課題を抱えていることが多く、いえる場を作ると自然と話だす
 ・いつもは、黙っている人がいい意見を出すことが多い
 ・若い人は結構ノッてくる、ベテランもそれにつられてノッてくる

「ふりかえり」をやってみたい人への勇気付けになれば、幸いです。(Hiroshi)

[1] : オブジェクト倶楽部から「ふりかえりガイド」がダウンロードできます
      http://www.ObjectClub.jp/community/pf/#material
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H006-0&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H006-0&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H006-0&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】気軽に画像編集 〜 いまそこにあるPython [5]

こんにちは、オブジェクト倶楽部のPython相談窓口担当、やっとむです。
いまそこにある日常のPythonを紹介するこの連載、今回は、Python reticulatus
(アミメニシキヘビ)のワンダちゃん(♂・3歳)のお悩みを聞いてみましょう!

ワンダ「あっ、あのですね、最近ちょっと、写真に凝っていてですね、それで
        ホラ、最近のデジカメってぇ、普通に撮っても画素数が多いじゃない
        ですか。まとめてリサイズできたりなんかしたらなー、なんてあの、」

なるほど!そういうツールはいくらでもあるので、どうぞ窓の杜でもベクター
でも行ってください!次の方どうぞ!あ、あなたはもういいよ。次どうぞ!

というのが、まあオトナの正しい対応というものですが、だけどなぜか画像編
集ツールが手元にない、そんな寂しい夜も大人にはあるものです。そんなとき、
Pythonistaが取るべき正しい道はもちろん、ツールを自分で作ることですよね!

■PIL - Python Imaging Library [*1]

Pythonで画像を扱う方法は、いろいろとありそうですが、けっこうメジャーで
至極簡単に使えるのが、Python Imaging Library、略してPILです[*1]。

・各種画像フォーマットに対応
・表示機能もある(TkまたはWindows)
・各種フィルタ、画像操作(回転、スケール、アフィン変換)

インストールは、easy_install で一発です。

  >easy_install pil

これで入らない場合は、ソースをダウンロード[*2]して、

  % python setup.py install

でインストールしてください。

インストールしたら、インタープリタを起動して以下のように実行してみてく
ださい。適当な画像ファイルを用意してくださいね。

 >>> import Image
 >>> img = Image.open('画像ファイル名')
 >>> img.show()

指定した画像が表示されましたか?(GUI環境でないと無理ですが)。show()は
デバッグなど開発時のためのメソッドで、外部ツール(環境に依存)を使って画
像を表示してくれます。画像についての情報も取れます。

 >>> img.format
 'JPEG'
 >>> img.filename
 'FOO.JPG'
 >>> img.size
 (1280, 960)

「別の画像を(500,500)の位置にハメ込んで、さらに60度回転する」なんての
もできちゃいます[*3]。

 >>> img2 = Image.open('別の画像ファイル名')
 >>> img.paste(img2, (500, 500))
 >>> img = img.rotate(60)
 >>> img.show()

保存はsave()です。

 >>> img.save('foo.png')

拡張子の指定を見て、適当な画像フォーマットに変換して保存してくれます。
ね、なんかとっても簡単でしょ?

■バッチ処理でばっちり - 画像の一括変換

さて、PILを利用して、指定したディレクトリにあるすべての画像ファイル
(サブディレクトリも含む)のサイズを変換してみましょう。osモジュールの
walk()メソッドを使うと、ディレクトリを再帰的に走査する処理が簡単に書
けます。

 >>> import Image
 >>> import os
 >>> for dirpath, dirnames, filenames in os.walk('.'):
 ...     for f in filter(lambda f: f.endswith('JPG'), filenames):
 ...         img = Image.open(dirpath + '/' + f)
 ...         img = img.resize((1024, 768))
 ...         img.save(dirpath + '/' + f)
 ...

os.walk()は、「(ディレクトリ名, 含まれるディレクトリ名のリスト, 含まれ
るファイル名のリスト)」というタプルを、指定したディレクトリ以下すべて
のサブディレクトリについて返してくれる関数です。詳しくはPythonのドキュ
メント[*4]を見てね。

内側のforでは、拡張子JPGのファイルについて、画像を1024×768にリサイズ
して保存しています。画質を気にするなら、アンチエイリアシングなどのフィ
ルタも用意されています[*5]。

拡張子が固定(大文字のJPGのみ)とか、小さいファイルは拡大しちゃうとか、
縦横の比率が歪む場合があるとか、このままでは汎用的には使えないですね。
しかし、やることが具体的にわかってるなら、こんな安直なスクリプトでも十
分だったりするわけです。巧遅は拙速にしかず、千里の道も一歩より。

■まとめ

今回は簡単なイメージ処理をPythonで書けるライブラリを紹介しました。この
程度の作業、どんな方法でも実現できますが、そこをPythonでやっちゃうのが
プログラマの性、Pythonistaのコダワリ、暇つ(ryってもんじゃないでしょうか。
いかがでしょう、いまそこにあるコマゴマしたタスク、Pythonでラクラク片付
けちゃいません?(やっとむ)

[1] : http://www.pythonware.com/products/pil/
[2] : http://www.pythonware.com/products/pil/index.htm#pil116
[3] : rotate()は回転結果のオブジェクトを返すのに、paste()は自己破壊的に
       動作します。このへんはちょっと、スジが悪く感じます。
[4] : http://www.python.jp/doc/2.4/lib/os-file-dir.html#l2h-1608
[5] : http://www.pythonware.com/library/pil/handbook/image.htm#Image.resize
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0011-4&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0011-4&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0011-4&choice=2

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

今週は「ITエンジニアの春といえばなに?」のホントのところ。先週のメルマ
ガにてお願いした「ワークショップ」に関するアンケートでは、多くの皆さま
にご協力頂き、 ありがとうございました。夏のイベントにおいて、大いに参考
にさせていただきたいと思います。今週は「ITエンジニアの春といえばなに?」
をみなさんに聞いてみたいとおもいます。さて、ITエンジニアの春といえば?

  新しいプロジェクトが始まるぞ!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=0
  新入社員が入ってくるぞ!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=1
  本番やリリースというプロジェクト上のイベントがあるぞ!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=2
  情報処理試験などの資格試験やその準備だぁ!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=3
  お客さんの異動。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=4
  お花見や歓送迎会でアルコール漬け?
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=5
  特には無かったりして。。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=6
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=192&choice=7
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

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

こんにちは、編集人です。先日参加したあるセミナーで、「あなたの理想の
チームや組織とは?」について、多くの人に短い時間の中で伝え合うという、
簡単なブレイキングワークを体験しました。もちろん自分の求めるチームにつ
いてを短い言葉で伝えるのも大切だと感じましたが、たくさんの人の理想の
チームについて聞くことができたのも収穫でした。理想のチームとは?の問い
の中には、その人の人柄や価値観などが見えてきます。そういうことが解って
くると、その人との距離がまたちょっと短くなるようなそんな体験でした。
さて、皆さんにとっての「理想のチーム」とは?職場などでもやってみてくだ
さいね。お勧めです!

今週の強引な一言 
*** 碁で負けたら将棋で勝て(ことわざ)***
一方で負けたら、そのことにくよくよせず別のことで取り返せという意味。
Rubyで負けたらScala!そういうこと?いや、勝ち負けじゃないでしょ!
(上田雅美)

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