- <目次>
- IntelliJの概要とインストール
- ゼロからプロジェクトを作成する場合 (package指定なし)
- ゼロからプロジェクトを作成する場合 (package指定あり)
- デバッグしてみる
- 統合環境での開発に慣れよう。
- 小さなプログラムならターミナルやテキストエディタだけで開発してても問題無いこともあるが、複雑なシステムになってくると辛くなる。
- 実社会では統合環境の利用が当たり前。
- 最大派閥は Eclipse だが、情報工学科なので新しい統合環境を使ってみよう。一つに慣れれば別環境へも応用が効きやすいし。
- Java言語向けの統合環境。
- 公式サイト: IntelliJ
- Community Edition をダウンロード。
- ダウンロード終了したら、解答して「アプリケーション (Applications)」フォルダにドラッグ&ドロップしてインストール。
- IntelliJ起動
- SDK (Software Development Kit)の確認。
- Create New Project をクリックし、新規プロジェクト作成画面に移行。
- 左パネルから「Java」を選択した状態で、右パネルの「Project SDK」を確認。ここで Java 10 以上になっていればOK。
- なっていない場合には、SDKの指定が必要。
- 右側の New... をクリックして、
/Library/Java/JavaVirtualMachines/以下から JDK 10 を探して指定しよう。 - jdk-10.0.2なら、
/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Homeを選択し、Open。
- 公式サイト: IntelliJ
- 「Create New Project」を選択。
- 「Java」を選択。
- プロジェクト名を設定。
- ここでは FirstClass にしよう。
- どこにプロジェクトが保存されるのか確認すること。(ターミナルやFinderからでも辿れます)
- プロジェクト名を設定。
- デフォルトで作成される空プロジェクトの初期状態
- 左側のメニューがファイル操作パネル。
- プロジェクト名の左にある▶をクリックするとプロジェクト内のフォルダ・ファイル一覧を参照できる。
- 「.idea」は、IDEAアプリで使う管理用のフォルダ。
- 「src」は、薄い水色になっているはず。ソース(source)を置く場所として設定されている。
- 「.iml」拡張子imlは、Project Structureで設定した内容が保存されるらしい。
- 後で自動生成される「out」は、バイトコード等の自動生成されるファイルを置く場所。
- ターミナル上で「javac -d . ファイル名.java」とした場合と異なり、ソースコードやバイトコードを置く場所は「プロジェクトディレクトリからの相対パス」として設定されている。
- プロジェクト名の左にある▶をクリックするとプロジェクト内のフォルダ・ファイル一覧を参照できる。
- 左側のメニューがファイル操作パネル。
- ソースコードの作成
- Hello World と出力するだけのアプリを作成してみる。
- 「src」を右クリック(Ctrl+クリック)して、New から Java Class を選択。
- クラス名を「FirstClass」にしてOK。
- FirstClass.javaのテンプレートが用意されるので、下記のようにmainメソッドを作成しよう。コピペではなく手入力すると分かるが、様々な段階で入力補完をしてくれるはず。
- packageの指定は、今は不要。(ちょっとした動作確認をするだけのコードなので)
- 「src」を右クリック(Ctrl+クリック)して、New から Java Class を選択。
- Hello World と出力するだけのアプリを作成してみる。
public class FirstClass {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
-
作成し終えたら、Runメニューから「Run...」を選択し、今作成したクラス FirstClass を選んで実行しよう。
- この時点でエラーが出たらエラーが出なくなるまで修正。
- 正しく入力&実行できていたら、実行結果が下パネルに出力されるはず。
- PyCharmのように「Run」で実行できるが、実際には中間ファイルを生成し、中間ファイルをJVMで実行している点に注意。
-
補足
- IntelliJプロジェクト作成後は、IntelliJ起動画面からプロジェクトを指定して起動できる。
- IntelliJで作成したプロジェクトは、ファイル配置がプロジェクト専用になっている点に注意。
- 例えば、今回作成したFirstClass.javaの中間ファイルは
out/production/プロジェクト名/以下に生成されているはず。 - IntelliJで課題レポートを作成した場合、動作確認しやすいようにプロジェクト全体を提出するようにして下さい。
- 例えば、今回作成したFirstClass.javaの中間ファイルは
- IntelliJでプログラミングする際の流れの振り返り
- 新規作成時
- IntelliJ起動 -> 新規プロジェクト作成
- プロジェクトの種類を指定
- プロジェクト名を指定
- srcディレクトリの中にソースコードを作成
- Run
- 過去に作成したプロジェクトを再編集したい場合
- IntelliJ起動 -> 左パネル内からプロジェクトを探して起動
- 新規作成時
- packageを指定する場合、ファイルを準備する段階で指定する。(変更点はここのみ)
- ソースコードの作成
- Hello World と出力するだけのアプリを作成してみる。
- 「src」を右クリック(Ctrl+クリック)して、New から Java Class を選択。
- クラス名を「jp.ac.uryukyu.ie.tnal.FirstClass」のように「パッケージ名.クラス名」で指定する。
- tnalは各自のアカウントにすること。
- 「src」を右クリック(Ctrl+クリック)して、New から Java Class を選択。
- Hello World と出力するだけのアプリを作成してみる。
- 補足
- パッケージ指定したソースコードは、
src/パッケージ/以下に保存される。 - パッケージ指定したソースコードの中間ファイルは、
out/production/プロジェクト名/パッケージ/以下に保存される。
- パッケージ指定したソースコードは、
- ソースコードの編集
- FirstClass.javaを以下のように編集。(できるだけ手打ちしよう。いろんなところでIntelliJがサポートしてくれます)
- addメソッド追加。
- mainメソッド内から、addメソッドを呼び出し、実行結果をString型で用意して、標準出力。
- FirstClass.javaを以下のように編集。(できるだけ手打ちしよう。いろんなところでIntelliJがサポートしてくれます)
public class FirstClass {
public static int add(int a, int b){
int result = a - b;
return(result);
}
public static void main(String[] args){
System.out.println("Hello World!");
int result = add(1, 2);
String str = "1+2="+result;
System.out.println(str);
}
}
- FirstClass.javaを実行してみよう。
- 正しく編集できたなら、以下のように出力されるはず。
Hello World!
1+2=-1
- デバッグしてみよう。
- 基本的にはPyCharmでのデバッグと同じ。
- デバッグ作業の流れ
- ブレークポイントを指定。
- デバッグ実行。
- step over, step into, step out等を通してコードの動作を確認する。
- 要因特定できたら、修正案を検討・実装し、改めて動作確認する。
- ブレークポイントの指定。
- 今回はmainメソッドの1行目(Hello Worldを出力している行)に指定しよう。
- コードの左側に、「灰色背景で行番号」が並んでいるエリアがあるはず。このエリアの「行番号ではない、灰色背景部分」をクリック。ただしクリックできたら「赤丸」が付くはず。これがブレークポイント。
- 補足
- ブレークポイントは複数設定できる。
- ブレークポイントが不要になったら、赤丸をクリックすることで削除できる。
- 今回はmainメソッドの1行目(Hello Worldを出力している行)に指定しよう。
- デバッグ実行。
- Runメニューから「Debug」を選択。
- 指定したソースコードの中間ファイルが生成され、JVMで実行されるが、ブレークポイントに遭遇すると一時停止する。
- ソースコード中の「濃い青」でハイライトされてる状態が一時停止。この青い行の手前まで実行を終えている状態。�青い行はまだ実行されておらず、これから実行しようとしている。
- デバッグ実行時の進め方
- step over実行: 今いるスコープで1行実行して停止。
- step into実行: 今いるスコープで1行実行して停止。ただし、メソッド呼び出しの場合にはメソッドの中に入り、その1行目で停止。
- step out実行: 今いるスコープの最後まで実行する。ただし、メソッド呼び出しの場合にはそのメソッド呼び出し元に戻って停止する。
- 上記3つ(特に step over/into)の違いを確認してみよう。
- Runメニューから「Debug」を選択。
- 補足
- デバッガが起動している最中に「最初からデバッグ実行し直す」つもりでもう一度 Debug すると、その前のデバッガを動かしたまま、もう一つ新しくデバッガを起動することになる。
- デバッグ実行を終了するようにしよう。