Profile cover photo
Profile photo
Osamu MATSUMOTO
240 followers
240 followers
About
Osamu's posts

Post has shared content
PUSHESPER REPOSITORY がTeXってw アカデミアな人ですかねぇ。たしかに修正頻度たかそうだけどな。TeXのeditorでsaveしたらgit pushようなのがはやってたりしてw
偶然こんなサービス見つけて、世界はJavaScriptでできてることがわかった。 http://goo.gl/mftHs4

Post has attachment
Eiger from grindelwald bodmi

Post has shared content
「コミュニケーションが不調に陥ったときにそこから抜け出す力」と定義するひともいる。 http://blog.tatsuru.com/2013/12/29_1149.php
コミュニケーション能力とは何ぞや #54

あるとき、コミュニケーション能力の重要さを実感する出来事が仕事であり(何だったか忘れてしまったが)、コミュニケーション能力って本当に重要だねえ、と何気なくつぶやくと、同僚から、そんなことをネットで言ったら叩かれますよ!コミュニケーション能力というのは広い概念だから、一括りにして議論できないんですよ!と突っ込まれてしまった。言われてみれば確かにそうだなと思った。

日常生活という文脈では、たとえば、人の話をよく聞くとか、共感力があるとか、相づちがうまいとか(例:何気ないつぶやきに突っ込みを入れない)、人見知りしないとか、そういったことを指してコミュニケーション能力と言ったりすることがある。これらを仮に第一のグループと呼ぶことにする。

一方で、ソフトウェア開発という文脈では、自分の意見を論理的に説明できるとか、それを文書化できるとか、議論の中で適切な質問ができるとか、多数の意見の中からコンセンサスをまとめるのが上手とか、そういったことを指すことがある。これらを第二のグループと呼ぶ。

私がコミュニケーション能力って本当に重要だよねえ、とつぶやいたときは、第二のグループのことが主に念頭にあったのだが、プロジェクトを円滑に進めるためには第一のグループの方も重要だったりする。

たとえば、異なるチーム間で議論をすると、目標の違いなどから、意見の相違が出やすい。こういった場面では、相手の立場でものを考える共感力が役に立つはずだ。

が、これはなかなか難しい。その昔、コードを共有する方法について他のチームと議論した際に、相手のチームのコードの管理のやり方に疑問があり、その点について、控えめに伝えたところ、このやり方は間違っていない!と過剰に反論されて、結局、この話は流れてしまった。

後日、人づてに、私の意見は「お前らのやり方は全く間違っている。お前らのコードクオリティもひどいもんだ」という風に相手チームに受け取られていた、という話を聞いて、背筋が凍ってしまった。

実際のところ、心の中ではそんな風に思っていた訳で、自分の考えが正確に相手に伝わっていたという点では、抜群のコミュニケーション能力を発揮したと言えなくもないが。。

Post has attachment
PhotoPhotoPhotoPhotoPhoto
12 Photos - View album

nan boxingを理解したきになった

Post has attachment
本栖湖から朝4時の写真
Photo

Post has shared content
Without Steve Jobs (February 24, 1955 – October 5, 2011) we would have:
• No iProducts.
• No over expensive laptops.

✔ Without Dennis Ritchie (September 9, 1941 – October 9, 2011) we would have:
• No Windows.
• No Unix.
• No C.
• No Programs.
• A large setback in computing.
• No Generic-text Languages.
• We would all read in Binary.

✔ They died in the same year and the same month but it seems only few notice the death of Dennis Ritchie compared to Steve Jobs.
✔ It won't cost you anything to press the share button so spread it ! :)
Photo

Post has attachment

Post has shared content
まぎらわしい仲間たち #42

テストを書くときに使えるテクニックのひとつにモックというものがある。本物のオブジェクトの代わりにモックを差し込んで、期待通りに関数が呼ばれるか調べる、なんてテストを書くのに使える。たとえば、リクエストを処理したらメールを送る、なんていうコードをテストする場合、ユニットテストで本当にメールを送るわけにもいかないから、 MockMailer なんてモックを差し込んで、Send() 関数が正しい引数で呼ばれることをチェックする、なんていうテストが書ける。

というわけで、モックというものはなかなか便利なんだけど、モックと似たようなものがいろいろあってややこしい。"TotT: Friends You Can Depend On" [1] という記事ではダミー、スタブ、モック、スパイ、フェイクの違いが紹介されている。

大雑把にいうと、ダミーは値はどうでもいいけど、とりあえず何かをつっこみたいときに使うもの。スタブはハードコードした値を返すだけのもの。モックは関数が期待通りに呼ばれるかをテストするために使うもの。 スパイはモックと似ているけど状態を記録してテストするために使うもの。フェイクは本物の実装の代わりに単純な偽の実装を提供するもの。

これらは適材適所で使い分けるのが望ましいのだけど、どれも似たような概念なので、正しいものを選ぶのはなかなか難しい。で、この中でモックに関しては googlemock [2] (C++) のようなモックフレームワークがあって、これらを使うと結構凝ったことがいろいろできる。たとえば、関数が呼ばれたときに、単純に値を返すだけじゃなくて、ロジックを実行して、パラメータに基づいて値を計算して返す、なんてことができたりする。

で、こんな機能を使ってごちゃごちゃ書いていると、これ、モックじゃなくてフェイクなんじゃないの?なんてことが起きる。つい先日もそういうことがあって、複雑な挙動を定義していたモックを、モックフレームワークなしでフェイクとして作り直したら、コードが非常にわかりやすくなった。

これに気をよくして、既存のモックをチェックしてみたところ、関数呼び出しの期待 (expectation) が何もセットされていないモックがあった。じゃあ何に使われているかというと、別のオブジェクトを作るために必要なパラメータの一つとして使われているだけであった。

じゃあこれはモックじゃなくてダミーなんじゃないの、と思って同僚に相談したところ、 int を返す関数なんかは適当に 0 を返さないといけないし、これはハードコードした値を返すんだから、スタブなんじゃないか、ということになった。

とりあえず、Stubなんとかという名前のクラスを作ってコードレビューに投げたところ、同じ同僚から、いや、やっぱりこれはダミーだよ、というコメントが返ってきた。ううむ、まあたしかにそうかも、ということで Dummyなんとかに名前を変更。

が、チェックインしてからも、なんだかもやもやしていて、こういう何もしないオブジェクトって null オブジェクトとか呼ばれるんじゃなかったっけ、なんてことをぼんやり考えていると、 すごいことをひらめいた。そもそもこのオブジェクトはまったく使われていないんだから、ダミーのオブジェクトを作って渡す必要はなくて、コンストラクタには NULL でも渡しとけばいいんじゃないか。

で、実際にやってみたら、NULLを渡すだけでテストはあっけなく通った。つい先ほど導入された Dummyなんとかクラスは次のパッチで消され、NULL だけが残った。これはモックか?スタブだ、いやダミーだ、なんてがんばって議論していたのは一体なんだったのだろうか。

[1] http://googletesting.blogspot.jp/2008/06/tott-friends-you-can-depend-on.html
[2] http://code.google.com/p/googlemock/

Post has attachment
suとかつかわなから大丈夫
Wait while more posts are being loaded