システムデザイン

Java開発の手引き IDE(Eclipse)の使い方編

*本記事は旧TechblogからCOLORSに統合した記事です。

はじめに

初めてJava開発現場に入場する人向けの手引きとして、現場でよく使われるIDE(Eclipse)の基本的な使い方をまとめました。現場の導入資料や覚えるまでの備忘録としてお使いいただけたら嬉しいです。

目次

  1. Eclipce画面名称
  2. リソースを検索して開く
  3. コード補完(メソッドの呼出)
  4. コード補完(エラー修正)
  5. リファクタリング(名前変更)
  6. ビルド
  7. 実行
  8. ショートカット一覧

1.Eclipse画面名称

Eclipseとは?

IDE( 統合開発環境:Integrated Development Environment)の一つで、ほとんどのJava開発現場で使用されています。
エディタのソースコード補完機能やコンパイルはもちろん、プラグインで機能を追加することができます。 (Java以外の開発も可能です)

Eclipse画面の名称

Eclipseの画面の名称を覚えておくと、現場での説明やマニュアルの理解が容易になりますので、覚えておきましょう。

Eclipseの画面

①メニュー
Eclipseで使用できる機能の呼び出しのほか、Eclipse自体の設定を呼び出すことができます。
②エディタ
ソースエディタです。フォーマットやコード補完機能を使用することができます。
③ビュー
ファイルエクスプローラや実行結果を出力するコンソールなどを必要に応じて追加することができます。また、ドラッグすることで表示位置を変更可能です。
メニューの「ウィンドウ」→「ビューの表示」で追加することができます。
④パースペクティブ
青枠で囲んだ、エディタとビューの組み合わせをパースペクティブと呼びます。
画像では「Java」パースペクティブが選択されている状態で、「コンソール」ビューや「パッケージ・エクスプローラー」ビューが表示されます。
パースペクティブは各目的に沿った組み合わせが設定されており、例えば、前述したWebアプリケーション開発向けの「J2EE」用のパースペクティブを選択した場合、上記に加えて「サーバー」ビューが表示されます。

2.リソースを検索して開く

既存のリソースを参照したり、修正を行う場合、対象のリソースは以下の手順でエディタに開くことができます。

2.1 対象の場所、名前がわかる場合は 「パッケージ・エクスプローラービュー」から

パッケージ・エクスプローラー ビューから、ソースフォルダ→対象リソースのパッケージ→対象リソースを選択すると、エディタに開くことができます。

2.2 対象の名前がわかる場合は「リソースを開く」「型を開く」から

・リソースを開く

修正対象の機能IDなど、リソースの名前が一部わかっている場合、「リソースを開く」を使用すると、直接対象ファイルをエディタに開くことができます。

【操作】

エディタ上で「Ctrl+Shift+R」を入力
リソースを開くダイアログに対象リソース名を入力
前方一致※であてはまるリソースの一覧が表示されるので、目的のリソースを選択
※先頭をワイルドカード(*)にすることで部分一致検索が可能

型を開く

ライブラリのクラスなど、コンパイル後のファイル(.class)しか存在しない場合、リソースを開くの対象外となるため、「型を開く」で開くことができます。
※参照のみ

【操作】

エディタ上で「Ctrl+Shift+T」を入力
型を開くダイアログに対象型名を入力
以降はリソースを開くと同様

2.3 処理から追いたい場合は「宣言を開く」「実装を開く」「 呼び出し階層を開く 」から

処理から、呼び出し先 、呼び出し元のソースコードを開きたい場合は、以下の操作を使用します。

宣言を開く

宣言クラスが「インターフェイスクラス」の場合、その「インターフェイスクラス」を、
「実装クラス」の場合、その「実装クラス」を開きます。

【操作】

呼び出し箇所上にカーソルがある状態でCtrlを押下→「宣言を開く」

例)宣言を開くを選択
例)インターフェイスクラスに対して実行した場合、インターフェイスクラスが開く

・実装を開く

宣言クラスが「インターフェイス」の場合、インターフェイスを実装する「実装クラス」を、
「実装クラス」の場合、その「実装クラス」を開きます。

【操作】

呼び出し箇所上にカーソルがある状態でCtrlを押下→「実装を開く」

例)宣言を開くを選択
例)インターフェイスクラスに対して実行した場合、実装クラスが開く

呼び出し階層を開く

処理を呼び出している箇所を開きます。
「呼び出し階層」ビューに、呼び出し階層が出力されます。

【操作】

呼び出し元を知りたい処理上にカーソルがある状態で「Ctrl+Alt+H」または「右クリック→呼び出し階層を開く」

例)呼び出し階層ビューに呼び出し元が出力される

3.コード補完(処理の呼出)

コード補完で処理を呼び出す

既存の処理を呼び出す場合は、コード補完を利用すると便利です。
コード補完を利用して処理を記述すると、処理名の補完だけではなく、その処理を持つクラスのimport文も自動的に入力されます。

【操作】

処理を呼び出したい箇所で「クラス名.」を入力し、「Ctrl+Space」を入力→候補から呼び出したい処理を選択
※クラス名の入力も、コード補完を使用可(後述のショートカット一覧参照)

(補足)コード補完で目的の処理が見つからない場合

コード補完を使用して、目的の処理が候補に出力されない場合、以下を確認してください。

  • インターフェイスと実装クラスの確認
  • アクセス修飾子の確認
  • クラスとインスタンスの確認
※インターフェイスと実装クラスの確認

宣言している型がインターフェイスの場合、実態に処理が存在していてもインターフェイスで宣言されていなければ参照できない

【サンプルコード】
package pj.p1;
// インターフェイスクラス
public interface CalcCommonLogic {
    /**
     * 加算計算出力処理
     */
    public void dispCalcAdd();
}
package pj.p1;
import java.math.BigDecimal;
// インターフェイスクラスの実装クラス
public class CalcCommonLogicImpl implements CalcCommonLogic {
    private BigDecimal a;
    private BigDecimal b;
    public CalcCommonLogicImpl(BigDecimal a, BigDecimal b) {
        this.a = a;
        this.b = b;
    }
    /**
     * 加算計算出力処理
     */
    @Override
    public void dispCalcAdd() {
        // 変数初期化
        BigDecimal result = BigDecimal.ZERO;
        // CalcUtilsの加算処理を呼び出す
        result = CalcUtils.addAbs(a, b);
        // 計算式編集出力処理を呼び出す
        CalcUtils.disp("+", a.abs(), b.abs(), result);
    }
    /**
     * 減算計算出力処理
     */
    public void dispCalcSubtract() {
        // 変数初期化
        BigDecimal result = BigDecimal.ZERO;
        // CalcUtilsの加算処理を呼び出す
        result = CalcUtils.subtractAbs(a, b);
        // 計算式編集出力処理を呼び出す
        CalcUtils.disp("-", a.abs(), b.abs(), result);
    }
}
   
package pj.p2;
import java.math.BigDecimal;
import pj.p1.CalcCommonLogic;
import pj.p1.CalcCommonLogicImpl;
public class MyCalc {
    public void calcAbsDispFormula() {
        BigDecimal a = new BigDecimal("-10.01");
        BigDecimal b = new BigDecimal("20.02");
        // interfaceの型で宣言
        CalcCommonLogic logic = new CalcCommonLogicImpl(a, b);
        // 呼出例:
        // 見出し出力
        System.out.println("絶対値にして加算後、計算式を出力");
        // 計算式出力
        logic.dispCalcAdd();
        // 誤用① 宣言した型にメソッドが存在しない
        // 見出し出力
        System.out.println("絶対値にして減算後、計算式を出力");
        // 計算式出力(インターフェースに定義されていないため以下はエラー)
        logic.dispCalcSubtract();
    }
}
・ アクセス修飾子の確認

呼び出したい処理のアクセス修飾子に、呼び出し元が対象外となる修飾子を設定している場合、参照できない

【サンプルコード】
package pj.p2; //←呼び出し元のパッケージはp2
import java.math.BigDecimal;
import pj.p1.CalcUtils; //←呼び出し先のパッケージはp1
public class MyCalc {
public void calcAbsDispResult() {
        // 誤用② 呼出先に呼出元が対象範囲外となるアクセス修飾子が指定されている
        BigDecimal a = new BigDecimal("-10.01");
        BigDecimal b = new BigDecimal("20.02");
        // 見出し出力
        System.out.println("絶対値にして加算後、結果のみ出力");
        // 計算処理呼び出し
        BigDecimal resultAdd = CalcUtils.addAbs(a, b);
        // 結果出力
        // CalcUtils.add(a, b)はprotectedなのでパッケージ外からはアクセス不可
        System.out.println(resultAdd);
        // 見出し出力
        System.out.println("絶対値にして減算後、結果のみ出力");
        // 計算処理呼び出し
        // CalcUtils.subtract(a, b)はprotectedなのでパッケージ外からはアクセス不可となり以下はエラー
        BigDecimal resultSub = CalcUtils.subtractAbs(a, b);
        // 結果出力
        System.out.println(resultSub);
    }
]
package pj.p1;
import java.math.BigDecimal;
// 呼び出されるクラス
public class CalcUtils {
    /**
     * 二つの引数を絶対値に変換後加算(クラスメソッド)
     * @param d1
     * @param d2
     * @return
     */
    // アクセス修飾子未指定の場合「protedted(同一パッケージまたは継承先のみ呼び出し可能)」となる
    static BigDecimal addAbs(BigDecimal d1, BigDecimal d2) {
        d1 = d1.abs();
        d2 = d2.abs();
        return d1.add(d2);
    }
    /**
     * 二つの引数を絶対値に変換後減算(インスタンスメソッド)
     * @param d1
     * @param d2
     * @return
     */
    static BigDecimal subtractAbs(BigDecimal d1, BigDecimal d2) {
        d1 = d1.abs();
        d2 = d2.abs();
        return d1.subtract(d2);
    }
    /**
     * 計算式編集出力処理
     * @param a
     * @param b
     * @param result
     */
    public static void disp(String str, BigDecimal a, BigDecimal b, BigDecimal result) {
        // 式と計算結果を出力
        System.out.println(a + str + b + "=" + result);
    }
}
・ クラスとインスタンスの確認

クラスメソッドをインスタンスから、インスタンスメソッドをクラスから参照することはできない

【サンプルコード】
package pj.p2;
import java.math.BigDecimal;
import pj.p1.CalcCommonLogic;
import pj.p1.CalcCommonLogicImpl;
import pj.p1.CalcUtils;
public class MyCalc {
    public void calcAddDispFormula() {
        // 誤用③ static修飾子の付与されたメソッド(クラスメソッド)
        // をインスタンスから呼び出そうとしている
        // 見出し出力
        System.out.println("そのまま加算後、計算式を出力");
        // 計算式出力
        BigDecimal a = new BigDecimal("-10.01");
        BigDecimal b = new BigDecimal("20.02");
        BigDecimal result = a.add(b);
        // インスタンスからstaticメソッドのアクセスはしない
        // ※エラーとはならないが誤った使い方のため警告が出る
        // クラスからstaticメソッドにアクセスする
        // 誤
        new CalcUtils().disp("+", a, b, result);
        // 正
        CalcUtils.disp("+", a, b, result);
    }
    // 誤用④ static修飾子のないメソッド(インスタンスメソッド)
    // をクラスから直接呼び出そうとしている
    public void calcAbsAddDispFormula() {
        // 見出し出力
        System.out.println("絶対値にして加算後、計算式を出力");
        // 不可
        CalcCommonLogicImpl.dispCalcAdd();
    }
}

4.コード補完(コンパイルエラー修正)

単純なコンパイルエラーであれば、eclipceの クイック・フィックス で修正可能です。

【操作】

エラー箇所上で「Ctrl+1」を入力→修正候補を選択

例)修正候補の中から、インターフェイスにメソッドを追加する修正を選択
インターフェイスクラスに呼び出し元で指定したメソッドが追加される

5.リファクタリング(名前変更)

クラス名、変数名、メソッド名等、名前を変更するときは直接修正するのではなく、eclipseの名前変更を使用すると、他ファイルも同時に修正してくれます。

【操作】

修正したい名称上で、右クリック→「リファクタリング」→「名前変更」
※「リファクタリング」配下には他にもソースコードを変更する際に便利な機能がそろっているので、いろいろ試してみてください 。

6.ビルド

ビルドはリソースを実行可能な状態に配置することを指します。eclipseではビルドをリソース変更時に自動で行うか、手動で行うかを選択することができます。

【自動で行う場合】

メニュー→「プロジェクト」→「自動的にビルド」にチェックを入れる

【手動で行う場合】

上記のチェックを外し、ビルドを行うタイミングで
「プロジェクト」→ 「プロジェクトのビルド」を選択

7.実行

業務利用のシステム(基幹システム)はフレームワークを利用することがほとんどのため、mainメソッドを書くことはまずありません。
実行方法は、開発するアプリケーションによりますが、ここでは、よく使用されるJUnitの起動方法を紹介します。

【操作】

実行したいクラスを呼び出すテストクラスを作成
「パッケージ・エクスプローラー」ビューや「アウトライン」ビューで、テストクラス(メソッド)を右クリック→「実行」→「JUnitテスト」

【サンプルコード】
package pj.p2;
import org.junit.jupiter.api.Test;
//テストクラス
class CalcTest {
    @Test
    void testCalcTest01() {
        MyCalc testLogic = new MyCalc();
        // テスト対象の処理呼び出し
        testLogic.calcAbsDispFormula();
    }
}
テストクラスを右クリック→「実行」→「 JUnitテスト 」
選択したテストクラスが実行される

8.ショートカット一覧

最後に、本記事で説明したショートカットと、それ以外で覚えておくと便利なショートカットの一覧を記載します。ショートカットを覚えると、開発の生産性がぐっと上がりますので、積極的に使ってみてください。

Ctrl Shift Alt その他 動作
Ctrl 1 エラー修正候補ダイアログを出す
Ctrl Space 入力補完
・前方一致だけではなく、大文字のみを入力して検索(ALと入力後補完することでArrayListを候補に出せる)
・sysoutと入力後補完することでsystem.out.println()を候補に出せる
Ctrl Shift O import文精査
Ctrl Shift F 文書成型
Ctrl / コメント化
カーソル行、または選択範囲の文頭に「//」を付与
コメント行の場合はコメント解除
Ctrl Shift / ブロックコメント化
カーソル行、または選択範囲の文頭に「/*」を付与
カーソル行、または選択範囲の文末に「*/」を付与
Ctrl Shift ¥(半角) ブロックコメント解除
カーソル行、または選択範囲の文頭の「/*」を除去
カーソル行、または選択範囲の文末の「*/」を除去
Alt ↑ or ↓ カーソル行、または選択範囲を上下に移動
Ctrl Alt ↑ or ↓ カーソル行、または選択範囲を上下にコピー
Ctrl Shift R or T R:リソース検索
T:型検索
Ctrl クリック クラス名の上で押下すると宣言または実装クラスに飛べる
右クリック
→呼び出し階層を開く
メソッド名の上で押下するとそのメソッドを呼び出している箇所一覧表示する
Shift Alt R 名前変更(右クリック→「リファクタリング」→「名前変更」と同様)