オブジェクト倶楽部メルマガ読者のみなさん、こんにちは。今日は私の新著を紹介させてください。4月8日、技術評論社より「受託開発の極意〜変化はあなたから始まる。現場から学ぶ実践手法」が出版されます。者の仕事と、お客さまとの接し方やチーム内でのコミュニケーションについての手ほどきです。自分と組織に「変化」をもたらすための啓蒙書でもあります。「3K職場」を愚痴る前に、まずあなたから始められることがあるはずです。今回の記事では、「はじめに」の全文を掲載させていただきます。「生業(なりわい)」という言葉があります。「生活のための仕事」という意味なのですが、語源は「五穀が実るように務めるわざ」だそうで、なかなか味わい深い言葉です。一朝一夕に「五穀が実るように務める」ことはできません。地を耕し、種を蒔き、雑草を刈り、収穫のためにじっくり働く覚悟が必要です。実り多くするために日々努力して技術を高め、時には天候のようにコントロールできない問題とも付き合わなくてはいけません。私は「生業」という言葉を重く受け止めます。生業とは、簡単にやめることのできない、まさに一生物の仕事のことだと思います。この質問に自信を持って「はい」と答えられる人は少ないと思います。「どうせ自分の会社は...」などといった躊躇を感じているのでしょう。その一方で、開発者の中には苦労しながらも、仕事を生き生きと楽しんでいる人がいるのも事実です。私の周りにもそんな人たちがたくさんいて、彼らはまさにソフトウェア開発という仕事を生業に感じているかのようです。私は、仕事を生業に感じられる人たちには共通する特徴があると思います。ここでの技術とは、プログラミング言語や開発プロセスに関する知識だけではなく、コミュニケーションやビジネスに関するノウハウも含んだ幅広いものです。業界の構造や会社の問題をあれこれ悩んで止まってしまうより、自分の行動や考え方を変えて先に進むことを重視します。仕事と生活の両方を大切する価値観を持っています。互にプラス作用し、人生を豊かにすることに気がついています。私は、このような人たちが増えることで、業界全体が変わると信じています。今の受託開発、というよりはソフトウェア業界は行き当たりばったり過ぎます。今年さえ乗り越えられればいいという考えではダメで、年々着実に成長できるような業界にしなくてはいけません。一つのプロジェクトの成功や満足な仕事ができた喜びだけにとどまらず、そこで得られたことを次の世代の種として蒔くことができる。プロジェクトがうまくいかなかったのであれば、技術を改良し次のチャレンジでは成功させたいと努力できる。ソフトウェア開発の現場にもそんな開発者をもっと増やしたい。それが私の目標であり、この本がその一端を担えれば幸いです。「受託開発の極意〜変化はあなたから始まる。http://gihyo.jp/magazine/wdpress/plus/■私のブログです。リーダーネタと少々の技術ネタを扱ってます。http://d.hatena.ne.jp/HappymanOkajima/■「プロジェクトを成功させる現場リーダーの技術」私の著作です。現場リーダーの仕事術をやさしく説明しています。http://www.amazon.co.jp/exec/obidos/ASIN/4797333502/xpjp-22_______________________________________________________________________この記事への評価にご協力をお願いします。URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用のブラウザに表示されれば投票完了です。今回はReaderモナドについてお話しします。ReaderモナドはStateモナドと同じく大域変数の参照、更新のために使用するモナドです。Stateモナドに比べて参照、更新の機能をシンプルに提供しているというところがウリです。ちなみにHaskellではこのような大域変数を「環境(Environment)」と呼ぶことが多いようなので、本連載でもそのように呼んでみます。いつものようにghciを起動してReaderモナドについて調べてみましょう。Control.Monad.Readerこれぐらいだと、慣れてくると見ただけでなんとなく使い方が分かるようになります。複雑なモナドだとキツイですが。ghciからちょっと使ってみましょう。25local関数は環境を更新するための関数です。2つ目の例が"6"ではなくて"5"になっているところにちょっと注意が必要です。local関数の定義にカラクリがあるのですが、それほど複雑でもないので余裕があったら確認してみましょう。StateモナドではrunStateした結果がタプルになっていて、変更した状態と更新された環境の2つをとりだすことが出来ました。Readerモナドでは最終的に取得できる値は環境だけです。分かりづらいかもしれませんが、比較してみれば分かると思います。sample(5,[2,4,5])Stateでは更新した環境("5")に加えて状態("[2,4,5]")もとりだすことができます。ReaderモナドがStateモナドと比べて環境の参照と更新に特化しているという意味が分かっていただけたのではないでしょうか。(西川)_______________________________________________________________________この記事への評価にご協力をお願いします。URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用のブラウザに表示されれば投票完了です。ホントのところ今週は「新入社員は来ましたか?」のホントのところ。電車のホームで、新入社員らしき人を見かけました。自分が社会人になりたてのころを思い出し、ちょっと懐かしい気分です。員は入りますか?教えてください。配属はこれから決まるので、ドキドキ。入社し、これから一緒に仕事を始めることになりました。会社には入社しますが、自分のプロジェクトには来ません。あっ!未だチェックしてなかった。新入社員は入りません。新卒じゃないけど、中途の人だったら4月から入ります。