プログラマでありたい

おっさんになっても、プログラマでありつづけたい

アジャイルな開発を支えるツールとマシンパワー

 最近、現場レベルだと当たり前のようにアジャイルな開発が導入されてきていると思います。要因としては色々あると思いますが、開発ツールの進化と個々人のマシンパワーが強力になってきたのも見過ごせないと思います。
 JavaでのWeb開発を例にすると、一昔前だとローカルにTomcatとDBを動かしてEclipseで開発してビルドなんかすると重くて使い物になりませんでした。そうなると、ローカルでコーディングしてソースを開発サーバに上げてビルドして動作確認というステップになります。開発サーバは共用なので好き勝手にビルドする訳にもいかず、ライブラリアンのような人間が必要になってきます。もっと昔になると、コンパイルに一晩とかあったとか。
 しかし今は一瞬でビルドが出来るようになっています。そうなると設計に時間をかけるより、さっさと動くものを作った方が早いよという話になると思います。よしんばバグがあったり要件と違っていたものと違っていたとしても、さっさと直してしまえば良いのです。設計コスト<開発コストから設計コスト>開発コストに移行しているのかなと感じます。(もちろんケースによります)


 というところで、アジャイルな開発で必須と思われるツール群です

1.モダンな言語
 贅沢は言いません。オブジェクト指向で作れれば良いのです。
 agileな開発では、ユニットテスト出来る言語というのが必須なのかと思います。
2.ローカルの開発環境
 自分のローカルの環境で完成系の形で動かせることは重要だと思います。
 実装して、ユニットテストして動くのを確認してからコミット
 Eclipseで殆どサポート出来るんですよね。
3.分散型バージョン管理
 Subversionも良いけど、分散コミットが出来ないのでgitとか
4.チケット管理
 TracかRedmine、どちらでも良いけど、誰がどのタスクをしているか
 かつ、ソースコードと連動するBTSも必須だと思います。
5.テストツール
 開発工程の中には、必ずユニットテストの作成をいれること
 後は、Seleniumのようなものを使ってUIのテストも自動化したい
 またそれをTestLinkで管理出来れば幸せ
6.ビルド・テストの自動化
 せっかくバージョン管理やユニットテストを頑張ってやっても、ビルド・テストの実施が手動だと行われません。
 ということで開発者に意識させずにビルド・テストを実行してくれる構成管理ツールが必須です。
 今だとHudsonの一択かな


 後、何かよいのないですかねぇ?