📘 Vol.5 環境構築編：掲示板アプリケーションの実行準備


本記事では、掲示板アプリケーションを構築するための環境設定手順を解説します。対象読者は、JavaやWebアプリケーション開発の初心者を想定しています。

---

## 📌 前提条件

掲示板アプリケーションの開発・動作確認には、以下の技術要素が必要です。

### 使用技術

| 分類               | 技術名 / バージョン例                             |
|--------------------|--------------------------------------------------|
| プログラミング言語 | Java SE 17（Eclipse 2023-09標準 JDK使用）        |
| フレームワーク     | Apache Struts2 (2.5.26)                          |
| データベース       | MySQL 8.0.32                                     |
| ビルドツール       | Apache Maven 3.8.x（pom.xml に準拠）             |
| アプリケーションサーバ | Apache Tomcat 9.x                             |
| その他             | JSTL 1.2、MySQL Connector/J 8.0.32（JDBCドライバ）|

### 開発環境

| 項目                    | 内容                                                  |
|-------------------------|-------------------------------------------------------|
| IDE（統合開発環境）     | Eclipse IDE 2023-09（Enterprise Java & Web Developers版） |
| OS                      | Windows 10 / 11                                       |
| Java開発キット（JDK）   | JDK 17（EclipseバンドルJDK使用）                      |
| データベース            | MySQL Community Server 8.0.32                         |
| アプリケーションサーバ  | Apache Tomcat 8.5.96                                  |

### 使用ライブラリ

| 項目                 | 内容                                                 | 使用用途                                      | 備考                                         |
|----------------------|------------------------------------------------------|-----------------------------------------------|----------------------------------------------|
| HikariCP             | com.zaxxer:HikariCP:3.4.5                            | 高速・軽量なJDBCコネクションプールライブラリ | 接続プールの性能・安定性が高く、多くの現場で採用 |
| Struts2 Core         | org.apache.struts:struts2-core:2.5.26                | Struts2フレームワークの中核ライブラリ        | Struts2の画面遷移、OGNL連携の基盤となる       |
| Log4j API            | org.apache.logging.log4j:log4j-api:2.14.1            | ロギング用API（ログの出力・管理のインタフェース） | 設定ファイル（log4j2.xml等）と連携して動作    |
| Log4j Core           | org.apache.logging.log4j:log4j-core:2.14.1           | ロギング処理の実装部分（Log4jの本体）        | APIとセットで使用、単体では動作しない         |
| Servlet API          | javax.servlet:javax.servlet-api:4.0.1（scope: provided） | サーブレット仕様のAPI、Tomcat等アプリサーバ提供 | providedスコープのためWARに同梱されない       |
| MySQL Connector/J    | com.mysql:mysql-connector-j:8.0.32                   | MySQLデータベース用のJDBCドライバ            | MySQL用のDB接続に必須のライブラリ             |
| OGNL                 | ognl:ognl:3.1.29                                     | Struts2で使用される式言語ライブラリ（データ参照等） | Struts2の画面とアクションのデータバインドに必要 |
| XmlPull              | xmlpull:xmlpull:1.1.3.1                              | XMLパース用の軽量ライブラリ                   | Struts2の内部依存で使用                       |
| XPP3 Min             | xpp3:xpp3_min:1.1.4c                                 | XmlPull Parserの実装、XMLデータの読み込みに使用 | XmlPullの実装ライブラリ、単体利用はほぼない    |

---

## 🛠️ EclipseでのMavenプロジェクト作成手順

Eclipse IDEを使用して、Mavenプロジェクトを作成する手順は以下の通りです。

1. **Eclipseの起動**  
   Eclipseを起動し、作業用のワークスペースを選択します。

2. **新規Mavenプロジェクトの作成**  
   メニューから「File」→「New」→「Maven Project」を選択します。

3. **プロジェクトの設定**  
   - **Group Id**: `com.company.bulletinboard`（例）
   - **Artifact Id**: `Bulletinboard`（例）
   - **Version**: `1.0.0`（デフォルトで問題ありません）
   - **Package**: `com.company.bulletinboard`（例）

4. **プロジェクトの作成**  
   設定が完了したら、「Finish」をクリックしてプロジェクトを作成します。

5. **プロジェクト構造の確認**  
   作成されたプロジェクトの構造を確認し、必要に応じてフォルダやファイルを追加します。

---

## 🗂️ プロジェクト構成の説明

以下は、掲示板アプリケーションのプロジェクト構成です。各ディレクトリやファイルの役割を説明します。

### `src/main/java/com/company/bulletinboard`

- Javaのソースコードを配置するディレクトリです。
- パッケージ構成に従って、コントローラー、サービス、DAOなどのクラスを配置します。

### `src/main/resources`

- アプリケーションの設定ファイルやリソースファイルを配置します。
- 例:
  - `db-config.properties`: データベース接続設定
  - `log4j2.xml`: ログ設定ファイル
  - `struts.xml`: Struts2の設定ファイル
  - `struts.properties`: Struts2のプロパティ設定

### `src/main/webapp`

- Webアプリケーションのルートディレクトリです。
- 静的リソースやJSPファイルを配置します。

#### `src/main/webapp/login.jsp`

- ログイン画面のJSPファイルです。

#### `src/main/webapp/WEB-INF`

- Webアプリケーションの設定ファイルを配置するディレクトリです。
- `web.xml`: デプロイメントディスクリプタ（アプリケーションの設定ファイル）

#### `src/main/webapp/view`

- アプリケーションのビュー（JSPファイル）を配置するディレクトリです。

---

## 🧾 データベースとテーブル作成について

掲示板アプリケーションに必要なデータベースやテーブルの作成SQLは、以下のGitHub上の手順書に記載されています。

📘 詳細は以下をご参照ください：

[掲示板アプリケーション環境構築手順書（PDF）](https://github.com/juehara-crypto/Portfolio_Bulletinboard/blob/master/%E6%8E%B2%E7%A4%BA%E6%9D%BF%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86%E6%9B%B8.pdf)

◆ 該当箇所

- 「6. データベース設定（概要）」
- 「8-3-1. データベース・テーブル追加 SQL」

これらに従って、MySQL上にデータベースおよび必要なテーブルを準備してください。

---

## 📝 まとめ

このVol.5では、掲示板アプリケーションを動作させるための環境構築方法を解説しました。特に、指定されたバージョンの技術要素（Java, Struts2, MySQLなど）を用意することが前提となります。

今後のVolでは、プロジェクトのビルド・実行手順や、各機能の内部構成に進んでいきます。


---

### 次に読むべき記事
 ▶️ 次回 
 [📘 Vol.6：BaseActionクラスの詳細解説【Struts2の要】](https://qiita.com/juehara-crypto/items/a5f244a5f58597f33d06)

---

## 🧭 Vol.1〜7 関連リンク

| 回 | タイトル | 主な内容 |
|----|----------|-----------|
| Vol.1 | [プログラミングとの再会 – 「画面ありき」で変わった学び方](https://qiita.com/juehara-crypto/items/2fcc53d765dcc25a4fa3) | プログラミング再入門と、**画面駆動の学習法**というユニークなアプローチの紹介。最初に「画面」から考えることでモチベーションを継続。 |
| Vol.2 | [画面駆動設計に基づく設計書の具体例：画面フローからUI設計・処理定義まで](https://qiita.com/juehara-crypto/items/c1fd34b3031b13160f27) | 実際に描いた**画面遷移図・UI設計・処理定義書**を公開し、画面中心の設計手法を解説。 |
| Vol.3 | [詳細設計編：ER図で見るデータ構造と実装の土台](https://qiita.com/juehara-crypto/items/6e6431954dc99ea59054) | 実装前提で設計された **ER図（Entity Relationship 図）** をもとに、データ構造と整合性を設計。 |
| Vol.4 | [Struts2とMavenの基礎と設定ファイルの役割](https://qiita.com/juehara-crypto/items/e37fa1879ae996bee73e) | Struts2の構成とMavenでの管理、`web.xml` や `pom.xml` の役割を丁寧に解説。 |
| Vol.6 | [BaseActionクラスの詳細解説【Struts2の要】](https://qiita.com/juehara-crypto/items/a5f244a5f58597f33d06) | すべてのアクションに共通する基底クラス **BaseAction** を定義し、ログ出力や共通処理を集約。 |
| Vol.6.1 | [BaseAction の活用例【共通基底クラスでセッション管理を簡素化】](https://qiita.com/juehara-crypto/items/f4efded5b26e39e49928) | BaseAction を継承する具体的なアクション例を紹介し、セッションやログ処理の統合例を実践。 |
| Vol.7 | [Struts2 における MVC モデルの全体像](https://qiita.com/juehara-crypto/items/761c0b13ed1a5f896bba) | Model-View-Controller の各要素が Struts2 でどう分担されるかを体系的に解説。 |
| Vol.7.1 | [Struts2 における Model（モデル）について](https://qiita.com/juehara-crypto/items/14f7f154caf29447ae93) | JavaBeansベースのModelクラス（User, Thread, Post など）設計とその役割を明確化。 |
| Vol.7.2 | [Struts2 における Controller（コントローラ）の責務](https://qiita.com/juehara-crypto/items/06b4f9296a296db8f4ba) | Actionクラスを軸に、入力処理・分岐処理・画面遷移の中核を担うControllerの実装指針を提示。 |
| Vol.7.3 | [Struts2 における struts.xml の書き方と役割](https://qiita.com/juehara-crypto/items/54dc2e0a4d56845a1a61) | URLマッピング、結果遷移、アクション定義の方法を丁寧に記述。初心者の詰まりやすいポイントを回避。 |
| Vol.7.4 | [struts.xmlの高度な設定と実践活用（Struts2）](https://qiita.com/juehara-crypto/items/bf03adbd840c8f4e2044) | namespaceの活用や画面単位での分離設計、開発時の保守性向上テクニックを紹介。 |

---