Javaにおける開発インフラまわりのメモ

Javaで開発する場合に使う可能性があるツール類(おもにインフラまわり)をメモっておきます。テスト関係はあんまりないです。その辺はJavaにおける開発・Test(Unit/Web/負荷)環境のまとめ - よねのはてななどを参考に。

構成管理ツール

ツール名 URL 現行バージョン
Subversion http://subversion.tigris.org/ 1.6.3

さすがに今やこれは鉄板といってもいいでしょう。

Eclipseプラグインとしては僕はSubclipseを使っています。
Subversiveでもいいんでしょうけど以前試してみて不安定だったのでやめました(不安定だったのは違う原因かもしれないけどw)。

TortoiseSVNも必須ですね。

というのも例えばtrunkの下が以下のようになっている場合Subclipseだとexample-porject/build.xmlが取れないからね。svnコマンドでいいじゃんという突っ込みはありそうですが。:-)

example-porject/
  |
  common/     
  |  |
  |  .project
  |  .classpath
  |  build.properties
  |  build.xml
  |
  launcher/   
  |  |
  |  .project
  |  .classpath
  |  build.properties
  |  build.xml
  web-app/    
  |  |
  |  .project
  |  .classpath
  |  build.properties
  |  build.xml
  |
  build.properties
  build.xml  こいつが上記3つのbuild.xmlを呼び出す。

バグトラッキングシステム

ツール名 URL 現行バージョン
Trac http://trac.edgewall.org/ 0.11.5
Redmine http://www.redmine.org/ 0.8.4
Mantis http://www.mantisbt.org/ 1.1.8
JIRA http://www.atlassian.co.jp/software/jira/ 3.13.4

TracPythonベース。RedmineRailsベース。使うDBそれぞれSQliteMySQLが標準的だろう。そのためかTracの方がバックアップしやすいだろう。僕はTracを3年ほど使っていてとくに不満は無い。ただ小規模向きかなという気はする。Redmineは少し試してみたが多機能で大規模向きという感じ。標準でガントチャートもある。Tracとの違いで大きいのはマルチプロジェクト対応であることとチケットの親子関係を定義できることだろう。ここでいうプロジェクトはリポジトリの意味。TracSubversionとセットなので1インスタンス1プロジェクトだが、Redmineは複数のリポジトリを扱える。インストールの手間はどっちも結構大変という印象がある。TracにはTracLightningという後述のHudsonやMaven等を含んだオールインワンパッケージがあるのでその点はいいかも。ごりごりカスタマイズするならTracかな。プラグインも豊富だし。

Redmineの参考URLとしてはこの辺かな。

MantisはPHPベース。Tracよりワークフローを細かくできるみたい。JIRAは有償。まあ悪くない。

継続的インテグレーション

ツール名 URL 現行バージョン
Hudson https://hudson.dev.java.net/ 1.317
CruiseControl http://cruisecontrol.sourceforge.net/ 2.8.2

ま、ほかにもあるけどこれはHudsonがいいとおもう。CruiseControlもいいが、セットアップの簡単さ、日本語化されている、プラグインが豊富という点でHudsonのほうがいいと思う。

開発者による記事も参考になる。

ビルド管理ツール

ツール名 URL 現行バージョン
Ant http://ant.apache.org/ 1.7.1
Maven http://maven.apache.org/ 2.2

CIするにはビルドを自動化しないといけないわけだが、まあ上記の2択だろう(Gantもあるようだがよく知らないのでw)。

AntはMavenに比べてシンプルでわかりやすいのだが、冗長になりやすく大規模プロジェクトになるとbuild.xml地獄になる危険性がある。Mavenはビルドを宣言的に書くので記述は少なくてすむ一方、わかりにくい。Mavenプラグインの品質もあまり良くないらしいので必要以上にいろいろやろうとするとハマりやすいだろう。スナップショットリポジトリが変わってビルドが通らなくなったことが有るので、インハウスのリポジトリも用意したほうがいいかもしれない。あと依存関係の解決などはMavenにまかせてパッケージングはAntでやるといいらしい。

Mavenの参考URLはこの辺り

インスペクションツール

ツール名 URL 現行バージョン
FindBugs http://findbugs.sourceforge.net/ 1.3.9
PMD http://pmd.sourceforge.net/ 4.2.5
CheckStyle http://checkstyle.sourceforge.net/ 5.0

FindBugsバイトコード解析でそれ以外は静的解析。

まあ僕は仕事で商用の静的解析ツールを担当しているので上記3つ(商用ならJTest)はライバルなわけだ。一番メジャーなのはFindBugsだと思うが正直そんなにいいとは思わない。だって指摘されてもどう直せばいいかよくわからんのだw 玄人向けツールな気がする。

テスト管理ツール

ツール名 URL 現行バージョン
TestLink http://testlink.org/wordpress/ 1.8.3

おそらくこの分野はExcelとファイルサーバがもっとも活躍しているところ。言い換えるともっとも効率化が望まれている分野でもある。

TestLinkPHPベースのWebアプリでDBはMySQLを使う。

Excelのインポートもできるみたいでよさげなのだが、慣れるまで時間かかりそう。Trac/Redmineの要件をベースにテストケースを作成し、バグを見つけたらTrac/Redmineに登録とかできたらよさげ。後半はできるようだが前半ができない模様。

TestLinkの参考URLとしてはこの辺かな。

コードレビューツール

ツール名 URL 現行バージョン
Peer Review Plugin http://trac-hacks.org/wiki/PeerReviewPlugin ?
Review Board http://www.review-board.org/ 1.0

Peer Review PluginはTracプラグイン。diffが見れないのでちょっとつらいかも。Review BoardはDjangoベース。インストール大変、使い方がよくわからんw

統計ツール

ツール名 URL 現行バージョン
StatSVN http://www.statsvn.org/ 0.5.0

Subversionのコミットログをもとにステップ数やコミット数などの統計情報を表示するツール。結構面白い。金曜にバグを発生させるコミットが多い: プログラマの思索らしいのでプロジェクトの状況を判断する材料としては参考になるかも。