[ Home on 246net ]
Java プロジェクト規約の一例
TAKAHASHI, Toru
2010年10月23日着手
 |
はじめに |
 |
 |
プログラミング言語Javaを使って複数人数でソフトウェアを共同開発する「プロジェクト」を設けるときに、プロジェクトとして共通に定義しておくとよい規約があります。規約として整備する項目は何か、について整理し、規約のひとつの実現例を示すことによって、今後その他のプロジェクトを開始するときのベースラインとして活用できるようにします。 |
 |
 |
 |
 |
複数人数での開発で考えること
一人で作るプログラムであれば、表現されるものはたいてい一貫性が揃っています。しかし、複数人数で開発すると、あちこちと一貫性のない部分が生じます。そこで、一貫性がないことで不都合が生じる事柄についてはあらかじめ規約として定めておくことで、予防します。
一貫性がなくて不都合が生じる事柄
幾つか例と予防するための規約について列挙します。
- ソースファイルの改行コードがばらばら(LFとCRLF混在)
- ソースファイルの文字コードがばらばら(コンパイル時にエラーになる)
- 非publicなクラスがどのソースファイルに記述されているかばらばら(探すのに手間)
- ソースファイルを格納するディレクトリがばらばら(探すのに手間)
- ビルド方法、ビルドツールがばらばら(人のソースのビルドが分からないない)
- 実行形式がばらばら(クラスファイルのまま、JARファイル化までビルドしている)
- 依存するサードパーティ・ライブラリは何か、どこに置くのかばらばら(何のライブラリのどのバージョンを使用するのか分からない、かつクラスパスの設定をどうすればいいのか)
- プログラム実行時のコマンドライン引数の書式がばらばら(いちいち説明を探さないと指定方法が分からない)
- プログラムが読み込む設定ファイルの書式がばらばら(csv形式・XML形式・Javaプロパティ形式、ほか)
- ログの出し方がばらばら(System.out.println、Java標準ロギング、log4j、logback、他)
- ログの設定ルールがばらばら(カテゴリ名の付け方、出力レベル、出力内容)
- 環境変数が設定されてないと動かない(ばらばら)
- あるディレクトリやファイルが存在しアクセス権がないと動かない(ファイルの使用がばらばら)
- パッケージ・クラス・変数・メソッド名の命名がばらばら
- メソッドの引数・戻り値の使い方がばらばら
- エラー処理の入れ方がばらばら
- スレッドの使い方、排他処理の方法がばらばら
- ユニットテストがあったりなかったり、ばらばら
- バージョン管理方法がばらばら
- Javadoc生成すると説明記述がばらばら
ソースファイルの書き方を揃える − コーディング規約
コーディング規約の要素には以下があります。
- スタイル(インデント、空白の入れ方、改行の仕方、括弧の位置、など)
- 命名規約
- ドキュメント規約
- よいコーディングの指針
コーディング規約の決め方はいろいろありますが、最近のお勧めは、商用製品やオープンソースのソースコード静的検証ツールと組み合わせたルール定義です。スタイル、命名規約は静的検証ツールでチェックするので、これと組み合わます。また、エディタ(統合開発環境含む)をプロジェクトで統一する場合、エディタのインデント・スタイル設定を規約に合わせて作成し配布するとよいでしょう。
ドキュメント規約は、書籍「エンジニアのためのJavadoc再入門講座」(翔泳社刊)やWEB+DB PRESS Vol.51 特集2連動企画 Javadocリファレンス を参考に規定します。
よいコーディングの指針は、やはり書籍「Effective Java 第2版」(ピアソン刊)が定番です。
Javaのコーディング規約は日本語でもいくつか公開されているほか、書籍として刊行されているものがあります。しかし、ほとんどが2004年にリリースされたJ2SE 5.0で文法が大幅に追加される以前の古い規約です。参考にする場合、その点に留意するとよいでしょう。
ディレクトリの構成を揃える ー ディレクトリ規約
バージョン管理方法を揃える − バージョン管理規約
開発に使用するライブラリ・ツールの構成を揃える ー 開発環境規約
ビルドツール・方法を揃える − ビルド規約
ロギングの方法を揃える − ログ規約
エラー処理の方法を揃える − エラー処理規約
プログラムの実行方法を揃える − 実行環境規約
ユニットテストの作成方法を揃える − ユニットテスト規約