Macchinetta Batch Framework (2.x) Development Guideline
Macchinetta Batch Framework (2.x) Development Guideline - version 2.6.1.RELEASE, 2026-3-30
> INDEX

# 導入

## ガイドラインの目的

本ガイドラインではSpring Framework、Spring Batch、MyBatis を中心としたフルスタックフレームワークを利用して、 保守性の高いバッチアプリケーション開発をするためのベストプラクティスを提供する。

本ガイドラインを読むことで、ソフトウェア開発(主にコーディング)が円滑に進むことを期待する。

## ガイドラインの対象読者

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

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

- Javaを使用してアプリケーションを開発したことがある

- SQLに関する知識がある

- Mavenを使用したことがある

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

Spring Frameworkに関して、本ドキュメントを読むための基礎知識があるかどうかを測るために Spring Framework理解度チェックテスト を実施するとよい。 この理解度テストが4割回答できない場合は、別途以下のような書籍で学習することを推奨する。

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

- ［改訂新版］Spring入門――Javaフレームワーク・より良い設計とアーキテクチャ [日本語]

- Pro Spring 6th Edition (Apress)

## ガイドラインの構成

まず、重要なこととして、本ガイドラインは Macchinetta Server Framework (1.x) Development Guideline (以降、Macchinetta Server 1.x 開発ガイドライン)のサブセットとして位置づけている。 出来る限りMacchinetta Server 1.x 開発ガイドラインを活用し説明の重複を省くことで、ユーザの学習コスト低減を狙っている。 よって随所にMacchinetta Server 1.x 開発ガイドラインへの参照を示しているため、両方のガイドを活用しながら開発を進めていってほしい。

Macchinetta Batch Framework (2.x)のコンセプト

  バッチ処理の基本的な考え方、Macchinetta Batch Framework (2.x)の基本的な考え方、Spring Batchの概要を説明する。

アプリケーション開発の流れ

  Macchinetta Batch Framework (2.x)を利用してアプリケーション開発する上で必ず押さえておかなくてはならない知識や作法について説明する。

ジョブの起動

  同期実行、非同期実行、起動パラメータといったジョブの起動方法について説明する。

データの入出力

  データベースアクセス、ファイルアクセスといった、各種リソースへの入出力について説明する。

異常系への対応

  入力チェックや例外ハンドリングといった異常系について説明する。

ジョブの管理

  ジョブの実行管理の方法について説明する。

フロー制御と並列･多重処理

  ジョブを並列処理/分散処理する方法について説明する。

チュートリアル

  基本的なバッチアプリケーション開発をとおして、Macchinetta Batch Framework (2.x)によるバッチアプリケーション開発を体験する。

## ガイドラインの読み方

以下のコンテンツはMacchinetta Batch Framework (2.x)を使用するすべての開発者が読むことを強く推奨する。

- Macchinetta Batch Framework (2.x)のコンセプト

- アプリケーション開発の流れ

以下のコンテンツは通常必要となるため、基本的には読んでおくこと。 開発対象に応じて、取捨選択するとよい。

- ジョブの起動

- データの入出力

- 異常系への対応

- ジョブの管理

以下のコンテンツは一歩進んだ実装をする際にはじめて参照すれば良い。

- フロー制御と並列･多重処理

以下のコンテンツはMacchinetta Batch Framework (2.x)を使用して実際のアプリケーション開発を体験したい開発者が読むことを推奨する。 はじめてMacchinetta Batch Framework (2.x)に触れる場合は、まずこのコンテンツから読み始め、他のコンテンツを参照しながら進めるとよい。

- チュートリアル

### ガイドラインの表記

本ガイドラインの表記について、留意事項を述べる。

WindowsコマンドプロンプトとUnix系ターミナルについて

  WindowsとUnix系の表記の違いで動作しなくなる場合は併記する。 そうでない場合は、Unix系の表記で統一する。

プロンプト記号

  Unix系の`$`にて表記する。

プロンプト表記例

    $ java -version

コメント記号

  Unix系の`#`にて表記する。
  なお、本ガイドラインでは、root権限でコマンドを実行することはなく、`#`はコメント記号としてのみ扱う。

コメント表記例

    $ # 行頭コメント
    $ java -version # 行末コメント

Bean定義（XMLConfig）のプロパティとコンストラクタについて

  本ガイドラインでは、`p`と`c`のネームスペースを用いた表記とする。 ネームスペースを用いることで、Bean定義の記述が簡潔になったり、コンストラクタ引数が明確になる効果がある。

ネームスペースを利用した記述

    <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
        <property name="lineTokenizer">
            <bean class="org.terasoluna.batch.item.file.transform.FixedByteLengthLineTokenizer"
                  c:ranges="1-6, 7-10, 11-12, 13-22, 23-32"
                  c:charset="MS932"
                  p:names="branchId,year,month,customerId,amount"/>
        </property>
    </bean>

参考までに、ネームスペースを利用しない記述を示す。

ネームスペースを利用しない記述

    <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
        <property name="lineTokenizer">
            <bean class="org.terasoluna.batch.item.file.transform.FixedByteLengthLineTokenizer">
                <constructor-arg index="0" value="1-6, 7-10, 11-12, 13-22, 23-32"/>
                <constructor-arg index="1" value="MS932"/>
                <property name="names" value="branchId,year,month,customerId,amount"/>
            </bean>
        </property>
    </bean>

なお、ユーザに対してネームスペースを用いる記述を強要することはない。 あくまで説明を簡潔にするための配慮であると受け止めてほしい。

注釈の凡例

  本ガイドラインで記載する注釈表記の凡例を以下に示す。

| NOTE 補足説明について記す。

| TIP 簡単な拡張方法や参考資料などについて記す。

| IMPORTANT 順守すべき事など重要事項について記す。

| WARNING 間違えやすい内容など注意すべき事項について記す。

| CAUTION 問題を引き起こしかねない設定や実装など非推奨事項について記す。

## ガイドラインの動作検証環境

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

| Macchinetta Batch Framework (2.x)は、Spring Framework 6の動作環境に合わせ、以下を前提としている。 JDKのバージョンは、Spring Framework 6のベースラインであるJDK 17を使用する。 Tomcat 10.0.xがEOLしたことに伴い、Tomcat 10.1.xを使用する。 これに伴い、Jakarta EE 10ベースとなる。 Jakarta EE 9以降では、ライブラリが内包するクラスのパッケージ名が`javax`から`jakarta`に変更されている。 これに伴い、Jakarta EE 9以降に対応したアプリケーションサーバ以外では動かない点に注意すること。

Macchinetta Batch Framework (2.x) Development Guideline - version 2.6.1.RELEASE, 2026-3-30
> INDEX