自分が理想とする開発環境
自分は以前から、開発者にとっていい環境とはなんだろうかな、と考えていました。
自分が思うに、開発者が好きなIDEを使い、危険なコードは極力ツール類で検出し、ビルドはコマンド一発できて、CIサーバによってビルドが壊れた状態などをいち早く認知する、
そうすることで、開発者は「関心ごとの分離」*1ができるんじゃないかなと思っています。
あと、自動化できることは自動化で、ということもやることで、同じ労力をかけても質と量ともに高くなるのではと思っています。
自分としては「レバレッジを利かせる」という表現がしっくりきています。
それで、そういうことができそうな理想とする開発環境、ということ考えてみました。
以前から漠然と思っていたり、こうなるといいんじゃないかなと思っていることを、まとめてみます。
一応、それなりの規模のJavaのプロダクトである、という前提です。
- SCM*2
- ITS(BTS)
- CI
- コミット後、即座にCIサーバがビルドを行い、結果をレポート
- 多種多様な静的解析ツール
- メモリリーリークやデットロック検出機構とテストフレームワーク
- プロファイリングツール
- GUIのテストフレームワーク
- 仮想化による迅速なテスト環境構築と、CIサーバの並列ビルド、複数環境ビルド
- IDEは開発者が好きなものをできれば選択できるように
- ビルドはコマンド一発で*3
- ビルドツールはIDEの対応があるもので*4
- 各IDE用のメタファイルはビルドツールが管理*5
- 個人が使うタスク管理ツール*6
- 各ツールの連携が上手く取れていること、もしくは連携できる別のツールがある*7
- 開発者による各種ツール開発、ツールのプラグイン開発
取り止めが無いですが、今のところ思いつく理想です。
理想は理想として現実は直視する必要はありますが、こういったことを目指して行きたいと思います。
とりあえず、目下SubversionやHudsonの導入を行っていこうとしてます。
道のりは長く実現できないものも出てくると思いますが、最終ゴールを明確にし直近のゴールを立てていこうと思います。
千里の道も一歩から