やっぱりJavaって層が厚いんだよね

 「層が厚い」ってのは自分自身が積み上げたノウハウの厚さってだけで他の言語も厚いのかもしれないけど、とにかく今自分がJavaを中心とした開発でできていることを他の言語でやろうとするととてもじゃないけどやり切れないんですよ。

 具体的な話をしますね。

 まず、FindBugs。自動的にバグを見つけてくれるツールです。もちろん、業務ロジック的なバグなんてのは人間じゃなければ見つけられっこないわけですが私の場合だとif文の条件を反対に書いてしまってヌルポさせちゃうパターンなんかをいち早く見つけてもらって助かってます。それから、マルチスレッドプログラミングをするときもかなり助かります(waitとnotifyのかけかたがちぐはぐになっているのを見つけてくれたりしてくれます)。あと、オープンしたものをクローズしてないとかそういうのも見つけてくれますね。ビギナーに使わせると転ばぬ先の杖としてもかなり威力を発揮します。こんな素晴らしいツールがなんとタダ! 他の言語でもこういうのがあるのかもしれませんが、私は知りません。


 次に CheckStyle。私は、ちょっとした規模のプロジェクト等でソースコード規約を文書化してそれを読ませて、覚えさせるってのはナンセンスだと思っています。特に命名規約とかスペースの開け方なんてのは機械的にチェックすればいいと思っているので、こういうツールは必須。


 他にもカバレッジテストとか、そういう結果を見やすいようにWebページ化してくれるとか、要するにMavenのReportとsite機能なわけですが、そういうのを使ってると言語が良いか悪いかってだけの話じゃなくなるんですよね。


 RubyPythonはすごくいいとは思いますしPHPの手軽さも認めますけど、いざプロジェクトで使うとなると上記のようなことを克服しなければいけないので二の足を踏んでしまうわけです。同様にScalaもBetter Javaとはいえ、このへんがまだまだだなぁと思うわけですよ。FindBugsはクラスファイルを読んでるらしいのでScalaでも使えるんじゃないかと思っていますけど。せめてCheckStyle的なものは欲しいです。