はじめに
本シリーズもいよいよ実装編に突入です!
これまで Vol.11.x シリーズでは、アプリケーションのアーキテクチャや設計方針について「理想的な構成」を学習・整理してきましたが、今回は実際に自分で 掲示板アプリを実装してみた成果物(v1) をご紹介します。
まずは現時点で完成している掲示板アプリ(v1)の紹介と振り返りを通じて、今後の改善につなげていきたいと思います。
1. 掲示板アプリ(v1)の位置づけ
📍 GitHubリポジトリ:
https://github.com/juehara-crypto/Portfolio_Bulletinboard
📌 アプリの主な機能:
-
ユーザー管理(登録/編集/削除)
-
掲示板作成・閲覧
-
スレッド作成・閲覧
-
投稿機能(スレッドごとの投稿)
-
ログイン/ログアウト
-
管理者と一般ユーザーの権限分離
-
簡易的なセッション管理
💡 使用技術スタック:
分類 | 技術 |
---|---|
フレームワーク | Struts2 |
ORM | JDBC(※MyBatis導入予定) |
テンプレート | JSP |
DB | MySQL |
その他 | JSTL, Bootstrap, Log4j など |
2. 構成・設計に関する自己評価
今回の掲示板アプリ(v1)は、「とにかく最後まで作り切る」ことを目的に構築しました。
✅ 良かった点
-
必要な機能は一通り動作し、ログインから投稿まで一貫したユーザー体験が可能。
-
JSPをベースにした画面開発、Struts2のActionクラスによる画面制御に慣れることができた。
-
DAOパターンを導入し、SQLはロジックから分離。構造化の第一歩を踏み出せた。
-
実装を通して「理想と現実のギャップ」に気づける多くの学びが得られた。
⚠️ 課題として感じた点
-
「1画面1アクション」原則が徹底されていない箇所が存在
例:ユーザーポータル画面で、スレッド一覧の取得と投稿件数の取得を同一のアクションクラス(GetThreadByIdAction
)で処理
→ 表示に必要な複数のデータを1つのアクションに詰め込んでいるため、責務が曖昧に。 -
一部の処理(例:スレッド情報や投稿件数を取得する処理)については、
ThreadService
のように DAO呼び出しをService層に切り出す構成を採用している。
→ ただし、全体としてはまだActionクラスにロジックが残る箇所も多く、責務の分離や構造の統一に課題が残る。 -
DTO未導入・処理の役割分離が不完全
→ Viewへのデータ受け渡しや内部ロジックの責務が整理されておらず、保守性・拡張性の面で今後の課題に。
3. 今後の展開:実装 v2 に向けて
Vol.11シリーズで学んだ理想的な設計方針(MVC構成、責務分離、拡張性など)を反映し、今後は v2(改良版)の構築 に取り組んでいきます。
🔧 改善予定リスト
-
DTO・Service層の導入によるロジックの分離と整理
-
JSPの共通化/コンポーネント化(例:ヘッダー、フッター、ナビメニューなど)
-
MyBatis導入によるSQL処理の効率化と保守性向上
-
ログ出力や例外ハンドリングの共通化
-
「1画面1アクション」原則の徹底適用
-
各画面の表示・入力・処理に対応するアクションを明確に分離
-
単体テストや結合テストを意識した構造への見直し
4. まとめ
今回紹介した掲示板アプリ(v1)は、
これまでの学習を通じて培った知識を基に、設計から実装・調整までを自ら行った「学習の集大成」 です。
設計や実装の面での反省点、改善点は多く見つかりましたが、「まずは動くものを完成させた」という達成感 は何よりも大きな財産です。
次回からは Vol.11 で整理してきた設計理論をもとに、いよいよ v2 開発に着手。
「理想」を「現実」に落とし込む開発サイクル を体験していきます!
※この内容は、目次内「5. 機能詳細仕様(カテゴリ別)」「6. ロール・権限仕様」「7. データモデル」など、設計面での整理・改善点との接続を意識した「設計→実装→改善」サイクルの一部として機能します。実装編v2以降でそれぞれのカテゴリを再評価・修正していく際の導線となります。