📘 Vol.18：掲示板アプリ v2 の動作環境と使用ライブラリの整理

### ✍️ はじめに
今回から、いよいよ **『掲示板アプリ v2』** の実装に入っていきます。
v2は、GitHub上に公開している旧掲示板アプリ（v1）をベースに、以下のような観点から設計・実装を見直した改良版となります：

- ***機能設計の明確化（Vol.17までで定義済みのカテゴリ構成）***

- ***コード構造や可読性の改善***

- ***ユーザビリティや運用性の向上***

このような背景から、v2は**既存v1とは独立したMavenプロジェクト**として、環境構築から始めていきます。
まずは、v2の開発環境・動作環境・使用ライブラリの定義を整理しておきましょう。

---
### 🛠 今回の対象（Vol.18 の目的）

本記事では、以下の点を明確にします：

| 項目         | 内容                        |
| ---------- | ------------------------- |
| 💻 開発・動作環境 | OS、IDE、JDK、Tomcatなど       |
| 📦 使用ライブラリ | `pom.xml` に記述するMaven依存関係  |
| 🔗 補足      | Mavenの基本解説はVol.4・Vol.5を参照 |


---

### 💻 開発・動作環境（掲示板アプリ v2）

| 項目            | バージョン・備考                                                 |
| ------------- | -------------------------------------------------------- |
| OS            | Windows 10 / 11（macOSも可）                                 |
| IDE           | Eclipse IDE for Enterprise Java Developers（2023-12 以降推奨） |
| JDK           | Java SE 11（11.0.22など）                                    |
| Apache Tomcat | 9.0.x（最新版で可）                                             |
| ビルドツール        | Apache Maven 3.8.x（3.8.8など）                              |
| Webブラウザ       | Google Chrome 最新版                                        |
| DB            | MySQL（5.7～8.0） or MariaDB 互換で可                           |

**※JDKは Struts2が推奨するLTS版のJava11 を採用**
**※Tomcatは Servlet 4.0対応済みのv9.x系 を前提とします**


---
### 📦 使用ライブラリ一覧（概要）
まずは、掲示板アプリ v2 で使用しているライブラリの概要を以下の表にまとめます。用途別に整理し、pom.xmlの設定はこの後に続きます。

| 項目                    | 内容                             | 使用用途                | 備考                          |
| --------------------- | ------------------------------ | ------------------- | --------------------------- |
| Struts2 Core          | `struts2-core`（2.5.30）         | MVCフレームワークの中核       | Struts2標準機能を使用              |
| Servlet API           | `javax.servlet-api`（4.0.1）     | HttpServletの基本機能    | Tomcat提供のため `provided` スコープ |
| JSP API               | `javax.servlet.jsp-api`（2.3.3） | JSPファイルの解釈・実行       | こちらも `provided` スコープ        |
| JSTL                  | `jstl`（1.2）                    | JSTLタグライブラリ（JSP制御用） | 標準JSP拡張タグライブラリ              |
| MySQL Connector/J     | `mysql-connector-java`（8.0.33） | MySQLへのJDBC接続       | 使用DBに応じて変更可（MariaDBなど）      |
| SLF4J API             | `slf4j-api`（1.7.36）            | ログ出力の抽象レイヤー         | 実装はLog4jを使用                 |
| SLF4J - Log4j Binding | `slf4j-log4j12`（1.7.36）        | SLF4JログをLog4jとして出力  | 実行時ログ出力のためのバインディング設定        |


---

### 🧾 pom.xmlの設定（依存関係）
上記ライブラリを使用するための `pom.xml` の `<dependencies>` セクションは以下の通りです。

```xml
<dependencies>
  <!-- Struts2 -->
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.26</version>
  </dependency>

  <!-- Logging: Log4j2 -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version>
  </dependency>

  <!-- JDBC + MySQL -->
  <dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>3.4.5</version>
  </dependency>
  <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.32</version>
  </dependency>

  <!-- Servlet API（providedスコープ） -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
  </dependency>

  <!-- Struts2 依存 -->
  <dependency>
    <groupId>ognl</groupId>
    <artifactId>ognl</artifactId>
    <version>3.1.29</version>
  </dependency>
  <dependency>
    <groupId>xmlpull</groupId>
    <artifactId>xmlpull</artifactId>
    <version>1.1.3.1</version>
  </dependency>
  <dependency>
    <groupId>xpp3</groupId>
    <artifactId>xpp3_min</artifactId>
    <version>1.1.4c</version>
  </dependency>
</dependencies>

```

必要に応じて `commons-logging`, `struts2-junit`, `struts2-json-plugin` などの追加も可能です。

---

### 📖 補足：MavenやStruts2の基礎について

本記事ではMavenやStruts2の基礎解説には触れていません。
以下のブログにて詳しく解説していますので、必要に応じてご参照ください：

- [📘 Vol.4：Struts2とMavenの基礎と設定ファイルの役割](https://qiita.com/juehara-crypto/items/e37fa1879ae996bee73e)
- [📘 Vol.5 環境構築編：掲示板アプリケーションの実行準備](https://qiita.com/juehara-crypto/items/7010ae45d35174d3a3a6)

---

### ✍️ おわりに
v2の開発に入る前に、動作環境や使用ライブラリの前提を明確にしました。
本記事の内容に沿って、次回は 「**Mavenプロジェクトを手動で作成する手順**」 に進みます。

👉 Vol.19へ：Eclipseでv2用Mavenプロジェクトを作成する（※リンクは後日）

---