Date:  Wed, 03 Sep 2008 17:25:17 +0900
Subject:  【オブジェクト倶楽部: 2008-33号】
X-Mail-Count: 00258

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

■ I N D E X
┃
┣【プログラミング】ゆるーいHaskell [23](最終回)
┗【PF】現場リーダーの心得 [12]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】ゆるーいHaskell [23](最終回)

西川です。今年もオリンピックが終ってしまいました。個人的には今年のオリ
ンピックはそれほど盛り上がらないかと思っていたのですが、始まったらなん
だかんだとついTVの前で応援していることが多かった気がします。

さて、今回はHaskellのトリビアルなモナドを紹介したいと思います。実は
Haskellでは普段使っている普通の関数もモナドとして定義されています。関数
もモナドと聞くとまた何やら難しそうな気がしますが、そんな事はありません。
ghciを起動して定義を確認してみましょう。
$ ghci
> :m + Control.Monad.Instances
> :i (->)
data (->) a b   -- Defined in GHC.Prim
instance Monad ((->) r) -- Defined in Control.Monad.Instances
instance Functor ((->) r) -- Defined in Control.Monad.Instances

まずControl.Monad.Instancesモジュールをロードしました。Control.Monad.
Instancesモジュールをロードしないと関数をモナドとして利用することは出
来ません。その次の行では関数を構成するdata型である(->)についての情報を
表示しています。(->)がMonadのinstanceであることが確認できると思います。
ちょっと脱線しますが、(->)はデータ型なのでIntに1を加えるadd1関数はこの
ように型宣言することもできます。
add1 :: (->) Int Int
このように定義しても"add1 :: Int -> Int"と同じ意味になります。
Monadのinstance定義を確認してみましょう。
----- base/Control/Monad/Instances.hsより -----
instance Monad ((->) r) where
  return = const
  f >>= k = \ r -> k (f r) r
----- ここまで -----

(->)のinstance宣言はこのようになっています。余談ですが形は若干異なりま
すがSコンビネータ[*1]とよく似ています。ちょっと使ってみましょう。
> (return 3 >>= (+)) 1
4
> ((+) 3 >>= (*)) 2
10
ふーん、という感じですね。これだ!という使い方が思い浮かばないのですが、
だからこそトリビアルと言えるのではないでしょうか。

さて長々と続いてきたこの連載ですが、今回が最終回となりました。連載の間
隔が空いていたので、前回何を書いていたのか思い出せず書くのがキツイ時が
ありましたが、読んでいる方はもっとキツかったのではないかと思います。本
当にお付き合いいただきありがとうございました。(西川)

[*1] SコンビネータとはHaskellで説明すると"s f g x = f x (g x)"の形をし
     た関数sのことです。コンビネータ理論という形で紹介されている事が多
     いみたいですので興味のある方はググってみて下さい。
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E008-22&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E008-22&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E008-22&choice=2

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

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

雨が降っています。

おかげで新幹線が遅れ、乗り継ぎ駅の米原の待合室でこの原稿を書いています。
あと30分は待たなくてはいけません。

雨から連想したのでしょうか。私が過去に一度だけメンバーを泣かせてしまった
ことを思い出します。入社数年目の若い女性でした。

ある日何気に作業の指示を与え、しばらく任せておきました。何かの説明資料
をパワーポイントにまとめてもらうような作業です。
数日後、私は彼女がまとめた資料をレビューし修正点を指摘しました。結構な
量の指摘を入れましたが、別に怒ったわけではありません。冷静に、普通に指
摘したつもりでした。

でも、彼女は涙を流してしまいました。何故でしょうか?
私は今でも、その本当の理由はわかりません。

ただ、今振り返ってわかるのは、当時の私は仕事を「人に任せる」ことができ
なかったということです。

まず、私が彼女に指示した作業は、目的が明確でありませんでした。事前にやっ
て欲しいことは伝えましたが、その目的を明確に伝えてはありませんでした。
次に、彼女にとってどのような意義のある仕事であるかをまったく考えていま
せんでした。「いっぱいいっぱい」だった私の、アシスタントのような扱いに
なっていました。一人前の技術者に対する、期待感を伝えていなかったのです。
おまけに、作業の進捗具合をまったく確認しませんでした。当時は朝会もして
おらず、彼女がどんな問題点を抱え、悩んでいるのか、全く気が付きませんで
した(というより気にしていなかったのかもしれません)。

まったくひとりよがりなリーダーでした。お客さまの期待に応えることで自分
自身の価値を高めたいという考えだけで仕事をしていた気がします。チームプ
レイの価値に気が付くには、それから数年の時間が必要でした。そして彼女の
涙について語れるようになるには、さらに数年かかったことになります。

「岡島には一人しか面倒が見れないな」

これは当時同僚から言われた言葉です。そんな私も、今は20人のメンバーと一
緒に仕事をしています。時間はかかりましたが、人に仕事を任せることができ
るようになったのです。

・・・

特急しらさぎがホームに入ってきます。思わぬ形で私を振り返らせた雨も、そ
ろそろ小降りになってきたようです。(岡島)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M004-11&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M004-11&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M004-11&choice=2

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

今週は「会議の平均時間は?」のホントのところ。
ナガタはまだ「会議大好き!」という方に出会ったことがないのですが、仕事
をする上で、会議や打合せは少なからずついてきますよね。内容が濃くて時間
が短い会議が理想だなぁと思うのですが、みなさんの職場では、会議の平均時
間はどれぐらいでしょうか?また、会議の時間を短くする工夫がある方は
「ちょっと語らせて!」で教えてください♪

  [   〜10分 ]  さくっと終わらせます!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=214&choice=0
  [10分 〜1時間]  短めかなぁ?
     http://www.ObjectClub.jp/special/kininaru/vote?vol=214&choice=1
  [1時間〜3時間]  だいたいこのぐらい
     http://www.ObjectClub.jp/special/kininaru/vote?vol=214&choice=2
  [3時間〜5時間]  半日かけてじっくりと
     http://www.ObjectClub.jp/special/kininaru/vote?vol=214&choice=3
  [5時間〜   ]  エンドレス
     http://www.ObjectClub.jp/special/kininaru/vote?vol=214&choice=4
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=214&choice=5
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「北京オリンピックはこう楽しんだ!」の結果は公開中。ぜひご覧
下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol213/PlonePopoll_results2

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

こんにちは、編集人のナガタユウコです。先週、来年入社予定の内定者懇親会
があり、なぜかそこにお邪魔させていただきました。内定者の方の、「こんな
社会人になりたい」「こんな仕事がしたい」という熱い声を聞くうちに、入社
前に私も抱いていたハズの情熱がだんだん失われていたことに気づき、仕事に
対して襟を正さないと!という気持ちになることができました。情熱を持った
方と接することは本当にプラスだなと思います。半年後に入社された際には、
もっとじっくり接して情熱を分けてもらおっと!(そしてメルマガに記事を書い
てもらおっと!)

今週の強引な一言
*** 一つ迷えば万迷う(ことわざ) ***
心が迷いはじめると、次から次とすべての事が疑わしくなって、決断がつかな
くなること。メルマガの編集を担当して一ヶ月が経ちましたが、原稿の最終
チェックで誤字が見つかると、他にも間違いがあるのではないかと不安になり、
また初めから全部を見直すハメになっています。コードや文章を書いた後の見
直しは、正確さのために必要な作業ですが、全体を何度も見直す手間をなくす
よう、小さく区切って一つずつ確実にすると、効率がいいかもしれません。
出典参考:故事ことわざ辞典 東京堂出版 (ナガタユウコ) 

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