今日も僕は定時で帰る!!

コーティング

「アノテーション」って何?アノテーションの使い方を解説

Javaのプログラムを組むうえで「アノテーション」というキーワードが出てきます。
「アノテーション」とは何でしょうか?

アノテーションとはコーディング中の「注釈」を意味する言葉で、コードを書くときに大切な情報に印をつけることができるものです。

アノテーションをつけることで、Javaのコードがより見やすくなるだけでなく、ドキュメント(Javadoc)を出力した時に大事な情報としてコメントされます。
いきなり、ドキュメントの「javadoc」というキーワードが出てきてしまったので、以下の順番で説明していきたいと思います。

「Javadoc」とは

「Javadoc」とはJavaのコードから出力できるドキュメント(クラス仕様書)にあたり、プログラムコードにコメント(アノテーション)を記述することで、ドキュメントを出力した時に意味のある説明文として出力できます。

以下のプレグラムを例に説明していきたいと思います。

例えば上記プログラムをドキュメント(javadoc)として出力した場合、下記のようなドキュメントが出力されます。

わかりましたでしょうか?プログラムのコメントに記述した「@param」、「@return」の内容がドキュメント(javadoc)では「パラメータ」、「戻り値」として出力されています。

「アノテーション」とは

先ほど説明した通り、ざっくり行ってしまえば、プログラム中の「@param」「@return」など「@(アットマーク)」から始まるコメントやコードをアノテーションと言います。

具体的にアノテーションを記述する箇所は

  • クラス宣言
  • インタフェース宣言
  • メソッド
  • メンバ変数
  • コード中の記載が必要な個所

などがあげられます。

注釈の為に必要なアノテーションですが、記述することで多くの役割を果たします。

例えば

  • 後で見直しが必要な個所への目印
  • コンパイラの警告メッセージを出なくする
  • プログラムの動作を変更させる
  • 他のプログラマーにコーディング規約を知らせる
  • スペルミスをしたときにエラーを出せる

などなど。

よく使われる「アノテーション」

実際にどのようなアノテーションがあるのか、よく使われるアノテーションと意味を説明します。
ここで説明しているアノテーションはごく一部ですが、最低限このくらい覚えていれば開発時に役に立つでしょうという内容をピックアップしています。

プログラムの実装でよく利用するアノテーション

アノテーション 意味・役割
@Override

スーパークラスのメソッドをオーバーライドしていることを明示的にします。

(オーバーライドされたメソッドであることが視覚的にわかりやすくします)

@Deprecated

メソッドの仕様が非推奨であることを明示的にします。

利用すると警告メッセージがコンパイル時に表示されるようになるが、下位互換などの理由により、削除できない(残す必要がある)場合に利用します。

@SuppressWarning

コンパイル時のエラーを非表示にすることができます。

コンパイル時に警告が出るが、あらかじめ問題ないことが保証されており、強引に警告を無視したい場合に利用します。

Javadocを意識する為によく利用するアノテーション

アノテーション 意味・役割
@author

プログラムを開発した人の名前を記述します。

@version

クラスやメソッドのバージョンを記述します。

@param

コンストラクタやメソッドに引き渡す引数の説明を記述します。

@return

メソッドの戻り値の説明を記述します。

@exception

メソッド内で発生する例外情報の説明を記述します。

チーム内で情報共有の為によく利用するアノテーション

アノテーション 意味・役割
@TODO

あとで追加、修正するべき機能や処理の場合に記述します。

(仕様が未確定の場合など、やり残している点があることを意味します。)

@NOTE

経緯などの説明を記述します。(なぜこうなったか?など)

わかりましたでしょうか?アノテーションの役割や便利さが・・・。