# 1.2. このドキュメントが示すこと

本ガイドラインではSpring、Spring MVCやMyBatisを中心としたフルスタックフレームワークを利用して、保守性の高いWebアプリケーション開発をするためのベストプラクティスを提供する。
本ガイドラインを読むことで、ソフトウェア開発(主にコーディング)が円滑に進むことを期待する。

# 1.3. このドキュメントの対象読者

本ガイドラインはソフトウェア開発経験のあるアーキテクトやプログラマ向けに書かれており、以下の知識があることを前提としている。

- Spring FrameworkのDIやAOPに関する基礎的な知識がある

- Servlet/テンプレートエンジン(JSPなど)を使用してWebアプリケーションを開発したことがある

- SQLに関する知識がある

- Mavenを使用してWebアプリケーションをビルドしたことがある

これからJavaを勉強し始めるという人向けではない。

Spring Frameworkに関して基礎知識がない場合は、別途以下のような入門書籍で学習することを推奨する。

- Spring徹底入門 (翔泳社) [日本語]

- Spring3入門―Javaフレームワーク・より良い設計とアーキテクチャ (技術評論社) [日本語]

- Pro Spring 4th Edition (Apress)

# 1.4. このドキュメントの構成

- アーキテクチャ概要
  Spring MVCの概要や、Macchinetta Server Framework (1.x)の基本的な考え方を説明する。
- アプリケーション開発
  Macchinetta Server Framework (1.x)を利用してアプリケーション開発する上で必ず押さえておかなくてはならない知識や作法について説明する。
- Webアプリ開発機能
  Webアプリケーション開発で必要となる機能をどう実装するか、何に気を付けるべきかを説明する。
- Web Service
  Webサービス開発で必要となる機能をどう実装するか、何に気を付けるべきかを説明する。
- データアクセス
  データアクセス機能をどう実装するか、何に気を付けるべきかを説明する。
- アプリケーション形態に依存しない汎用機能
  アプリケーション形態に依存しない汎用機能をどう実装するか、何に気を付けるべきかを説明する。
- メッセージ連携
  メッセージ連携機能をどう実装するか、何に気を付けるべきかを説明する。
- セキュリティ対策
  Spring Securityを中心としたセキュリティ対策について説明する。
- 単体テスト
  Spring Testを利用した単体テストについて説明する。
- チュートリアル
  簡単なアプリケーション開発を通して、Macchinetta Server Framework (1.x)によるアプリケーション開発を体験する。
- Appendix(Know How)
  Macchinetta Server Framework (1.x)を利用する場合の付加情報を説明する。

# 1.5. このドキュメントの読み方

まずは”アーキテクチャ概要“から読み進めていただきたい。特にSpring MVCの経験がない場合は”はじめてのSpring MVCアプリケーション“を実施すること。
“アプリケーションのレイヤ化“は本ガイドラインで共通する用語と概念の説明を行っているため、必ず一読されたい。
次に”チュートリアル“に進む。
このチュートリアルでは”習うより慣れろ”を目的として、詳細な説明の前にまず手を動かして、Macchinetta Server Framework (1.x)によるアプリケーション開発を体感していただきたい。
チュートリアルを実践したのちに、”アプリケーション開発“でアプリケーション開発の詳細を学ぶ。
特に”アプリケーション層の実装“でSpring MVCによる開発のノウハウを凝集して説明しているため、何度も読み返すことを推奨する。
本章を読み終えた後にもう一度”チュートリアル“を振り返るとより理解が深まる。
ここまではMacchinetta Server Framework (1.x)を使用するすべての開発者が読むことを強く推奨する。
“Webアプリ開発機能“、”Web Service“、”データアクセス“、”アプリケーション形態に依存しない汎用機能“、”メッセージ連携“、”セキュリティ対策“については目的に応じて必要なタイミングで参照すればよい。ただし、”入力チェック”はアプリケーション開発で通常は必要となるため、基本的には読んでおくこと。

テクニカルリーダーはこれらをすべて読み内容を把握した上でプロジェクトにおいて、どのような方針を定めるか検討していただきたい。

Note

時間がない場合、まずは

1. はじめてのSpring MVCアプリケーション

2. アプリケーションのレイヤ化

3. アプリケーション開発

4. チュートリアル(Todoアプリケーション JSP編)

5. 入力チェック

を読むとよい。

# 1.6. このドキュメントの動作検証環境

本ガイドラインで説明している内容の動作検証環境については、「テスト済み環境」を参照されたい。

Note

Macchinetta Server Framework (1.x)はSpring Framework 6の動作環境に合わせ、以下を前提としています。

- Java 17
  Java 17で動作させるにあたり、追加の設定等はJava SE 17以降のバージョンを利用するための設定を参照してください。
- Tomcat 10.0.x がEOLしたことに伴い、Tomcat 10.1.xを使用しています。
  これに伴い、Jakarta EE 10ベースとなります。
- Jakarta EE 9以降では、ライブラリが内包するクラスのパッケージ名が`javax`から`jakarta`に変更されています。
  これに伴い、Jakarta EE9 以降に対応したアプリケーションサーバ以外では動かない点に注意してください。

# 1.7. Configurationの種類について

本ガイドラインでは、Configurationの種類として以下の2種類を扱っている。

- Java Configuration (Javaベースの設定)

- XML Configuration (XMLベースの設定)

Spring 6時点では非推奨にはなっていないが、Spring7以降ではMVCのXML DSLが非推奨（SpringFramework#34063）になっている。
今後もSpringではJava Configurationのみがメンテナンスされていくことが予想されるため、本ガイドラインでは可能な限りJava Configurationを使用することを推奨する。