第一回 Agile Samurai 読書会 埼玉道場
3月10日(土)に第一回 埼玉道場を開催してきました。
I've been holding a dojo in Saitama on Saturday, March 10.
はじめに
興味を持って、実際に足を運んでいただいて、僕らに熱く語ってくれたジョナサン(@jrasmusson)ありがとう!
First.
Thanks for coming our dojo!
Most remain in the mind the story of the jar, it seemed the truth.
24日のDojo Gatheringでまた会いましょう。
Let's meet again in the Dojo Gathering on March 24.
席について
入場時にプランニングポーカーを引いてもらい、対応する番号の席に座ってもらいました。
(某PO勉強会の席ぎめを真似しました!)
開催にあたって
埼玉道場として3つの約束を宣言しました。
- 我々自身がわくわくし楽しむことをやめない
監訳者あとがきにもありますが、我々は「このやり方が楽しい」という事に気づいてしまった。
なので、当道場では楽しむ、わくわくする、をモットーに進めていきます。
- 我々はチームであり、仲間であることを理解する。
この本に出会い、わくわくしてしまった仲間が集まったのがこの道場です。
我々は一丸となって道場の仲間(チーム)が出くわした手強い問題や、ぶちのめされる為に出てきた
問題を皆で解決する事をモットーに、進めていきます。
くだらない問題や疑問なんかない。
- 第一回のお約束
今回は私と@alterakeyの二人で考えた読書会です。
KPTや振り返りで参加者の人が出した意見を反映して、より良い読書会にしていきましょう。
反省点
私のテーブルでは第一章の時点で後半の内容について話すなど、問題点が多かったので
次回はどうするか考える。
KPTとか振り返りをし忘れた!
理由が理由なので、アレですが・・・(後述)
サプライズプレゼント
@kakutani 埼玉と札幌かな?
— Nishimura Naotoさん (@nawoto) 3月 9, 2012
@nawoto ジョナサンがどっかdojoあるかな?って言ってたよ。埼玉どうするw
— Kakutani Shintaroさん (@kakutani) 3月 9, 2012
@nawoto マジでいく?ちょっと電話するわ
— Kakutani Shintaroさん (@kakutani) 3月 9, 2012
そうしてこうなった
That the story of Jonathan
Special thanks to....
@jrasmusson
Thank you for writing such a wonderful book!
@miholovesq,@mike_neck
通訳とお迎えありがとうございました!
@nawoto,@kakutani
お二人のおかげでとても素晴らしい道場が開催できました!
@tyobichi
お菓子&受付&写真撮影 ありがとうございました!
今回の参加者
@shin_semiya
@e_mumble
@takesiesz
@KoukoMatsumoto
@alterakey
@moyashidaisuke
@miholovesq
@ryotasaito
@tanabata77
@rocket_usagi
@sinomun
@junpei_iwa
@kojiokb
おまけ
ぶれいすさんがコメントしてくれたのでソレを反芻(自分用エントリ)
id:bleis-tift
コンパイラの気持ちになって考えると、hogelist.Where(n => n.ID == 1)というものが一意に定まるかどうかはわかりません。
なので、WhereはIEnumerable
Firstは複数要素があったとしても最初のものを返すのに対して、Singleは要素が空だったり、2個あったりすると例外が発生します(Firstも空のIEnumerable
要素が存在しなかった場合はデフォルトの値を返してほしい、という場合はFirstOrDefaultやSingleOrDefaultを使います。ちなみに、LINQ to Objectsの各メソッドは、条件を取るものが多いです。
なので、今回の例であれば、hogelist.Single(n => n.ID == 1)としても大丈夫です。
値を加工したい場合は、Selectに渡していたラムダ式の処理を外側に持って行けばいいだけです。
>コンパイラの気持ちになって考えると、hogelist.Where(n => n.ID == 1)というものが一意に定まるかどうかはわかりません。
・おっしゃるとおりですはい。
>なので、WhereはIEnumerable
・IEnumerableについて 参考にしたサイト:http://ufcpp.net/study/csharp/sp_foreach.html#iEnumerable
>Selectというのは「各要素を別のものに変換する」というもので、これもIEnumerable
・なるほどなるほど。
>で、人間様にとってはIDは一意に定まるだろ、と言うのが分かるので、最後にFirstなりSingleなりを置いてあげて、要素を取り出します。
・私が最後に挑戦したところですね。
>Firstは複数要素があったとしても最初のものを返すのに対して、Singleは要素が空だったり、2個あったりすると例外が発生します(Firstも空のIEnumerable
・これは後述
>要素が存在しなかった場合はデフォルトの値を返してほしい、という場合はFirstOrDefaultやSingleOrDefaultを使います。ちなみに、LINQ to Objectsの各メソッドは、条件を取るものが多いです。
・http://www.atmarkit.co.jp/fdotnet/dotnettips/952firstordefault/firstordefault.html
・nullとかnothingが帰ってくるのでそこでフックする感じですかね。
>なので、今回の例であれば、hogelist.Single(n => n.ID == 1)としても大丈夫です。
・存在値を指定してる場合はそうなりますね。
・安全策が必要なら「SingleOrDefault」で指定してやることにします。
>値を加工したい場合は、Selectに渡していたラムダ式の処理を外側に持って行けばいいだけです。
・むむ。
・こういう理解でいいのかな。
無駄な戻り値格納変数を○したい
なんか方法はあるはずだ。
ほそく
一応、捕捉。
C#2008というかC#3.0からだそうですが。
こういう事ができるので、VB2008でもやりたいヽ(`Д´)ノウワァァァン!!
という事です。はい。
VB2010では使えるようですよ!
VS2010買う予算ください(´・ω・`)
-
- 追記
代入のコメントを外すとクラッシュするから、やっぱり代入の行がよろしくないようだ。(普通に書きなさいって事ですがね)
— いんだろふさん (@inda_re) 3月 8, 2012
@bleis ですねー。指摘の通りだと思われます。自動実装については、vb2010じゃないと自動実装は使えないようです。はい。Get…Set…書いてる時点で自動じゃないですしね(´・ω・`)
— いんだろふさん (@inda_re) 3月 8, 2012
@bleis さんいつもありがとうございます!!!
色々とあれなので
ぶろぐめいかえたった
きょんくんとでこれきさんがだいじなことをいったのでめもった
bleisさんがニーソはく。。。SCMBC in Nagoya はbleisさんがメイド服? [うさみみ*´×`*エンジニア]
— きょん@お昼寝モードさん (@kyon_mm) 2月 29, 2012
ぶれいす(オ)ニー(チャ)ソ……
— でこれきさん (@dico_leque) 2月 29, 2012