【Java】総合開発環境（IDE)のEclipseを導入する

# はじめに
Javaの開発現場でEclipseが使用される割合は現段階で65.3%で最も利用されるIDEと言われています。求人サイトにもよくスキルの欄にEclipseと記述されていると思います。そこでJavaの開発およびJavaのフレームワークの扱い方を学ぶためにEclipseをインストールします。

## Eclipseとは
Eclipse自体がJavaで開発されているため、他のIDEよりもJavaの操作を補助する機能に長けています。
そのため開発現場ではIDEにEclipseを指定していることが多いようです

### Eclipseの代表的な機能
- コードの編集
    構文の色付けやコードの補完を補助します
- デバック
    変数の値の確認やコードの実行を一時停止するなどのバグ修正補助します
- ビルドと実行
    コンパイルと実行を自動化します
- バージョン管理
    Gitと連携できるのでボタン操作でコミットやプッシュなどのGit操作ができます
- プラグイン
    自由に追加機能を組み込むことができます
    

## Eclipseをダウンロードする

Eclipseの公式ダウンロードページからダウンロードした場合は基本的に英語版となり、日本語化するには別途追加の作業が必要となります。

### 最初から日本語化するパッケージ版をダウンロード
次の3つの項目が全て詰まったパッケージ版をダウンロードすれば最初から日本語化されたEclipseを操作することができます
#### パッケージ名：Pleiades All in One
- Eclipse本体（英語版）
- Eclipseを日本語化するPleiadesプラグイン
- 各種開発に便利なプラグイン

ちなみに`Pleiades All in One`は日本の開発者によって作成・提供されたプラグインであり公式リリースとは異なりますが、その品質と信頼性は広く認識されております。

## Pleiades All in Oneのダウンロード

ダウンロードリンク先：https://mergedoc.osdn.jp/

![スクリーンショット 2023-06-22 9.29.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/005cef16-45ac-0251-e5b3-0fe522611481.png)

著者の環境はMacなので`Macの行`から`Javaの列`を選択しました
ボタンを押すことで必要なファイルを絞り
目的のダウンロードリンクに移動できます

![スクリーンショット 2023-06-22 9.33.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/10f0d899-451e-701c-6cec-3463f1ebbec5.png)
ダウンロードのリンク先をクリックすることでダウンロードすることができます
![スクリーンショット 2023-06-22 9.36.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/83704fd0-6333-514d-b8ac-7a2f96346c08.png)

著者の環境ではダウンロードに3分〜5分程度と時間がかかったので気長に待ちましょう

ダウンロードしたファイルを開き、表示されているアイコンを右側の`application`にドラッグ&ドロップすれば`Eclipse`を起動することができます
![スクリーンショット 2023-06-22 9.39.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/bc0112da-05e5-f38e-4a99-6da5fbb302f3.png)

## プロジェクトを作成する

- Eclipseでは1つのアプリを1プロジェクトという単位で管理します

- Eclipseではプロジェクトを作成する際にプロジェクトの種類を選択できます

- プロジェクトの種別を選択することで必要なツールやライブラリを集めたパッケージを選択することができ開発者は難しい設定を一から行う必要がなく、すぐにプロジェクトの開発に取り掛かることができます。
### 保存先を選択する
Eclipseを起動した際、プロジェクトの保存先を求められます
保存先はどちらを選択しても構わないですが、管理しやすいディレクトリが推奨されます
![スクリーンショット 2023-06-22 10.17.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/b51042c8-dcb9-85d6-917d-335bc3504b23.png)

### プロジェクト作成ウィザードの起動する

ファイル>新規>プロジェクト　
![スクリーンショット 2023-06-22 10.37.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/05efe366-7b75-3865-5472-2e6ccef83f12.png)

### Spring スターター・プロジェクトを使う

プロジェクトの種別でSpring スターター・プロジェクトを選択するとSpring Bootを使用することができます。

Spring スターター・プロジェクトで作成できるプロジェクト例
- ブログサイトの作成
- ユーザー登録とログイン機能の作成
- データベースとの連携
- 他のアプリとデータを連携

![スクリーンショット 2023-06-22 10.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/bade5309-931c-bec9-7d67-ef084e06ac5f.png)

### プロジェクトの詳細を設定する
![スクリーンショット 2023-06-22 11.13.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/b9a36fc5-710f-45e4-3f01-d02aae0a836d.png)


#### サービスURL（変更不要）
SpringBootの新規プロジェクトの骨組み（スケルトン）を生成するためのツールがあるURLを記述します。すでにURLが記述されているため変更する必要はありません。
URL先に移動するとSpringBootの初期設定ツールが表示されます。

#### 名前（任意で変更）
プロジェクトの名前です。任意で理解しやすいプロジェクト名に変更してください

#### ロケーション（任意で変更可能）
プロジェクトの保存先を指定しています。デフォルトでアプリ内のワークスペースが保存先に指定されていますが変更は可能です

#### タイプ（変更不要）
プロジェクトをソースコードに変換（コンパイル）するビルドツールを選択します。ビルドとはJavaファイルを実行可能な状態にすることを指します
特に理由がなければデフォルトの選択肢を使用して問題ありません。ただし、プロジェクトやチームの要件によっては選択を切り替えることもあります。

#### パッケージング（変更不要）
複雑なアプリは複数のJavaファイルから作成されますが、使用するユーザーへ個々に配布することは非効率的であるため、クラスファイルを全て一つにまとめた形式で配布することをパッケージングと呼びます。

- `Jar形式`: この形式は新しくアプリケーションを作り始める時や、既存のアプリケーションが特定のサーバーに依存していない場合に選びます。この形式を選ぶと、アプリケーションは一つの実行可能なファイルにまとまり、それをどのマシンでも簡単に動かすことができます（Javaがインストールされていれば）。

- `War形式`: 既存のウェブサーバー（例えばTomcatなど）にアプリケーションを追加したい場合や、特定の大規模なビジネスシステムに統合する必要がある場合に選びます。この形式を選ぶと、作成したアプリケーションは特定のサーバー上で動作するための一部となります。

どちらを選ぶかは、製作者が何を作り、どこでそれを動かすかによります。初めてアプリケーションを作る場合は、一般的にはJar形式で始めるのが簡単でしょう。その後、特定の要件に応じて必要になったらWar形式を試すことができます。

### Javaバージョン（最新のバージョンを選択推奨）
プロジェクトが特定のJavaバージョンに依存するなどがない限り最新のバージョンを選択することが推奨さqueryれます

### 言語（任意で選択）
Java言語の他にKotlin言語,Groovy言語と選択肢が存在しますが、どちらもJavaと互換性がある言語であり、Java言語を使用するという意味では変わりません。
扱うプロジェクトによって選択肢を選択しますが変更は不要です
- `Kotlin`：Javaと100％互換性があり、より簡潔で表現力があり、Null安全などの機能を持つモダンなプログラミング言語です。
- `Groovy`：Javaとの互換性がありつつ、スクリプト言語の特性を持つ言語です。シンタックスが簡潔で、特定のタスク（例えば、テストコードの記述）においてJavaよりも短く簡単にコードを書くことができます。

### グループ（任意で会社名や組織名などを入力可能）
まずJavaファイルをまとめたフォルダやディレクトリのことをパッケージ（Package）と呼びますが、グループはパッケージ名に付与する会社名や組織名を記述します。必須入力ではありません。
例えばグループ名が`testCompany`　
プロジェクト名が`spring_boot_introduction`だった場合
パッケージ名は`testCompany.spring_boot_introduction`となります

### 成果物（任意で変更可能）
ビルドした際に生成されるJARファイルの名前を指定します。

### バージョン（開発するプロジェクト内容や進捗による）
プロジェクトの進行状況や変更内容を表現するバージョン情報です

バージョン番号が「1.0.0-SNAPSHOT」の場合。これは、開発中のバージョンであり、まだリリース前の段階を示します。必須入力ではなく通常は「0.0.1-SNAPSHOT」や「1.0.0」などの初期バージョンが設定されることがあります。バージョンの具体的な例としては以下が挙げられます。
- `SNAPSHOT`
  バージョン番号が「1.0.0-SNAPSHOT」の場合は、開発中のバージョンであり、まだリリース前の段階を示します。具体的な例としては、新機能の実装中や既存機能の大幅なリファクタリング中など、開発者が日々コードの変更やテストを行っている段階を示します。
- `メジャーバージョン` (Major Version)
  バージョン番号が「2.0.0」の場合。これは、前のメジャーバージョンが「1」であり、大規模な変更や重要な機能の追加が行われたことを示します。大規模な変更や重要な機能の追加が行われたことを示します。具体的な例としては、フレームワークのアーキテクチャの大幅な変更、デザインパターンの刷新、全体的な機能のリファクタリングなどが挙げられます。
- `マイナーバージョン` (Minor Version)
  新しい機能の追加や既存機能の改善が行われたことを示します。具体的な例としては、新しい機能の追加、既存の機能の拡張、新しいAPIの導入、UIの改善などが挙げられます。
- `パッチバージョン` (Patch Version)
  バグ修正やセキュリティパッチが適用されたことを示します。具体的な例としては、クラッシュするバグの修正、データの不整合を解消する修正、セキュリティ上の脆弱性の修正などが挙げられます。

### 詳細(任意で入力する）
プロジェクトの概要や説明を記述するための項目ですが、必須項目ではありません。
入力文字に関しては、一般的に英語が望ましいです。Spring Bootや多くの開発ツールやフレームワークでは、英語を基準とした慣習や規約があります。そのため、プロジェクト名、詳細、パッケージ名などには英語を使用することが一般的です。
プロジェクト内で統一された言語を使用し、他の開発者やチームメンバーが理解しやすい形で記述することが大切です。
### パッケージ(任意で変更可能）
Javaのソースコードが属するパッケージ名を指定します。一般的には、グループIDにプロジェクト名を加えたものが使用されます。
### ワーキングセット(プロジェクトの内容により任意で選択する）
Eclipseがプロジェクトをグループ化するために使用する概念です。同じワーキングセットに属するプロジェクトは、プロジェクトエクスプローラやパッケージエクスプローラで一緒に表示され、特定の操作をまとめて適用することができます。例えば、あなたが複数の関連するプロジェクトを同時に開発している場合、それらを同じワーキングセットに割り当てることで、組織的に扱うことができます。

## 新規 Springスターター・プロジェクト依存関係

依存関係は、プロジェクトが正常に動作するために必要な外部のライブラリやフレームワークを指します。ウィザードを使うことで必要な依存関係を簡単に追加することができます。

### SpringBootバージョン(プロジェクトによる）
これから携わるプロジェクトによってバージョンの選択肢は変化します
プロジェクトの要件に最も適したバージョンを選択する必要がありますが、無難な選択としては、最新バージョンではなく、一つ前のメジャーバージョンを選ぶことがよくあります。これにより、新しい機能を利用しつつ、安定性と広範な互換性を保つことができます。

### Eclipseを使いやすくするためのオプション選択（任意）
Spring Web,Lombok,Spring Boot DevToolsなどはEclipseで使用できる便利機能を指します。

使用頻度が高い機能はウィザード画面上にチェック項目ですぐに選択できます

- Spring Web
   プロジェクトにWebアプリケーションやAPI開発のための基盤を提供します。
- Lombok
   Javaコードのgetter、setter、equalsメソッドなどを自動生成するため、手動でこれらのコードを書く必要がなくなります。
- Spring Boot DevTools
   コードの変更があると、アプリケーションは自動的に再起動され、最新の変更をすぐにテストできます。
   ![スクリーンショット 2023-06-22 15.19.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/42be5a81-f0b5-26dc-2f35-8223f3b1d9b1.png)

### 完了ボタン
最後に完了ボタンを押すことでウィザードは終了します