プロのエンジニアならみんな知ってる,開発を支援するツール3本
とか書こうと思ったのですが、akipiiさんに既に書かれてました。知人にも知っといてもらうと便利なツールなので紹介しておきます。
1.バージョン管理ソフト
SubversionとかGitとかMercurialとかBazaarとか。ソースファイルやテキストファイルをある場面で写真をとって、好きなときにその状態に戻せる、というと分かりやすいでしょうか。あと毎回ファイルの差分を見て保存してくれるとか。「分散」型と言われてる奴は、中央のリポジトリ置き場以外にも別の場所でコミットできるとか利点があります。
ちなみに
- Subversionは分散しない(SVKとかあったけど・・)
- Git/MercurialはWindows<->Linuxで特にファイル名が文字化けする
- Bazaarは遅い
とかいった問題があります。
この資料とかいいっすね http://tomykaira.github.com/HowToGit_tddbc/#intro
2.CIツール
ユニットテスト、GUIテスト、CIツールをうまく使うと、最初にテストコードを書いとけばあとはCI(Continuous Integration, 継続開発)ツールがコミットするたびに回ってテストが大量に実行出来るようになります。もちろんそれだけじゃすべてのテストはカバーできないしGUIとかきついのだけど、繰り返しコマンドで確認してるようなとこは明らかに作業量が減ります。
ユニットテストだとxUnit(JUnitとか)、GUIユニットだとSeleniumとかWindmillとかその他市販ツールとか。CIツールだとJenkinsとかBuildbotあたりでしょうか。
- Jenkins
- http://jenkins-ci.org/
3.Bug(Issue) Tracking System
最後。作業内容を書いたチケットを管理するソフトです。これはプログラマでなくてもサポートセンタなんかでも使えると思います。つか自分でToDo管理に使ってるし。
有名どころとしてはTrac(Trac Lightning/Kanon), Redmine, Jira, Mantisなどでしょうか。このへんは先日火ついて大決戦とかやってたりします。
さらに
これらのツール、ただ用意すれば幸せになるってわけでなくて、うまいこと使い方を考えないとダメです。
例えばGitでpush→Jenkins経由でビルド・結果表示→問題点をRedmineで整理とか。チケット管理単体でも出社時にチケットを確認して、緊急度の高い仕事から片付けるとか。あくまでツールを入れることが目標じゃなくてツールを入れることで作業が効率的になる方が重要。
さらにさらに
ちょっと関係ない話ですが、明後日7/15にJiraを出してるAtlassianが勉強会を開くそうです。平日ですがまだ空きはあるのでよかったらどうぞ。
http://atnd.org/events/16993