@katzchang.contexts

日常の思い付きをまとめる。君達の熱い通りすがりコメントなどを待つ。

2013-06-20

TDDとパラダイムは関係ないんじゃないかなぁ

世の中には手続き型言語オブジェクト指向言語関数型言語あたりがあるとして、どれがTDDに向いてるかというと、いや特に差異はないよねという話です。

それぞれのやり方で、「手続き」なり「オブジェクト」なり「関数」なりがパターン爆発しない大きさに収まる限り、ユニットテストのコードを書くことは現実的に可能だし、RED->GREEN(もしくはその逆も)の変化を観察することに対して、大きな違いがあると思ったことはない。穿った見方をすると、書籍としてオブジェクト指向の本が多いのは、オブジェクト指向言語のパラダイムが難しいことを説明してると考えることもできる。リスコフの置換原則は我々には早すぎた道具だったのだ!!

まぁとりあえず、テスト性をよくすることで自然と高凝集かつ低結合なモジュール構成が出来上がったりします。ので、私が作る程度のプログラムでは、テスト可能な感じにまとめつつ、意図通りに変化していることが観察できれば、それで十分だと考えています。

結合テストでも、よく、RED->GREENは観察しますよね。パラダイムは関係ない。

以上、 http://d.hatena.ne.jp/y_sumida/20130619/1371654638 のあたりの話題でした。

2013-01-24

2012-12-03

方針はエリート教育

この記事は子育てエンジニア advent calendar 2012 : ATNDの12/3のエントリです。

日曜日

俺「ねぇ、なんか足し算の問題だしてよ」

娘「じゃぁ、せん足すー、せん足すー、せん足すー、せん足すー、せんはー?」

俺「ちょいまち」

gosh> (+ 1000 1000 1000 1000 1000)
5000

俺「ほら、5000だ、すごいだろ」

娘「ふーん、じゃぁ」

俺「(反応うすいな…)」

娘「せん足すー、ごましお足すー、ごみぶくろはー?」

俺「!?」

gosh> (* 1000 gomashio gomibukuro)
*** ERROR: unbound variable: gomashio

俺「ぐぬぬ………ピコーン!」

gosh> (define gomashio (+ 5 4))
gomashio
gosh> (define gomibukuro (+ 5 3))
gomibukuro
gosh> (+ 1000 gomashio gomibukuro)
1017

俺「1017!!(ドヤッ」

娘「えっ?ちがうよ?1014だよ?」

俺「えっ?ごましおと、ごみぶくろだから、5と4と5と3でしょ?」

娘「あっ。な、なんでもなーい。」

きっと、schemeの、プログラミングのすばらしさが伝わったものだと思います!!!111!

2012-12-02

ちょっと湯豆腐を作ってみますね…

いよいよ本格的な冬になってきたような気がしないでもないと思ってたらもう師走な今日このごろですが、いかがお過ごしでしょうか?自称お料理ブロガーの@です。

VOYAGE GROUP エンジニアブログ : Advent Calendar 2012の12/2のエントリーを書かなければいけないですが、何を書こうか迷ったので、ここは湯豆腐について調査した結果を報告致します。

作り方

f:id:katzchang:20121202174254j:image:w360

醤油に酒・昆布を入れて弱く加熱し、温まった程度で昆布を取り出してさらにそのまま加熱する。沸騰したくらいで加熱を止め、鰹節を投入してひと混ぜしたあとに少し放置し、漉し、冷ます。ようするにダシ醤油を作っておく。

柚子の果汁を絞っておく。

鍋に水と昆布を入れ、適当な大きさに切った豆腐を入れ、弱火にかける。丁寧に作る場合は水と昆布を合わせて一晩おいて〜みたいにするかもしれないが、ここはまぁいいや。

で、沸騰前に加熱を止め、小皿にとり、ダシ醤油と柚子果汁を1:1程度の割合でかけて、食べる。

さて、

一口に「湯豆腐」といっても作り方は様々なようで、豆腐だけではなく、野菜などもはいったものも「湯豆腐」と呼ぶことがあるようです。こうなると「湯豆腐が湯豆腐たらしめるのは何か」ということが気になってくるわけでして。これはドメイン駆動設計におけるコア・ドメインの抽出と同じパターンだと思いませんか?

とりあえずみんな大好きwikipediaから引用してみると、

豆腐、水、昆布だけが材料である。鍋に昆布を敷き豆腐を入れ、温まったところを引き揚げてつけダレで食べる。

塩ひとつまみ、あるいは刻んだ大根をいれると豆腐が硬くならず、やわらかいまま食べられるといわれている。ただし、多く投入すると雑味となって湯豆腐ならではの淡味が失われる恐れもある。

湯豆腐 - Wikipedia

つまり、豆腐を温めて食べる、ということらしい。温奴。煮るではないという感覚ですね。

豆腐は強く加熱すると硬くなる(スが入る状態)。内側を加熱しつつ外側の加熱を抑えるために、今回は水から、弱めの火で加熱してみました。まぁ、ここはあまりこだわんなくてもいいかもしれないけど。

冷奴のレシピとしては、ネギなど薬味をつけたり、キムチなど他の食材と合わせる場合があるので、「温かい豆腐なら、だいたい似たようなものだろー」と思ってそれらの食材と合わせてみたけど、やっぱりポン酢醤油が一番美味しく食べれたような気がします。ネギも不要。

終わりに

ということで、今回は「湯豆腐は昆布出汁で暖めた豆腐であり、薬味なしのポン酢醤油をあわせる」という湯豆腐のコア・ドメインを蒸留してみました。食べ物は万人がドメイン・エキスパート

これがなんでVOYAGE GROUP Advent Calendarかというと、ようするに今度AJITOでやろうぜという話です。電気鍋は2,000円くらいである*1し。

あすのカレンダーを埋めるのは@です。お楽しみに〜。

*1http://shopping.ecnavi.jp/keyword_search/?keyword=%C5%C5%B5%A4%C6%E9 で価格比較とかできるらしいですね

2012-09-04

プログラマに最も必要なのは読解力である

たぶんあとで書かない

細かいコーディング規約を排除できる

あなたはコーディング規約の詳細まで理解しているか?

よし、しているとしよう。すばらしい。

では、あなたのチームメンバも同じか?

無意味に思う規則に乗るなら、乗らないで失敗したほうがマシだ。

書き手のスタイルに沿った設計プログラミングができる

まだ見ぬ読み手に自分を縛られてるくらいなら、自由に書いたほうが、よほど読みやすい。

本当に読みにくい部分を読みにくいと指摘できる

読みにくいコードは、変数の名付けがダメなのだ。状態管理が混乱しているのだ。

読みにくいのはコメントがないせいでもないし、インデントが崩れているせいでもない。読むに耐えないほどインデントが崩れたコードは実際に見たことはないし、気になるなら読み手が修正してコミットすればよい。

他人に読みやすいコードを書ける

読解力とはレビュー能力である