// 
//     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.
//

= 一般的なJavaアプリケーション開発
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: 一般的なJavaアプリケーション開発 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, 一般的なJavaアプリケーション開発

次のチュートリアルでは、NetBeans IDEでJava SEアプリケーションを開発する基本的な手順の一部を紹介します。このチュートリアルは、Javaアプリケーションを開発した経験があるユーザーを対象としています。手順の中で、アプリケーション開発に役立つIDEの機能を紹介していきます。

このチュートリアルでは、複数の単語それぞれから1文字ずつ取り、1つの単語を作成するアプリケーションを作成します。このような単語を_アクロスティック_といいます。

このチュートリアルを完了するのに要する時間は約30分です。時間の短い「Hello World」チュートリアルを行う場合は、link:quickstart.html[+NetBeans IDE Javaクイック・スタート・チュートリアル+]を参照してください。


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


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

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

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.4または8.0 

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


== プロジェクトの設定 

このチュートリアルで作成するアプリケーションは、次の2つのプロジェクトから構成されます。

* ユーティリティ・クラスを作成するJavaクラス・ライブラリ・プロジェクト。
* ライブラリ・プロジェクトのユーティリティ・クラスからメソッドを実装するメイン・クラスを含むJavaアプリケーション・プロジェクト。

プロジェクトを作成した後、アプリケーション・プロジェクトのクラスパスにライブラリ・プロジェクトを追加します。次に、アプリケーションをコーディングします。ライブラリ・プロジェクトには、`acrostic`メソッドがあるユーティリティ・クラスが含まれます。`acrostic`メソッドは、パラメータとして複数の単語の配列を使用し、それらの単語に基づいてアクロスティックを生成します。MyAppプロジェクトには、`acrostic`メソッドをコールし、アプリケーションの実行時に引数として入力される単語を渡すメイン・クラスが含まれます。

*注意:* 通常はこのような単純なアプリケーションに2つのプロジェクトは必要ありません。このチュートリアルでは、より複雑なアプリケーションに必要になる可能性がある機能を紹介するために、2つのプロジェクトを使用します。


=== [[Javaクラス・ライブラリ・プロジェクトの作成]] 

1. 「ファイル」>「新規プロジェクト」([Ctrl]-[Shift]-[N])を選択します。「カテゴリ」から「Java」を選択します。「プロジェクト」から「Javaクラス・ライブラリ」を選択します。「次」をクリックします。
2. 「プロジェクト名」に「`MyLib`」と入力します。「プロジェクトの場所」を使用コンピュータ上の任意のフォルダに変更します。以降、このチュートリアルでは、このディレクトリを`_NetBeansProjects_`と表記します。

*注意:* ここで指定したパスは、ウィザードの「プロジェクト・フォルダ」フィールドに`` /`_NetBeansProjects_`/MyLib/ ``のように表示されます。


[start=3]
. (オプション)「ライブラリの格納用に専用フォルダを使用」チェックボックスを選択し、ライブラリ・フォルダの場所を指定します。このオプションの詳細は、_NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG455[+他のユーザーとのライブラリの共有+]を参照してください。

[start=4]
. 「終了」をクリックします。「プロジェクト」および「ファイル」ウィンドウの両方にMyLibプロジェクトが表示されます。


=== [[Javaアプリケーション・プロジェクトの作成]] 

1. 「ファイル」>「新規プロジェクト」を選択します。「カテゴリ」から「Java」を選択します。「プロジェクト」で「Javaアプリケーション」を選択します。「次」をクリックします。
2. 「プロジェクト名」に「`MyApp`」と入力します。「プロジェクトの場所」が`_NetBeansProjects_`に設定されていることを確認します。
3. (オプション)「ライブラリの格納用に専用フォルダを使用」チェックボックスを選択します。
4. メイン・クラスとして`acrostic.Main`と入力します。
5. 「メイン・クラスの作成」チェックボックスが選択されていることを確認します。
6. 「終了」をクリックします。「プロジェクト」ウィンドウにMyAppプロジェクトが表示され、ソース・エディタに`Main.java`が表示されます。


=== [[コンパイル時クラスパスの構成]] 

MyAppはMyLib内のクラスに依存するので、MyLibをMyAppのクラスパスに追加する必要があります。MyLibをクラスパスに追加すれば、MyAppプロジェクト内のクラスがMyLibプロジェクト内のクラスを確実に参照でき、コンパイル・エラーが発生しません。また、MyAppプロジェクトでコード補完を使用して、MyLibプロジェクトに基づいてコードを入力できます。IDEでは、クラスパスは「ライブラリ」ノードで視覚的に表されます。

*ライブラリのユーティリティ・クラスをプロジェクトのクラスパスに追加する*

1. 次のイメージに示すように、「プロジェクト」ウィンドウでMyAppプロジェクトの「ライブラリ」ノードを右クリックし、「プロジェクトの追加」を選択します。

image::images/addproj.png[]


[start=2]
. `_NetBeansProjects_/`に移動して、`MyLib`プロジェクト・フォルダを選択します。「プロジェクトJARファイル」ペインに、プロジェクトに追加できるJARファイルが表示されます。実際にはまだMyLibのJARファイルをビルドしていませんが、JARファイルが一覧表示されることに注意してください。このJARファイルは、MyAppプロジェクトをビルド、実行したときに作成されます。

[start=3]
. 「プロジェクトJARファイルの追加」をクリックします。

[start=4]
. 「ライブラリ」ノードを展開します。MyLibプロジェクトのJARファイルがMyAppプロジェクトのクラスパスに追加されます。


== Javaソース・コードの作成と編集 

ここでは、Javaパッケージを作成し、アクロスティックを構築するために使用するメソッドを追加する必要があります。次に、`Main`クラスで`acrostic`メソッドを実装する必要があります。


=== Javaパッケージとクラス・ファイルの作成

1. 「MyLib」プロジェクト・ノードを右クリックし、「新規」>「Javaクラス」を選択します。新しいクラスに`LibClass`という名前を指定し、「パッケージ」フィールドに`org.me.mylib`と入力して「終了」をクリックします。ソース・エディタに`LibClass.java`が表示されます。
2. `LibClass.java`で、クラス宣言(`public class LibClass {`)の後の行にカーソルを置きます。
3. 次のメソッド・コードを入力または貼り付けます。

[source,java]
----

    public static String acrostic(String[] args) {
        StringBuffer b = new StringBuffer();
        for (int i = 0; i < args.length; i++) {
            if (args[i].length() > i) {
                b.append(args[i].charAt(i));
            } else {
                b.append('?');
            }
        }
        return b.toString();
                }
----

[start=4]
. 貼り付けたコードが正しくフォーマットされていない場合は、[Alt]-[Shift]-[F]を押して、ファイル全体を再フォーマットします。

[start=5]
. [Ctrl]-[S]を押して、ファイルを保存します。


=== Javaファイルの編集

ここでは、`Main.java`にいくつかのコードを追加しながら、ソース・エディタのコード補完機能およびコード・テンプレート機能(省略名)を説明します。

1. ソース・エディタで「`Main.java`」タブを選択します。Javaファイルが開いていない場合は、「プロジェクト」ウィンドウで「MyApp」>「ソース・パッケージ」>「acrostic」を展開し、`Main.java`をダブルクリックします。
2. `main`メソッドにある`//TODO code application logic here`コメントを削除します。
3. コメントのかわりに次のように入力します。

[source,java]
----

String result = Li
----

カーソルは`Li`の直後に置いたままにします。次の手順で、コード補完を使用して`Li`を`LibClass`に変えます。


[start=4]
. [Ctrl]-[Space]を押して、コード補完ボックスを開きます。

語の補完方法の候補一覧が表示されます。ただし、必要なクラス`LibClass`が一覧に含まれない可能性があります。


[start=5]
. 再び[Ctrl]-[Space]を押すとさらに候補が表示されます。

`LibClass`はこの一覧に含まれるはずです。


[start=6]
. 「`LibClass`」を選択し、[Enter]を押します。IDEは残りのクラス名を整理し、自動的にクラスのimport文を作成します。

*注意:* IDEでは、コード補完ボックスの上に、選択されたクラスまたはパッケージに関するJavadoc情報を表示する別のボックスも表示されます。このパッケージにはJavadoc情報がないため、ボックスにJavadocが見つからないというメッセージが表示されます。


[start=7]
. mainメソッドで、`LibClass`の後にピリオド(.)を入力します。再びコード補完ボックスが開きます。

[start=8]
. `acrostic(String[]args) `メソッドを選択し、[Enter]を押します。IDEによって`acrostic`メソッドの内容が入力され、`args`パラメータが強調表示されます。

[start=9]
. [Enter]を押して、パラメータとして`args`を設定します。

[start=10]
. セミコロン(;)を入力します。

最後の行は次の行のようになるはずです。


[source,java]
----

String result = LibClass.acrostic(args);
----

[start=11]
. [Enter]を押して、新しい行を開始します。次に`sout`と入力して、[Tab]を押します。省略名`sout`が`System.out.println("");`に展開され、引用符の間にカーソルが表示されます。引用符内に`Result=`、引用符の後に`+result`と入力します。

最後の行は次の行のようになるはずです。


[source,java]
----

System.out.println("Result = " + result);
----

[start=12]
. [Ctrl]-[S]を押して、ファイルを保存します。

*注意:* `sout`は、ソース・エディタで使用できる多くのコード・テンプレートの1つです。コード・テンプレートのリストを検索して編集するには、「ツール」>「オプション」>「エディタ」>「コード・テンプレート」を選択します。


== アプリケーションのコンパイルと実行 

プロジェクトを実行するには、メイン・クラスおよび実行時引数を設定する必要があります。

*注意:* デフォルトで、プロジェクトは有効になっている保存時にコンパイル機能を使用して作成されているため、IDEでアプリケーションを実行するためにコードを最初にコンパイルする必要はありません。詳細は、_NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG525[+単一のJavaファイルのコンパイル+]を参照してください。


=== メイン・クラスと実行時引数の設定

このプログラムの出力は、プログラムの実行時に指定する引数に基づきます。引数として、アクロスティックが「Hello」となる5つの単語を指定します。アクロスティックは、最初の単語の1文字目、2番目の単語の2文字目、3番目の単語の3文字目(以下同様)から組み立てられます。

*アプリケーションの実行時に使用するIDEの引数を追加する*

1. 「MyApp」プロジェクト・ノードを右クリックして「プロパティ」を選択し、ダイアログの左ペインで「実行」ノードを選択します。

メイン・クラスは、すでに`acrostic.Main`に設定されているはずです。


[start=2]
. 「引数」フィールドに`However we all feel zealous`と入力し、「OK」をクリックします。


=== アプリケーションの実行

アプリケーションを作成し、アプリケーションの実行時引数を指定できました。IDEでアプリケーションをテスト実行できます。

*IDEでアプリケーションを実行する*

1. 「MyApp」プロジェクトを右クリックし、「消去してビルド」を選択します。
2. 「実行」>「プロジェクトの実行」([F6])を選択します。

「出力」ウィンドウに、プログラムからの出力`Result=Hello` (引数としてプログラムに渡されたフレーズのアクロスティック)が表示されるはずです。


== アプリケーションのテストとデバッグ 

ここでは、JUnitを使用してプロジェクトに対するテストを作成および実行し、IDEのデバッガでアプリケーションを実行してエラーの有無を確認します。JUnitテストでは、`acrostic`メソッドにフレーズを渡し、表明を使用して予測される結果を示すことで、LibClassをテストします。


=== JUnitテストの作成

1. 「プロジェクト」ウィンドウで「`LibClass.java`」ノードを右クリックして、「ツール」>「JUnitテスト」>「テストを作成」([Ctrl]-[Shift]-[U])を選択します。

JUnitテストをIDEで初めて作成する場合は、「JUnitのバージョンを選択」ダイアログ・ボックスが表示されます。[Enter]を押してJUnit 4.xを選択し、「テストを作成」ダイアログ・ボックスに進みます。


[start=2]
. 「テストを作成」ダイアログ・ボックスで「OK」をクリックして、デフォルトのオプションでコマンドを実行します。IDEでは、`org.me.mylib`パッケージと`LibClassTest.java`ファイルが、別個の`test`フォルダに作成されます。このファイルを見つけるには、「テスト・パッケージ」ノード、「`org.me.mylib`」サブノードを順に展開します。

[start=3]
. `LibClassTest.java`で、`public void testAcrostic()`メソッドの本文を削除します。

[start=4]
. 行を削除した部分に次のコードを入力または貼り付けます。

[source,java]
----

System.err.println("Running testAcrostic...");
String result = LibClass.acrostic(new String[]
                  {"fnord", "polly", "tropism"});
                assertEquals("Correct value", "foo", result);
----

[start=5]
. [Ctrl]-[S]を押してファイルを保存します。


=== JUnitテストの実行

1. 「MyLib」プロジェクト・ノードを選択して、「実行」>「プロジェクト(MyLib)をテスト」を選択するか、[Alt]-[F6]を押します。「出力」ウィンドウに「`MyLib (test)`」タブが開きます。JUnitテスト・ケースがコンパイルされて、実行されます。JUnitテスト結果で、テストに合格したことが示されます。
2. プロジェクト全体をテストするのではなく、1つのテスト・ファイルを実行することもできます。ソース・エディタで「`LibClass.java`」タブを選択し、「実行」>「ファイルをテスト」を選択します。

IDEにはJUnit APIに関するドキュメントが付属します。「ヘルプ」>「Javadoc参照」>「JUnit `_VersionNumber_`」を選択します。

JUnitの詳細は、link:http://www.junit.org[+http://www.junit.org+]を参照してください。


=== アプリケーションのデバッグ

この項では、デバッガを使用してアプリケーションのステップ実行を行い、アクロスティックが組み立てられたときの変数の値の変化をウォッチします。

*デバッガでアプリケーションを実行する*

1. `LibClass.java`ファイル内の`acrostic`メソッドに移動し、`b.append(args[i].charAt(i));`内の任意の位置に挿入ポイントを置きます。[Ctrl]-[F8]を押して、ブレークポイントを設定します。
2. 「デバッグ」>「プロジェクトのデバッグ」([Ctrl]+[F5])を選択します。IDEでデバッガ・ウィンドウが開き、ブレークポイントに達するまで、デバッガでプロジェクトが実行されます。
3. IDEの下部にある「ローカル変数」ウィンドウを選択し、「`args`」ノードを展開します。文字列型の配列に、コマンド引数として入力したフレーズが含まれています。
4. [F7]を押し(または「デバッグ」>「ステップ・イン」を選択し)、プログラムのステップ実行によって、アクロスティックが構築されたときの`b`変数の変化をウォッチします。

プログラムの最後に到達すると、デバッガ・ウィンドウが閉じます。

詳細は、link:junit-intro.html[+NetBeans IDEでのJUnitテストの記述+]を参照してください。


== アプリケーションのビルド、実行、および配布

アプリケーションが正しく動作することを確認したら、そのアプリケーションをIDEの外部にデプロイする準備ができます。この項では、アプリケーションのJARファイルをビルドし、コマンド行からJARファイルを実行します。


=== アプリケーションのビルド

IDEのメインのビルド・コマンドは、「消去してビルド」コマンドです。「消去してビルド」コマンドは、以前にコンパイルされたクラスとその他のビルド・アーティファクトを削除し、プロジェクト全体を最初から再ビルドします。

*注意:* 古いビルド・アーティファクトを削除しないビルド・コマンドもありますが、このコマンドはデフォルトで無効になっています。詳細は、_NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG512[+Javaプロジェクトのビルドについて+]を参照してください。

*アプリケーションをビルドする*

* 「実行」>「プロジェクトを消去してビルド」([Shift]+[F11])を選択します。

Antビルド・スクリプトの出力が、「出力」ウィンドウに表示されます。「出力」ウィンドウが表示されない場合、「ウィンドウ」>「出力」>「出力」を選択し、手動で開くことができます。

プロジェクトを消去してビルドした場合、次のことが発生します。

* 以前のビルド・アクションで生成された出力フォルダが削除(「消去」)されます。ほとんどの場合、`build`フォルダおよび`dist`フォルダです。
* `build`フォルダおよび`dist`フォルダは、プロジェクト・フォルダ(以後_PROJECT_HOME_フォルダと呼ぶ)に追加されます。これらのフォルダは、「ファイル」ウィンドウで表示できます。
* すべてのソースは、_PROJECT_HOME_`/build`フォルダにある`.class`ファイルにコンパイルされます。
* プロジェクトが含まれたJARファイルが`_PROJECT_HOME_/dist`フォルダ内に作成されます。
* プロジェクトのライブラリを指定した場合(JDKに加えて)、`dist`フォルダに`lib`フォルダが作成されます。ライブラリが`dist/lib`にコピーされます。
* JARにあるマニフェスト・ファイルが更新され、プロジェクトのクラスパスにあるメイン・クラスとライブラリを指定するエントリが含まれます。

*注意:* IDEの「ファイル」ウィンドウで、マニフェストの内容を表示できます。プロジェクトをビルドした後に、「ファイル」ウィンドウに切り替え、`dist/MyApp.jar`に移動します。JARファイルのノードを展開し、`META-INF`フォルダを展開します。次に、`MANIFEST.MF`をダブルクリックしてソース・エディタのマニフェストを表示します。


[source,java]
----

Main-Class: acrostic.Main
            Class-Path: lib/MyLib.jar
----

マニフェスト・ファイルの詳細を調べるには、Javaチュートリアルのlink:http://java.sun.com/docs/books/tutorial/deployment/jar/manifestindex.html[+この章+]を読んでください。


=== IDEの外部でのアプリケーションの実行

*IDEの外部でアプリケーションを実行する*

1. システムで、コマンド・プロンプトまたはターミナル・ウィンドウを開きます。
2. コマンド・プロンプトで、ディレクトリを`MyApp/dist`ディレクトリに変更します。
3. コマンド行に、次の文を入力します。

[source,java]
----

                java -jar MyApp.jar However we all feel zealous    
----

アプリケーションが実行され、次のイメージに示すように次の出力が返されます。


[source,java]
----

Result = Hello
            
----
[.feature]
--
image::images/command-prompt-smaller.png[role="left", link="images/command-prompt.png"]
--


=== アプリケーションの他のユーザーへの配布

IDEの外部でアプリケーションが動作することを確認したので、アプリケーションを配布する準備ができました。

*アプリケーションを配布する*

1. システム上で、アプリケーションJARファイル(`MyApp.jar`)と、`MyLib.jar`を含む付属の`lib`フォルダを含むZIPファイルを作成します。
2. このアプリケーションを使用する人に、ファイルを送信します。ZIPファイルを展開するよう指示し、`MyApp.jar`ファイルと`lib`フォルダが同じフォルダにあることを確認します。
3. ユーザーに、前述の<<running-outside-IDE,IDEの外部でのアプリケーションの実行>>の項の手順に従うように指示します。


== その他の共通タスク

チュートリアルの主要部分は完了しましたが、まだ、カバーされていないいくつかの基本タスクがあります。この項には、それらのタスクがいくつか含まれています。


=== IDEで使用可能なJavadocの作成

NetBeans IDEでJavaSE APIのドキュメントを参照するには、「ソース」>「ドキュメントを表示」コマンドを使用するか、メイン・メニューから「ウィンドウ」>「IDEツール」>「Javadocドキュメント」を選択して、別のウィンドウでAPIのドキュメントを表示します。

ただし、いくつかの他社製のライブラリには、APIドキュメントを使用できません。その場合、Javadocリソースを手動でIDEに関連付ける必要があります。

*Javadocを表示コマンドで使用可能なJavadoc APIドキュメントを作成する*

1. Javadoc APIドキュメントのソースをダウンロードします(詳細はlink:http://wiki.netbeans.org/FaqJavaDoc#Adding_the_JDK_Javadoc_to_the_NetBeans_IDE[+FaqJavaDoc+]ページを参照してください)。
2. 「ツール」→「Javaプラットフォーム」を選択します。
3. 「Javadoc」タブをクリックします。
4. 「ZIP/フォルダを追加」ボタンをクリックし、システム上のJavadoc APIドキュメントを含むZIPファイルまたはフォルダに移動します。ZIPファイルまたはフォルダを選択し、「ZIP/フォルダを追加」ボタンをクリックします。
5. 「閉じる」をクリックします。


=== プロジェクトのJavadocの生成

クラスに追加したJavadocコメントに基づいて、プロジェクト用にコンパイルされたJavadocドキュメントを生成できます。

*Javadocドキュメントを生成する*

1. MyLibプロジェクトを選択します。
2. IDEのメイン・メニューから「実行」>「"MyLib" のJavadocを生成」を選択します。
生成されたJavadocは、プロジェクトの`dist`フォルダに追加されます。また、IDEはWebブラウザを開いてJavadocを表示します。
link:/about/contact_form.html?to=3&subject=Feedback:%20Developing%20General%20Java%20Applications[+このチュートリアルに関するご意見をお寄せください+]



== 次の手順

NetBeans IDEを使用してJava SEアプリケーションを開発する方法の詳細は、次のリソースを参照してください。

* link:javase-deploy.html[+デスクトップJavaアプリケーションのパッケージ化とデプロイ+]
* link:annotations.html[+NetBeans IDEでの注釈プロセッサのサポート+]
* link:debug-multithreaded.html[+マルチスレッド・アプリケーションのデバッグ+]
* link:../../trails/java-se.html[+一般的なJava開発の学習+]
* link:../../trails/matisse.html[+JavaおよびJavaFX GUIの学習+]
* link:../../index.html[+NetBeans IDEドキュメントとサポート+]
* _NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366[+Javaプロジェクトの作成+]
