// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDEでの注釈プロセッサのサポート
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでの注釈プロセッサのサポート - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでの注釈プロセッサのサポート

_Jesse Glick氏によって寄稿されたサンプル_



image::images/netbeans-stamp-80-74-73.png[title="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます"]

この2部構成のチュートリアルでは、IDEで注釈プロセッサをプロジェクトにアタッチして、コーディング中に使用する方法を示します。NetBeans IDEには、カスタム注釈プロセッサのサポートが組み込まれています。プロジェクトで実行する注釈プロセッサを指定したり、コード補完およびナビゲーションによって注釈処理の結果を直接Javaエディタで確認したりできるようになり、使いやすくなりました。

link:annotations-lombok.html[+1つ目のチュートリアル+]では、サードパーティの注釈プロセッサであるlink:http://projectlombok.org/[+プロジェクトLombok+]をNetBeans IDEで使用する方法を示します。

link:annotations-custom.html[+2つ目のチュートリアル+]では、自身で記述した注釈プロセッサをプロジェクトに追加する方法を説明します。この部分のチュートリアルのサンプル・コードは、Jesse Glick氏によって寄稿されました。

*このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。*

|===
|ソフトウェアまたはリソース |必須バージョン 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit (JDK)+] |バージョン7または8 
|===


== 概要

_注釈_は、アプリケーションの要素に関するメタデータを保持するために使用される、Javaプログラミング言語の機構です。注釈には、デプロイメント時または実行時に、コンパイラが注釈付き要素を処理する方法についてのメタ情報が保持されています。つまり注釈は、他のプログラムおよびツールが処理できる、コードへのコメントです。

カスタム注釈を使用すると、アプリケーションの一部(著作権情報やテスト・メソッドなど)のマーク付け、コードの自動生成、コマンド行オプションの解析、Webサービスの開発などの様々な作業を実行できます。カスタム注釈の処理方法についての情報は、カスタム注釈プロセッサを通してJavaコンパイラに渡されます。JDK 6にはlink:http://www.jcp.org/en/jsr/detail?id=269[+JSR 269+]が実装され、注釈プロセッサを記述するための公式APIが提供されています。独自のカスタム注釈プロセッサを記述するか、またはサードパーティのソリューションを使用できます。

JDK 6の注釈の基本的な情報については、次のリソースを参照してください。

* Java SEのドキュメント - link:http://download.oracle.com/javase/6/docs/technotes/guides/language/annotations.html[+注釈+]
* Java SEのチュートリアル - link:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html[+注釈+]

実際には、注釈は、Java EE仕様の一部であるJPA (Java Persistence API)、およびJAXB (Java Architecture for XML Binding)などの他の技術と組み合せて最も広く使用されています。JPAを使用すると、後で記憶域に持続できるエンティティとしてJavaクラスに注釈を付けられます。JPAベースのアプリケーションを開発するには、IDEにバンドルされているEclipseLinkなどのフレームワークを使用するのが便利です。NetBeans IDEでJPAベースのアプリケーションを記述するための出発点として、link:../javaee/javaee-gettingstarted.html[+Java EEアプリケーションの開始+]を参照してください。


== 注釈処理のjavacオプションとIDEコマンドのマップ

前述したように、Java SE 6のjavacでは注釈処理がJavaコンパイラの統合機能として取り入れられました。コンパイラは、デフォルトで自動的にユーザー・クラス・パスで注釈プロセッサを検索します(注釈処理が明示的に無効にされている場合を除く)。さらに、javacオプションを使用することで、検索パスや特定の注釈プロセッサのパスを指定できます。次の表では、注釈処理に関連するjavacオプションと、対応するIDEのコマンドのマップが確認できます。JDK 6のjavacオプションの詳細は、link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html[+javac - Javaプログラム言語コンパイラ+]を参照してください。

*注意:*IDEでは、NetBeansプラットフォーム・アプリケーションを除くすべてのJavaアプリケーションの注釈処理オプションが「プロジェクト・プロパティ」ウィンドウで指定されます。プロジェクトの「プロパティ」ウィンドウを開くには、プロジェクトを右クリックし、「プロパティ」を選択します。

|===
|Java 6のjavacオプション |IDEのコマンド |説明 

| ``-processor``  |

「プロジェクト・プロパティ」>「ビルド」>「コンパイル」>「注釈プロセッサ」フィールド

「注釈プロセッサ」フィールドで、注釈プロセッサの完全修飾名を指定します。

 |実行する注釈プロセッサを明示的に指定します。このオプションを使用すると、サービス・プロバイダの構成ファイル(META-INF/services/javax.annotation.processing.Processor)を作成する必要がなくなります。 

| ``-proc:none``  |

「プロジェクト・プロパティ」>「ビルド」>「コンパイル」>「注釈処理を有効にする」チェックボックス

このチェックボックスを無効にすると、どのような注釈処理もされずにプロジェクトがコンパイルされます。

 |どのような注釈処理もされずにコンパイルが処理されます。コンパイル中に注釈プロセッサ検出機構は使用されません。 

| ``-processorpath``  |

「プロジェクト・プロパティ」>「ライブラリ」>「プロセッサ」タブ

注釈プロセッサが含まれているIDEプロジェクト、ライブラリ、またはJARファイルのパスを指定します。このオプションは、注釈プロセッサと注釈が別々のJARファイルにパッケージ化されている場合に使用します。

 |注釈プロセッサを検索する場所を指定します。このオプションが指定されていない場合は、クラスパスでプロセッサが検索されます(次を参照)。 

| ``-classpath``  |

「プロジェクト・プロパティ」>「ライブラリ」>「コンパイル」タブ

注釈プロセッサおよび注釈宣言が含まれているIDEプロジェクト、ライブラリ、またはJARファイルのパスを指定します。このオプションは、注釈プロセッサと注釈が単一のJARファイルにパッケージ化されている場合に使用します。

 |ユーザー・クラス・ファイル、および(オプションで)注釈プロセッサとソース・ファイルを検索する場所を指定します。-processorpathオプションが指定されていない場合は、このパスで注釈プロセッサが検索されます。 

| ``-A_key[=value]_``  |

「プロジェクト・プロパティ」>「ビルド」>「コンパイル」>「プロセッサ・オプション」フィールド

プロジェクトに関連付けられている注釈プロセッサに渡すオプションを追加します。この値はオプションです。

 |(オプション)注釈プロセッサに渡すオプション。 
|===

 


== 次の手順

IDEでの注釈の使用方法を学習するには、次のチュートリアルの各パートを参照してください。

* link:annotations-lombok.html[+パートI: カスタム注釈のためのプロジェクトLombokの使用+]
* link:annotations-custom.html[+パートII: IDEでの独自のカスタム注釈プロセッサの使用+]

link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20the%20NetBeans%20IDE[+このチュートリアルに関するご意見をお寄せください+]
