はじめに
Spring Boot + PostgreSQL + Thymeleafでフルスタックなソーシャルメディアアプリケーションを1日で開発しました。学習記録として技術選定から実装まで簡潔にまとめます。
完成したアプリの機能
主要機能
- ✅ ユーザー認証(ログイン・ログアウト)
- ✅ 投稿機能(280文字制限)
- ✅ コメント・いいね機能
- ✅ ダッシュボード(統計表示)
- ✅ ユーザー管理画面
- ✅ 管理者権限(投稿削除)
- ✅ レスポンシブUI(Twitter風デザイン)
技術スタック
| 分類 | 技術 | 理由 |
|---|---|---|
| Backend | Spring Boot 3.5.4 | 高速開発・自動設定 |
| Database | PostgreSQL 16.8 | 高パフォーマンス・スケーラビリティ |
| Security | Spring Security | エンタープライズレベルのセキュリティ |
| Template | Thymeleaf | Spring Boot標準・SEO対応 |
| Frontend | Bootstrap 5 + FontAwesome | 高速UI開発・レスポンシブ |
| ORM | Hibernate (JPA) | オブジェクトマッピング |
アーキテクチャ
システム構成
Browser → Spring MVC → Service Layer → Repository → PostgreSQL
↓
Thymeleaf Templates
パッケージ構成
-
controller/- HTTPリクエスト処理 -
service/- ビジネスロジック -
repository/- データアクセス -
model/- エンティティクラス -
config/- Spring Security設定
開発で学んだこと
1. セキュリティ設計
- Spring Security: フォーム認証・CSRF対策
- BCrypt: パスワードハッシュ化
- ロールベース認可: 管理者/一般ユーザー権限分離
2. データベース設計
-
論理削除:
is_deletedフラグで安全な削除 - 外部キー制約: データ整合性保証
- インデックス: クエリパフォーマンス最適化
3. UI/UX設計
- 3:9レイアウト: サイドバー+メインコンテンツ
- CSS3アニメーション: ユーザーエクスペリエンス向上
- Ajax非同期通信: いいね機能のリアルタイム更新
4. 開発効率化
- Spring Boot DevTools: ホットリロード
- Thymeleaf: サーバーサイドレンダリング
- Maven: 依存関係管理・ビルド自動化
技術的な課題と解決策
課題1: Thymeleafセキュリティ制約
問題: イベントハンドラでの文字列連結がセキュリティエラー
解決: data属性 + JavaScript分離でセキュア実装
課題2: CSRF対策
問題: Ajax通信でのCSRFトークン管理
解決: メタタグでトークン埋め込み + Header送信
課題3: ログアウト処理
問題: Spring Securityの複雑なログアウト設定
解決: カスタムログアウト確認ページ + セッション完全削除
パフォーマンス最適化
- HikariCP: 高速DB接続プール
- JPA最適化: N+1問題対策
- CDN利用: Bootstrap・FontAwesome外部読み込み
- 圧縮: Gzip圧縮有効化
今後の拡張予定
- API化: REST API提供
- リアルタイム通信: WebSocket導入
- ファイルアップロード: 画像投稿機能
- 検索機能: Elasticsearch連携
- Docker化: コンテナ運用
- CI/CD: GitHub Actions
まとめ
Spring Bootのエコシステムを活用することで、1日という短期間でもエンタープライズレベルの機能を持つSNSアプリケーションを開発できました。
開発で得られた知見
- Spring Securityの包括的なセキュリティ機能
- Thymeleafによるサーバーサイドレンダリングの利点
- PostgreSQLの高いパフォーマンスと信頼性
- Bootstrapによる迅速なUI開発
フルスタック開発の経験を通じて、現代的なWebアプリケーション開発のベストプラクティスを実践できる貴重な機会となりました。
