FizzBuzz

ざっと流し読みした後、手を動かしながら判別共用体の手前まで実践F#を読んだところで、末尾再帰とパターンマッチでFizzBuzzかけるなーとおもって書いてみた。

let fizzBuzz1ToMax max =
    let oneFizzBuzz x =
        match x with
            | _ when 0 = x % 5 && 0 = x % 3 -> "FizzBuzz"
            | _ when 0 = x % 5 && 0 < x % 3 -> "Buzz"
            | _ when 0 < x % 5 && 0 = x % 3 -> "Fizz"
            | _ -> x.ToString()
        in
    let rec fizzBuzzRecursive current max =
        do printf "%s / " (oneFizzBuzz current)
        if current < max then
            fizzBuzzRecursive (current + 1) max
        in
    fizzBuzzRecursive 1 max;;

ざっと読んだ時、コレクションに対する操作が色々あったのでそこまで来るとまた書き方変わるんだろうなーと思いつつ。
しかしループの前に再帰があるんですね。

第4回jenkins勉強会@GREE

jenkins勉強会は第1回に参加して以来2回目の参加。
第1回は法政大学で行われ、松岡修造と合コンの話題で持ちきりだった伝説の(?)勉強会。

第2回はjava、第3回はLL、ということで言語的にちょっと離れてしまってるしなぁ、ということもあり参加しなかったけど今回はC、C++C#とのことで参戦。(id:bleis-tiftさんも言っていたようにC#だけ異色を放っているような感じですが)

毎度の神レポートがあがっているので、ノート(今時紙とペンですが)にメモった自分的なツボを幾つか書きます。

@kohsukekawaさん

Matrix Plugin格好良い!
でもその分環境用意しなきゃ?
Seleniumでテスト書いたらこれで幾つかのブラウザで走らせることはできそう

@Kokawa_Takashiさん

おもにC++の話。いろいろなプラグイン情報が!!
Warnings Pluginいいかも! あ、でもうちのプロジェクト警告ほったらかしてるとこあるぞ。。。
静的解析いろいろ。うちもやりたいなー。
Sonarしらべよう。コピペやったかどうかグラフでわかるのいい。
うちはあまりドキュメント出せとかないけど、Doxygenちょっとしらべてみよう。
BTSへチケット発行までJenkinsからやっている。

@bleisさん

C#よりはF#の人。F#むずかしい。。。
ASP.netWCFウェブサービス開発。
.NetでJenkinsな人は大阪勉強会でのおださんスライドをみるといいよとのこと。
SimpleThemePlugins、プロジェクトごとにアイコン変えるとか
gitのリポジトリを分けてでTFSのゲートチェックインのようなことをしているとのこと。うちはSVN。同じようなことやりたいな。
時間短縮のため差分ビルドでやっていたら、クリーンビルドできない状態になっていて失敗した。うちも一時期差分ビルドしてたけど、10万くらいで速いJenkins用のPC(Corei5+SSDでエントリークラスの本番サーバより速くなってしまったのはどうかと思うが)組んでクリーンビルドにしました。

@lino_sさん

Jenkinsの初日本語書籍「Jenkins実践入門」でます。
プラグイン開発まで含んでいるとのこと。すごい。

@tamagawa_ryujiさん

Hadooopの象本を訳した人。
「Jenkins The Definitive Guide日本語訳」もでるよ。
日本初じゃ無くなっちゃって残念、というネタLT。
内容は、「Jenkins実践入門」ともろかぶりしてはいなそうとのこと。

@cactusmanさん

Jenkins温泉の話。
13人集まってプラグイン作ってた。
ただ@cactusmanさん自身は、Jenkins温泉中ずっと仕事をしていた。
川口さんにbug伝えたら5分で直ってきたとか。
今後家族参加も検討。

@nahiさん

Ruby Plugins for Jenkins:rubyでJenkinsプラグインがかける。
資料は1枚であとは実演。

@kosukekawaさん再び

Jenkins Confの話
申し込み400人、参加250人ほど。なかなか盛り上がってよかった。
30以上のセッション申し込みがあり、20セッションを2トラックで行った。
ヨーロッパでもやりたい。日本でもスポンサーになってくれる所があれば是非。

懇親会

Java+JSでWebサイト作ってるという@r_dosakaさんと話しながら会場へ
テーブルでは@takaesu0さん、@ssogabeさんと同じテーブル。
特に@takaesu0さんからは.net関係でいろいろな話を聞くことができてよかったです。
言語はjavaよりC#がいいと思っていても、IDEeclipseのほうがいいよなあ、と思ってるような人にとって
ReSharperは必須アイテムらしい。これは試してみないと。


あと、カバレッジについて、単体レベルなら100%にすることは多分できるけど、結合レベルでは
通せないところも出てくるよねという話がてた。
うちは単体はほぼ書いてなくて、機能テストは全部書こうというスタンスでやっているが、機能テストで
通せないところは単体でカバーするという考えもありなのかと思った。


帰り際に@bleisさんにWebサービスのテストどうやってます?と聞いたら、rubyでテスト用の仕組みを
用意してるとのこと。あと少量ではあるがWebアプリもあって、そちらはSeleniumでテスト。
Seleniumやりたいなー。


Jenkinsは1年ちょっと使ってるけど、自分からはなかなか新しい情報を集められていないので、
こういう場にくるといろいろな情報がいっぺんに得られて、気持も新たにがんばろうという気になりました。
関係者の方、スピーカーの方、参加された方どうもありがとうございました。

ここのところ10月頭のリリースに向けて短期間激務だった。
その間に自分の知らないうちに、自分のチームに配属予定の求人記事が求人サイトに公開されていることを知った。
その記事を見てみると、今の自分だったらあまり積極的に応募しないかもという記事だったので、せめて数行のコメントを追加できないか相談。
そしたらすぐに動いてくれてけっか無料で記事を修正できることに。
現場の意向聞かずに求人記事を載せるとかありえん!!とか思ったけど、こうやって素早く動いてくれて問題を一つクリアできたことはとてもうれしいし素晴らしい。感謝!

機能テストの安心感、半端無い。
スマフォ用Webサイトのテストは自動化せずにやってみてるのだけど、超不安。
テストが無いのでView側のリファクタとかできない。
みんなテスト無しでおかしくならないのだろうか。
一旦落ち着いたらSelenium2.0でテスト整備しなきゃ。
jQueryMobileのテストもSeleniumでできるのかなー。
Selenium超久々だから楽しみ。

asp.net mvc4はjQueryMobileのテンプレートがあるらしい。
もうちょっと早く出てれば使ったのになぁ。

アジャイル侍 他流試合(ギャザリング第0回?)

子供の寝かしつけで自分も寝てしまうという定番のパターンから今(夜中の2時過ぎ)復帰。


参加してきました。

ちょうど新しいプロジェクトが始まるタイミングでこの本が出たので、8月にagilesamuraiを購入したのだけれど、各地の道場はすでに数回開催されているといった状況だったので道場参加はしなかったのだけれど、「熱さ」でいったらかなり熱い勉強会になるんだろうなー、と思い参加。


自分が今いる会社は、agileに理解のある(というか好きににやっていいよという)会社なんだけど、上司2名にこの本を買って読んで下さいと直訴したところ、一人が釣れた購入してくれたので、ここに無理やり参加してもらうことに成功〜


しかしこの週末は子供たちは風邪気味で、奥さんダウン、家事育児に追われる週末(毎週こんなんだ。。。)だったのだけど、奥さんのお母さんのご協力もありなんとか参加できることに。(しかし懇親会はさわりだけで切り上げざるを得ませんでしたが。。。)


相変わらず、神レポートが上がっているのでこちらもどうぞ。

http://d.hatena.ne.jp/absj31/20110918/1316423657
http://d.hatena.ne.jp/absj31/20110919/1316423691


いつものように感想を。。。
しかしオラクル、眺めがいいよなー。


・各道場のLT
 秋田頑張れ!!!
 社内限定の道場も結構あったんだ。
 しかしみんなリクルート必死だなww(うちもうちも! ちなみにこんな会社です>http://www.mdingon.com


・西村さん(id:nawoto)

 XP祭りスクラム入門でも講師でした。
 ボッチだったらしいけど永和に転職。
 永和さんは、平鍋さんのイメージが強くXP中心なのかなと思っていたけどスクラムもありなんですね。
 お客様に価値を届けるのが大事、ただし毎週ね。
 Jonathanいい人っぽい。ちゃんと聞きとるだけの英語力はないけど。


・ワールドカフェその1
 最後のテーブルでは、SIerだと営業がとりあえず受注するために提案時にこれもやる、あれもやる状態にしてしまうので、開発時にやらないことをどのタイミングで切り出すか?という悩みがあるという方が。
 本にもあとできめるという枠もあるし、ネガティブにならない言い方もあるのでは?ということど、あとはある程度信頼が気づけてきたら、言い出せそうな空気ってあるよね、みたいな話に。
 でも自分としては、そもそも営業と開発が同じバスに乗って無いんじゃね?という感想で、それをそのまま伝えました。SIって難しいですね。。。
 id:joker1007さんツイートありがとうございました!!


・マスター先生への質問コーナー
 かなりユルイ感じ。
 exileよく知らない。。


・ワールドカフェその2
 テーマは各テーブル自由とのこと。
 自分はもともとの予定だった第4部のテーブルのホストになりました。

 見える化をどの程度できてますか?というのがメインテーマ。


 デジタルなツール(Pivotal Tracker、Redminetracなど)と、アナログな壁と2重管理どうしてる?
 ユーザーと共有する要求、ストーリーはデジタル、タスクはアナログでやってる。
 そもそもアナログでいいんじゃね?
 でもアナログだと何かしらの事件で、壁がぐしゃぐしゃになったら管理側としては困るよね
 報告資料必要だと手間かかるし。
 遠隔地だとデジタルかな。


 とかいろいろあって、結局は見える化っていっても何がしたいの?というところで、誰が何を見える化したいのかで、それにあったやり方でやればいいよね、という結論。
 コンテキスト重要とはよくいわれますが、その具体例をいろいろと聞けたのがとてもよかった!!
 @fullvirtueさん、ツイートありがとうございました。


 タスクも、チーム内共有事項(細かいものになるとほとんど設計書レベルの記述となるので)となり、気づいた点とかをチケットに残してあとから検索できたりするように使ってると、なかなかアナログに戻るのに勇気がいるなぁ。
 でも確かに昔はアナログで回ってたしなぁ、などと思ったり。どうして行こうかな。


・ジョナサンのビデオ
 まあまあ聞き取れた。
 こういうのちょっといいですね。
 湯島の2周目には是非お邪魔できたらとおもってますし、たしかにagilesamurai Gatheringみたいな感じで続くといいですね


・角谷さん
 相変わらず熱いッ!!!
 しかしねたは半分以上わからない。でも面白い。
 達人プログラマーどっかいっちゃってて読めない。。。
 プログラマーってすごいんだ!!
 すごいことをやるときは、すごい責任もあるよ!
 毎日小さな奇跡を起こして進めていくのです。
 (このへんは、AgileJapan2011の當仲さんの、エンジニアはスターだ、ハッピーメーカーだ!!というのと同じような熱さを感じた)
 

・懇親会
 残念ながら、諸般の事情で速攻切り上げざるを得ませんでしたが、マスターセンセイの西村さん、id:haru01さんと少し話して、ここに参加するきっかけを与えてくれた@shinyaa31さんに一言お礼を言って退出。
 ほんとはもっといろんな人と話をしたかった。。。残念。


関係者の方々、こんな素敵な機会を作って頂きどうもありがとうございました!!
今月は、XP祭り、そして他流試合と素晴らしいイベントに2回も参加できてよかった!!

9/2 F#読書会

 参加の数日前に本を買って参加表明という、とても感じ悪いですが、初心者歓迎の言葉に甘えて参加しました。
 Haskelやらscalaやら、他の関数型言語とF#の比較の話とか、いろいろな話を聞きながら、黙々と実践F#を読んでました。読み進めるのに頭使うので、なかなか大変。早く1周読み終えないと。
 次回もあるらしいので、次回までには1周読み終えてとりあえずレベルで内容把握出来るようにしないと。

9/3(土) XP祭り2011


2005年に初参加して、ほぼ毎年参加しているXP祭りに参加してきました。
開発を離れていた期間でも、このイベントだけは参加してました。


レポートは、素晴らしいレポートがあるので、自分は感想メインで。。。

  • 小井土さんと福井さんの掛け合い漫才私の一冊

 小井土さんは「トヨタ生産方式
  小井土さんは、リーンとか出てくる前に、これってアジャイルじゃん、と思っていて、リーンが出てきたとき、同じようなこと考えてる人がいるんだ、みたいなことを言ってました。すげー。

 福井さんは「Inside OLE」
  さすがマイクロソフト認定のえらい人だけあります。
  WordをExcelに(逆でも可)貼り付けられるのは、OLEのおかげ。
  自分は表面的なところしか理解できていないので全くわからないけど、comのインターフェイスは美しい。とのことでした。
  昔からいろいろ学んでいて、それを継続してきてきて、今の福井さんがあるんだなー、という感想をもちました。

  • 社長パネル

 浜さんの「とりあえず一度は客と喧嘩しろ。それを解決するという経験を共有するのが大事」との極意を聞けたのが良かった。どうやってケンカしようかなぁ。。。
 あとは、和田さんの私の一冊「人を動かす」を読んでみたい。

  • TDDBCミニ

TDDBCに参加したいなー、と思っているけど参加できていないので、TDDBCミニには是非参加したいと思っていた。なので朝会社によって、仕事用の大きいノートPCを持ちだして、受付開始前くらいに現地に。
ちょっとフライングで受付を済ませて、TDDBCミニに名前を書いた。
java以外希望の人は、言語も書くことになっていたみたいなんだけど、すっかり忘れていて、昼にC#と追記した(汗)。
しかし自分だけみたいなんでだめかなー、と思っていたらペアプロ作業前にもう一人C#の方がいて何とかペアプロできた。よかった。(ノートPCにEclipse入ってなかったし。)


まずは和田さんのTDDの説明。
そのあと、実際に手を動かすことに。
id:ledsunさん(会場の様子をツイートしてたんですね)とペアになって、FizzBuzz開始。
実は(Joel On Softwareにならって)、FizzBuzzはちょっと前の協力会社要員面接で、自分がテストを書いて、候補者に実装を書いてもらうというような面接をしていたので、予習ばっちり状態でした。
ただ、そのときは配列に対するテストをいきなり書いたけど、ここでは1つの数字に対して、文字列を返すメソッドについて、パターンごとにテストを書いていく形。
3の倍数、5の倍数、3と5の倍数、それ以外の4つのパターンを書いて、そのあとコレクションに対するテストを書く流れ。
ちょいちょいケアレスミスをしましたが、的確に突っ込んでもらえました。感謝。
でも最後、テストケース名と内容がずれたままだった。。。


お題は、テストコードとプロダクトコードが同じクラスにある状態だったので、一通り動いた後、ほんとのプロジェクトとかではこうですよね、といってプロダクトコードを別アセンブリに写す作業をしているところで、和田さんからC#組は発表確定。とのお告げが。。。
やば、このままだとビルド通ってないし、と焦るもなんとか動くとこまで回復して、無事発表して終了しました。ふぅ。


自分の実際の案件では、テスト対象コードのprivateメソッドにはテストを書いていない(そのままだと書けない)ので、今回みたいな小さいサイクルを回せていないのだけど、そこらへんのベストプラクティスはあるのかなー、と思っていて、その辺を和田さんに聞こうかと思ってたのにすっかり忘れてしまった。
本編のTDDBCにも出てみたいなー、と改めて思いました。

 XP祭りスクラム入門?という感じだけど、スクラムって全然しらないので参加。
 お客さんに優先度をつけてもらうのではなく、優先順位をつけてもらう、という話があった。やべ、優先度にしてしまっている。。。とノートにメモ。
 朝会で3つ話すことのうち、「困っていること」というのがあり、あ、これやってないやとこれもノートにメモ。明日から早速やろう。
 ワークショップではいくつかの制約の中、紙飛行機を3分間にどれだけ飛ばせるか?というのを4回繰り返すということをやった。10個以上飛ばしているチームもあるなか、うちのチームは最終的に6つでした。
それなりに改善していったとは思うけど、もっとうまいやり方があったんだろうなーという感想。でも少しずつうまくなっている体験を共有できるっていうのはやっぱり素晴らしいことだよなーと思った。

  • 基調LT

渋川さんの基調LT。
XPJUGの歴史や、昔の資料などをつかって話をされていました。
XPJUGは多様性があっていい、基本的になんでもありといってました。
たしかにそんな印象です。
あと受け身ではなく自分から何かやるということが大事とのこと。
デブサミXP祭りなどに影響を受けて、blog、社内勉強会など、少しは自分から動くようになってきたけど、まだまだだなーと思いました。

  • LT大会

つらつら感想を・・・
L-1チャンぷ、さすがのLT!
・ほんと多様性があるなー。
・マージャンねた、惜しい。もうちょっと見たかった。
ドラッカーとザ・ゴール読んでみよう。
・あべったーいい!!早速来週やってみよう。
・岩切さんここでも熱い!


このあと、懇親会に参加しました。
会場に行くまでの間はid:pocketberserkerさんにSCMBCに誘って頂いたり、懇親会では永和さんじゃない福井の会社のひとと話したり、shinyaa31さん(id:absj31さん、超絶まとめの方だったんですね!!!)にアジャイルサムライ道場に誘っていただいたり、privateメソッドのテストについて議論してもらったりと実りの多い懇親会でした。
XP祭りの懇親会の人数はやっぱり多いですねー。


関係者の方、参加者の方、素敵なイベントをどうもありがとうございました!
ちょうどプロジェクトのキックオフを控えているタイミングでいろいろと気づきをもらえてよかったです。