TeamFoundationServer

実は僕、会社のTeamFoundationServer(以下、TFS)の担当になりました。


先日、職場の朝会で、
自動化とかユニットテストとかバージョン管理とか、
もっとそういうものに興味持とうよ。
おいしいよ、ペロペロ。的な話をしたところ、


上司:お前、好きなんだろ?TFSの導入を検討してみなよ。

僕:えっ


ってなりました。
てなわけで、担当です。
担当といっても、言われてるのは「検討」の担当なので、
場合によっちゃあ他の選択肢もあるのかなと前向きに捉えています。
(個人的にはGit使ったりしてるしね)


先日、TFSの勉強会が開かれたので、参加もしてきました。
http://blogs.msdn.com/b/tomohn/archive/2011/11/08/1-tfs-users-study-sessions-and-tweets.aspx


TFSについてはほとんど知識を持たないまま臨んだのですが、
話を聞いてるとかなり良さげです。
特にExcelへのレポート出力機能は職場的にもウケが良さそうに思いました。
重要ですからね。ウケの良さ。
使うのは人間ですから、気持ちよく使ってもらわないと。


あと、個人的にはTestManagerが気になります。
しかし、いかんせんテストを書く文化が無い弊社、
活躍の場があるかどうか。。


なんだかんだ言っても楽しそうなものの担当になってwktkです。


別件でMCP取れって言われてるのは業務的にきついですが。。

singletonとstatic classの使い分け方

転職しました。
久しぶりに実装しています。

iPhoneAndroidに絡めそうなのでわくわくしてますww

引き継ぎという形ですが、実相はやっぱり楽しい!!
さて、自分以外の人間が書いたコードを見ると、違和感が少なからずありますよね?

今回のタイトルもそういう違和感が元です。

さて、singletonとstatic class。
両者の使いどころ、違いを吟味せずに使用している方は多いのではないでしょうか?
平平凡凡なプログラマーである私もその一人ですw

Twitterでちょっとつぶやいてみたところ、

staticで宣言すると下記のようなメリットがあるようです。
1. メモリ量節約
・ゲーム屋さんと私との、そもそもstaticという宣言の使い方の違いが顕著に表れています。

2. そのクラスのstaticなものにしかアクセスさせない
・使用制限という意味では、C#のprivate set;見たいな、スコープ範囲制限みたいな使い方ですね。staticメソッドからは、staticなものにしか触れないので一種の制約見たいなもんですね。

3. メンバ変数をいじらない保証として宣言する
・これも2.と一緒のような気がします。

個人的に過去にsingletonを使用した時は、親Formを一つしか生成したくないときとか、ユーティリティクラスをsingletonでインスタンス提供したりとかぐらいです。

class、methodを全てstaticで宣言しているコードを見たことがありますが、やはりいざ実行してみると重いですし、どこでプロパティが変更されるか分からないので、客観的に見ても恐ろしかったです。

プロパティを持たずに、あくまでメソッドのみstaticで提供するのであれば、ありっちゃありのような気がします。

ただ、インスタンスの個数を制限したいとか、保証したいって時はsingletonパターンを使用します。

みなさんはこのsingletonとstatic classどう使い分けてますか?

Trelloがとてもいい感じ

プロジェクトのタスク管理にTrelloを使っています。
Trello


これがまた便利なのです。
紹介サイトもあります。
オフィスのホワイトボードを止めて「Trello」を使うべき理由【増田(@maskin)真樹】 | TechWave(テックウェーブ)


今は便利なフリーのサービスがたくさんありますよね。
使わなきゃ損なので、積極的に取り入れていきたいと思います。

System.EnterpriseServices.Wrapper.dllのトラブル対応

こんばんは、kokmt改めk_0kamotoです。

昨日、職場PCのWindowsUpdateを行ったら(?)、
VisualStudio2005からのデバッグでDBに接続できなくなるトラブルに見舞われました。
DBにはプライベートWebサービス経由で接続しています。

エラーログがあったので見てみると、
次のようなメッセージが。 

ファイルまたはアセンブリ 'System.EnterpriseServices.Wrapper.dll' 、
また はその依存関係の 1 つが読み込めませんでした。指定されたパスが見つかりません。


いろいろ調べると、問題の解消には、
どうも.NET Framework2.0の再インストールが必要な模様。。
ちなみに僕の環境には1.1、2.0、3.0、3.5、4.0の環境が入っています。

意を決して上から順番にアンインストール開始。
もしかしたらと思い、4.0をアンインストールした段階で再度試しましたが
問題は解消されていませんでした。およよ。。
結局2.0まで全部削除して

ここから2.0を再インストール。
Download Microsoft .NET Framework 3.5 Service Pack 1 from Official Microsoft Download Center

この時点で再テストすると問題は解消されていました。
また、このあと、おそるおそる3.5までは入れましたが、
問題なく動いています。

調査も含めると半日が潰れてしまいました。

どちらにお勤めですか?

コミュニティ向け開発に手をだしてみました。

タイトルは、そこの中で言われた質問です。

相手が組み込み系の方だったのもあり、
会社のことを知ってたのですが、
なんか面白くなさすぎたのが本音です。

なんででしょうか?
単純に究極を言うならば、
会社への愛社心なのかなと思います。

管理はいらんだろとは言いたくありませんし、
開発が厳しい世の中なのも知ってないます。
それでも、開発者をないがしろにする会社に
愛社心が芽生えるほどできた人間ではないのです。

そんなわけで、
あなたは自分の会社名を堂々と言えますか?

そんな湿っぽいブログで終わらせてしまおうかと思います。

テスト駆動開発をするために必要なこと

私はテスト駆動開発(以下、TDD)がほぼ導入されていない現場で働いています。
そんな職場にTDDを導入するために必要と思われることを挙げます。


オブジェクト指向開発の知識
良いリファクタリングを行うには、
ある程度のオブジェクト指向開発の知識が必要です。
クラスの継承、メソッドのオーバーライド、ポリモーフィズムなど。
デザインパターンも理解しているに越したことはありません。
ちなみにTDDを学ぶためのイベントTDD BootCampでも
TDD以前にある程度の開発能力が要求されると感じました。


・目指すべきコードの姿をイメージできること
リファクタリングはコードをきれいにする作業です。
どのようなコードがきれいなコードであるか、
良い基準を持っている必要があります。
Staticおじさんのような基準や、
すべて一メソッド内に書いてあるのが嬉しいというのでは
良いリファクタリングは望めません。


・少なからずの時間的余裕
TDDを行うと、プロダクトコードだけを書くのと比較して、
時間が120%必要となり、バグが半分になると言われているそうです。
つまり、TDDによくある批判としてある時間的工数の問題は
実在しているということです。
テストを書いたことが無い人であるなら尚更です。
テストコードを書くのは最初は難しいものです。
プロダクトコードだけ書いてギリギリという
時間しか与えられていないのであればTDDを行うのは難しいと考えます。
(これはTDDの、というよりは見積もりの問題です)


思いつくのはこんなところですが、
私の職場でいうと、まずオブジェクト指向開発の知識に
乏しい人が多いのでTDD導入以前の問題です><
また、一メソッド内にすべて書いてあるのが嬉しいというのも
最近職場で耳にした言葉ですw
TDDを絡めてオブジェクト指向の勉強会など開いて
なんとか改善したいところです。


◆これからTDDを導入したいという方へ
私がTDDを始めたきっかけとなったのは、
日本におけるTDDの第一人者である@t_wadaさんが仰られた、

アジャイル開発を始めるには複数人必要ですが、TDDは一人で始められます。
自分でTDDを始めて質の良いものを作り続ければ、いずれ周りも興味をもってくれるものです。
まずは自分でやって背中を見せましょう!


というお言葉でした。
周りに仲間がいなくても、まずは自分から、チャレンジしましょう!

テスト駆動開発入門

テスト駆動開発入門

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)