第2回 アジャイルサムライ読書会 in 廣島に参加した
第2回 アジャイルサムライ読書会 in 廣島に参加しました。
アジャイルサムライの第2章をその場で読み、議論などなどしました。
それぞれの先入観があって、それぞれの開発の価値観があるのでちゃんと議論になるなーというのが主な印象。
第2章自体の感想としては、アジャイルチームを作るにはそれなり人を選ぶため人選は難しそうなので、アジャイルをしたいって人であつまって実績を作っていかないと広がりをつくることを今はしなきゃいけないのかなーって思いました。
よーするに大変だけど楽しい仕事をしようってことだよね。たぶん。
第3回は3月27日です。
アジャイルサムライ(amazon) http://www.amazon.co.jp/gp/product/4274068560/ref=as_li_ss_tl?ie=UTF8&tag=eiel-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4274068560:
第1回 アジャイルサムライ読書会 in 廣島に参加できなかった
第1回 アジャイルサムライ読書会 in 廣島に参加できなかったけど、twitterのログをみてると面白かったという意見がちらちらと見えたので悔しいので勝手に引用しとく。
第2回は2週間後にありますー。
第2回 アジャイルサムライ読書会 in 廣島 : ATND
Macで環境変数の設定方法(not bash)
HaskellでArray操作
Haskell使ってはじめてArray操作したのでメモ。
STモナドをつかったのもはじめてだけども。
使い方があってるのかは保証しない。
arrayパッケージのhackageのページ
http://hackage.haskell.org/package/array-0.4.0.0
- インターフェイスとしてはImmutablな IArrayクラス とMutableな MArrayクラスがある
- IArrayとしては Array と アンボックスされてる UArray がある
- MArrayとして IOArray とか STArrayとかある。それそれアンボックスされてるVersionがある。(IOUArray,STUArray)
- MArrayとIArrayを相互変換には freeze、thaw とかがある。
- thawとかfreezeしたときにコピーが発生してるんでないかと思う。
- freezeしたときはコピーするんだろか。
- アクセスする際の添字としてはIxクラスであればつかえて、初期化する際に最小値と最大値を指定する。(多次元配列とか簡単につくれる)
- array関数とかに *1 とか渡してやれば 12x12の配列ができる。
折角なので書いたコードも添付しとく
- 書いたコードはプログラミングコンテストチャレンジブックのLake Coutingを元にhaskellに書き換えた。
- 数えた数を保存するのにStateモナドつかってたらうまくいかなかった。どうせSTの中なので新しいSTRefつくった。どうするのがよいのかよくわかってない。
- solveの中で破壊的な操作があるけれでも、その変更は外に出ないの参照透明性は維持できる。と信じている。
- whenが連続するのをなんとかする方法をしりたいけど、今回は保留。
- STモナドはIOモナドみたいに副作用がおこせて、STをはずすこともできるが、その変わり別の制限がある程度に認識している(つまりよくわかってない)
- 入力はIOUArrayで構築して UArray に変換しておいて、問題をとく場合はSTUArrayにして処理したという感じ。
問題の内容は
大きさがN×Mの庭があります。そこに雨が振り、水溜りができました。 水溜りは8近傍で隣接している場合につながっているとみなします。 全部でいくつの水溜りがあるでしょうか? (8近傍とは、次のWに対する*の部分を指します) *** *W* *** 制約 N,M <= 100
入力データは以下のように想定
- 1行目がN
- 2行目がM
- それ移行が庭
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
module Main where import Control.Monad (forM_,when) import Control.Monad.ST (ST,runST) import Data.Array.ST (STUArray) import Data.Array.IO (freeze,thaw,writeArray,getBounds,readArray,newArray,IOUArray) import Data.Array.Unboxed (UArray,bounds,array) import Data.Ix (inRange,range) import Data.STRef (newSTRef,readSTRef,writeSTRef) type Point = (Int,Int) type Field = UArray Point Char type STField s = STUArray s Point Char type IOField = IOUArray Point Char main = do n <- getInt m <- getInt let r = ((1,1),(n,m)) field <- newArray r ' ' :: IO IOField forM_ [1..n] $ \x -> do forM_ [1..m] $ \y -> do c <- getChar writeArray field (x,y) c getChar f <- freeze field print . solve $ f where getInt :: IO Int getInt = fmap read $ getLine dfs :: STField s -> Point -> ST s () dfs f p@(x,y) = do writeArray f p '.' b <- getBounds f forM_ r $ \p1 -> do when (p /= p1 && inRange b p1) $ do c <- readArray f p1 when (isWater c) $ do dfs f p1 where r = range ((x-1,y-1),(x+1,y+1)) solve :: Field -> Int solve field = runST $ do f <- thaw field :: ST s (STField s) solve' f where solve' :: STField s -> ST s Int solve' f = do ref <- newSTRef 0 forM_ r $ \p -> do c <- readArray f p when (isWater c) $ do dfs f p x <- readSTRef ref writeSTRef ref (x+1) readSTRef ref r = range $ bounds $ field isWater :: Char -> Bool isWater = (=='W') -- サンプルデータ ar :: Field ar = array ((1,1),(2,2)) [((1,1), 'W'),((2,2), 'W')]
*1:1,1),(12,12
第0回アジャイルサムライ読書会 in 広島にでかけた。
勉強会レポートをかくblogになりつつあります。
私のソフトウェア工学におけるプロジェクトマネージメントの知識は基本的にはなくて、ソフトウェア開発技術者試験にうける際に参考書をぺらぺらしたことある程度です。
atndは以下です。
http://atnd.org/events/24779
今回はアジャイルサムライという書籍を教科書に勉強会を(たぶんある種のアジャイル的に)するために人がどれくらい集まるかとどのように行うかを相談しつつも、各々アジャイルについてどのように実践していて、どのような印象をもってるかを話したりしました。無知な私はなんとなく思ってること聞いてみたりしました。
今回参加者は7人ほどで第1回には20人程度を目指していて、どんな勉強会になるのかは、アジャイルサムライ読書会 島根道場のustreamが参考になると思います。http://www.ustream.tv/recorded/18855978
流れとしてはチーム分け、黙読、討論、発表という流れなので、本を読んでいることは必須にはならないようです。本をもってることは必須になってくると思います。
参加者の対象は、開発者のみならずシステム会社とやりとりを行う担当者になりそうな人になると思います。とはいっても、まったく関係ない人でも楽しめるんではないかと思います。
アジャイルの方法論をすべて実践するわけではなく、必要なものをとりいれていく場合、その根幹となる目的を理解することで、有効な方法として利用できるようになるという印象をうけました。アジャイルがなにもかもを解決するわけではないですが、楽しく仕事をしていくには有効な手段になりえるのではないでしょうか。
第1回は開催は2月の28日あたりになるのではないかと思います。
気になる方は一緒にサムライを目指しませんかねー。
wHiroshima.R #2に遊びにいってきた。
Rに特別な興味があったわけではないけど、どんな風にRを使うのか見たかったので遊びにいってきました。こうかくと興味がないように見えるかもしれませんが、興味はあります。ちなみに統計の知識はHead First Statisticsが絶賛読みかけです。
参加者には女性も多く、教育関係をしてる人が多いというコンピュータ系とは思えない感じでした。なので、しっかりといろんな人と交流すべきなんですが、あいも変わらず以下略です。
Rはプログラミング言語という認識だったのですが、徹底的に統計ソフトとして説明するのが印象的でした。Excelの変わりに使うという点に着眼してるのでプログラマが利用すると強力な道具となりそうです。プログラマだとそのまま汎用でなんとかしてしまいそうですが、そうでない人が使うように作られてると考えると楽々と目的が達成することができると予測できます。
言語としても面白いと思います。Lispの影響されてるように感じました。実行環境のイメージをそのまま保存したりするあたりEmacsを思いだします。
個人的にもエクセルの代わりとか、ライブラリの作成時にインターフェイスを参考に役立てたいです。
ドキュメントなどもリンクが貼られております。
http://atnd.org/events/24108
twitterのハッシュタグ #HiRoshimaR なので興味ある方はその辺りを追うのもよいと思います。
以下なぐり書きなメモ。
第一部 R入門
明日はOsaka.R
基本操作
- インストールはバイナリがある。
- GentooのRはちょっとふるかった。
- 統計ソフトとして使うなら無闇にアップデートしないほうがいい。
- R Consoleはターミナルから起動するのに比べて多機能っぽい。
- EmacsならESSというのがある。Rの前進となるSとかも対応してるっぽい
- JavaScirptみたいに()をつけないと関数呼び出しにならない。
- 困ったら help()
- seekR R限定の検索サイト
関数と変数
100/3だと33.3で整数処理ではない。
100^1/2 -> (100^1)/2 -> 100/2 -> 50
100^(1/2) -> 10^(2*(1/20)) -> 10^1 -> 10
演算子の優先順位はどこやろ。
- 動的型
- ベクトル、行列があつかいやすそう。
- c() concatenate combine のC(と予想されてる
- どういうデータ構造で実装してるのか気になる。
Rでグラフ再入門
- pdf()で出力先をPDFファイルにできる。
- dev.offすると元の出力先になる模様
- ggplot2を使うと綺麗なグラフがかける。
グラフで学ぶ主効果・交互作用
- 結論: 視覚化するとわかりやすい。
RStudio事始め
- それEmacsでたぶんきっとできる気がする。それとanything
Rを用いた地震データの可視化
- ggplot2はレイヤー構造がある。
関連書籍
Head Firstデータ解析 ―頭とからだで覚えるデータ解析の基本
- 作者: Michael Milton,大橋真也,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/07/10
- メディア: 大型本
- 購入: 3人 クリック: 15回
- この商品を含むブログ (10件) を見る
Head First Statistics ―頭とからだで覚える統計の基本
- 作者: Dawn Griffiths,黒川利明,木下哲也,黒川洋,黒川めぐみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/08/24
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 34回
- この商品を含むブログ (13件) を見る
- 作者: 山田剛史,杉澤武俊,村井潤一郎
- 出版社/メーカー: オーム社
- 発売日: 2008/01/25
- メディア: 単行本
- 購入: 64人 クリック: 782回
- この商品を含むブログ (68件) を見る