SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
© 2017 NTT DATA Corporation
2017年5月25日
株式会社 NTTデータ 林 優一郎
© 2017 NTT DATA Corporation 2
所属:
 株式会社NTTデータ ソフトウェア工学推進センタ
名前:
 林優一郎
経歴:
 入社4年目
 1~3年目の間、公共/金融の開発案件に従事
 現在はTERASOLUNA Batch FWの整備を担当
 Spring Batch歴:約半年
自己紹介
© 2017 NTT DATA Corporation 3
一般的(?)なBatchのイメージ
地味
華やかさがない
Webのおまけ
デザインとか無いし、
動くものがで
きればそれでいい
システムに必要な
のはわかるけど・・・
© 2017 NTT DATA Corporation 4
バッチ処理 【 batch processing 】 一括処理 / バッチ実行 / 一括実行
- IT用語辞典 e-Words
(http://e-words.jp/w/バッチ処理.html)
バッチ処理とは、一定期間(もしくは一定量)データを集め、まとめて一括処理を行う
処理方式。または、複数の手順からなる処理において、あらかじめ一連の手順を登
録しておき、自動的に連続処理を行う処理方式。
企業における売上データや受注データの集計処理など、一定期間ごとに大量の
データを集めて処理する場合に有効な処理方式である。
キーワード
まとめて一括処理
大量のデータを集めて処理する場合に有効
バッチ処理とは?
© 2017 NTT DATA Corporation 5
(オンライン)リアルタイム処理 【 real-time processing 】
- IT用語辞典 e-Words
(http://e-words.jp/w/リアルタイム処理.html)
リアルタイム処理とは、データの処理要求が発生したときに、即座に処理を実行して
結果を返す方式。「リアルタイム」(real-time)は即時の、同時の、実時間の、といった
意味の英語表現で、コンピュータが利用者の指示や状況の変化にほとんど同時に反
応することを意味する。
キーワード
即座に処理
バッチ処理の反対?
© 2017 NTT DATA Corporation 6
オンライン vs バッチ?
地味なバッチ処理だが、システムにはなくてはならない存在!!
そんなバッチ処理を実現するSpring Batchが今日の主題です!
オンライン
システム
ブラウザ バッチ
システム
リクエスト
レスポンス
入力
出力
対比 実行
即時レスポンス まとめて一括処理
どんなシステムでも絶対あるが・・・結局は裏方。
© 2017 NTT DATA Corporation 7
本日の話のゴール
1. Spring Batchの基本機能や概念いついて知ってもらうこと
2. Spring Batchが「できること」/「できないこと」(強み/弱み)
について知ってもらうこと
3. Spring Batchを使った新しいTERASOLUNA Batch FW
について知ってもらうこと
© 2017 NTT DATA Corporation 8
Spring Batchについて
Spring Batchは軽量で簡単なバッチフレームワークであり、
エンタープライズシステムにおける日常業務に必要なロバストなバッチ
アプリケーションの開発のために開発されました。Spring Batchでは
大量のデータを処理するために必要となる便利な機能を提供している。
また、Spring Frameworkが提供するAOPやDIなどの機能を利用すること
が可能である。
http://projects.spring.io/spring-batch/
2008/3
1.0.0 RELEASE
2009/4
2.0.0 RELEASE
2014/3
3.0.0 RELEASE
4.0.0 未定
© 2017 NTT DATA Corporation 9
なぜ今Spring Batchについて話すのか?
JSUGのアンケートでは長年、興味があるテーマの上位にある
⇒ 興味を持っている人は多い
身の回りで話を聞かない、Webでもまとまった情報がない
⇒ 興味をもっている人が少ないのか?
NTTデータの社内事情
TERASOLUNAがSpring Batchを使うことにした
⇒ 多くの人にSpring Batchのことを知ってほしい!
(TERASOLUNA Batch)
© 2017 NTT DATA Corporation 10
なぜ今Spring Batchについて話すのか?
JSUGのアンケートでは長年、興味があるテーマの上位にある
⇒ 興味を持っている人は多い
身の回りで話を聞かない、Webでもまとまった情報がない
⇒ 興味をもっている人が少ないのか?
NTTデータの社内事情
TERASOLUNAがSpring Batchを使うことにした
⇒ 多くの人にSpring Batchのことを知ってほしい!
(TERASOLUNA Batch)
今日はTERASOLUNAの取組みで
得られた知見をベースに、
Spring Batchの特徴や
を伝えます!開発時のポイント
11© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA Batch FW
TERASOLUNAの概要
TERASOLUNA Batch FW
本日のコンテンツ
© 2017 NTT DATA Corporation 12
Spring Batch
13© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA Batch FW
TERASOLUNAの概要
TERASOLUNA Batch FW
次のセクション
© 2017 NTT DATA Corporation 14
とりあえず、Spring Batch QUICK STARTを動かしてみる
http://projects.spring.io/spring-batch/
© 2017 NTT DATA Corporation 15
Spring Batchの基本構成(チャンクモデル)
■JobLaucher
Jobを起動するためのインターフェース
■Job:
バッチアプリケーションの一連の処理をまとめた1実行単位
■Step:
Jobを構成する処理の単位
■JobRepository:
JobやStepの状況を管理する機構
■ItemReader/Processor/Writer:
実際の処理(入出力、業務処理等)を分割したインタフェース
© 2017 NTT DATA Corporation 16
処理全体の流れ
© 2017 NTT DATA Corporation 17
ItemReader/ItemProcessor/ItemWriterの関係
© 2017 NTT DATA Corporation 18
【参考】xmlファイルでジョブ定義の例
ジョブ定義
Writer定義
Processor定義
Reader定義
基本設定
他の設定ファイル読込み
Component-scan
mybatis
IOや業務処理のbeanを定義
Reader/Processor/Writerを
ジョブとして定義
19© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA Batch FW
TERASOLUNAの概要
TERASOLUNA Batch FW
次のセクション
© 2017 NTT DATA Corporation 20
実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者は豊富なのか?
教育用のコンテンツとしてまとまった資材があるのか?
同期実行、非同期実行が選択できるのか?
DB、ファイルなど入出力IOが選択できるのか?
様々なファイルフォーマットに対応しているのか?
ジョブの再実行(手動/スケジュール)ができるのか?
再実行した時に、処理を未処理部分に絞ることができるのか?
一定量のデータを効率よく処理できるのか?
ジョブを並列/多重に実行できるのか?
© 2017 NTT DATA Corporation 21
Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、チャンクモデル
コマンドライン実行、 Webコンテナで実行
処理モデル
起動方法
データの入出力
処理の効率化
ジョブの管理
フロー制御、多重実行、並列実行
ファイル、データベース
© 2017 NTT DATA Corporation 22
Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、チャンクモデル
コマンドライン実行、 Webコンテナで実行
処理モデル
起動方法
データの入出力
処理の効率化
ジョブの管理
フロー制御、多重実行、並列実行
ファイル、データベース
© 2017 NTT DATA Corporation 23
Spring Batchの処理モデル
タスクレットモデル
Taskletのみで構成
トランザクションの数は基本1つ
リスタート機能なし
チャンクモデル
Reader/Processor/Writerで構成
チャンク単位にトランザクションが発生
リスタート機能あり
© 2017 NTT DATA Corporation 24
タスクレットジョブの定義例 開発時のポイント
© 2017 NTT DATA Corporation 25
SimpleJobTaskletの実装例
JobのBean定義
タスクレットの実装
入出力/業務処理
をコーディング
© 2017 NTT DATA Corporation 26
チャンクジョブの定義例 開発時のポイント
© 2017 NTT DATA Corporation 27
タスクレットジョブとチャンクジョブ 開発時のポイント
タスクレットモデル
チャンクモデル
taskletのbean定義参照の代わりにチャンクとし
てreader/processor/writerを定義している
© 2017 NTT DATA Corporation 28
タスクレットモデルとチャンクモデルの使い分け例
リカバリを限りなくシンプルにしたい
処理の内容をまとめたい
大量のデータを安定して処理したい
エラー復旧後は未処理データから
リスタートしたい
開発チームの習熟度や、現行システムに合わせて
“ジョブごと”に適宜選択する。
タスクレットモデル
チャンクモデル
開発時のポイント
© 2017 NTT DATA Corporation 29
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、チャンクモデル
コマンドライン実行、 Webコンテナで実行
処理モデル
起動方法
データの入出力
処理の効率化
ジョブの管理
フロー制御、多重実行、並列実行
ファイル、データベース
© 2017 NTT DATA Corporation 30
ジョブの起動方式
同期実行方式
非同期実行方式(Webコンテナ)
© 2017 NTT DATA Corporation 31
ジョブの起動方式の使い分け例 開発時のポイント
業務要件によって実行方式を選択する!
同期実行
非同期実行(Web)
ジョブ実行のタイミングが決まっている
複数のジョブを組合せる
(ジョブ実行の条件分岐がある)
バッチ実行に即時性が求められる
処理時間
短い
長い
© 2017 NTT DATA Corporation 32
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、チャンクモデル
コマンドライン実行、 Webコンテナで実行
処理モデル
起動方法
データの入出力
処理の効率化
ジョブの管理
フロー制御、多重実行、並列実行
ファイル、データベース
© 2017 NTT DATA Corporation 33
データの入出力
Job
DB
ファイル
(xml, csv, tsv等)
入力/出力
対応ファイル形式
• フラットファイル
• XML(固定長、可変長)
• Oracle
• PostgreSQL
• MySQL
• etc・・・
ジョブの中でIOを定義する!
定義例として「ファイル読込み」「DB書込み」を解説します
© 2017 NTT DATA Corporation 34
データ入出力定義の例(ファイル読込み)
LineMapperの定義
Tokenizerの定義
FieldSetMapperの定義
開発時のポイント
Bean定義
© 2017 NTT DATA Corporation 35
データ入出力定義の例(ファイル読込み) 開発時のポイント
Bean定義
定義したreaderをItemReaderに設定(チャンク)
© 2017 NTT DATA Corporation 36
データ入出力定義の例(DB書込み) 開発時のポイント
Bean定義
Mapper XML
Mapper IF
MyBatis-Springが提供するMyBatisBatchItemWriterを定義
© 2017 NTT DATA Corporation 37
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、チャンクモデル
コマンドライン実行、 Webコンテナで実行
処理モデル
起動方法
データの入出力
処理の効率化
ジョブの管理
フロー制御、多重実行、並列実行
ファイル、データベース
© 2017 NTT DATA Corporation 38
フロー制御
複数のジョブ(ジョブネット)間の処理の流れを制御すること。
スケジューラとフレームワーク機能の両方で実現可能。
Job1
Scheduler
スケジューラ制御
Job2 Job3
Job
Step1
Scheduler
Spring Batch制御
Step2 Step3
Spring Batchで制御する
場合は、Step単位で実行。
© 2017 NTT DATA Corporation 39
Spring Batchによるシーケンシャルフローの定義方法 開発時のポイント
Job
Step1
Step2
Step3
<batch:step>で、このステップの正常終了後に起動する
後続ステップを指定し、next属性に後続ステップのidを
設定する。
© 2017 NTT DATA Corporation 40
Spring Batchによる条件分岐フローの定義方法
Job
StepA
StepB StepC
FAILEDCOMPLETED
開発時のポイント
<batch:step>要素内にnext属性を指定せず、
<batch:next>を複数設定し、on属性には遷移条
件となるステップの終了コードを指定する。
© 2017 NTT DATA Corporation 41
フロー制御応用例の紹介
複数の異なるジョブ(ステップ)を、
同時実行する並列処理
1ジョブ(ステップ)の処理対象を分
割して、同時に実行する多重処理
開発時のポイント
© 2017 NTT DATA Corporation 42
【再掲】Spring Batchの主な特徴
要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能!
実行状況の永続化、リスタート/スキップ機能
タスクレットモデル、チャンクモデル
コマンドライン実行、 Webコンテナで実行
処理モデル
起動方法
データの入出力
処理の効率化
ジョブの管理
フロー制御、多重実行、並列実行
ファイル、データベース
© 2017 NTT DATA Corporation 43
ジョブの管理機能
ジョブの起動状態や実行結果を記録および、記録した情報を元に次に行うべき行動を判断する
(スケジューラが担っていた、ジョブの状態管理をフレームワークの機能で実現)
障害発生時リスタート制御 二重起動防止
等を実現
DataBaseDataBase
1000件
1000件
1000件
1000件
1000件
・
・
・
コミットインターバルを
1000件に設定
障害発生時リスタートの例
障害発生!
実行したジョブの実行結果、
実行パラメータ、コンテキスト等が保存される。
リスタート
1000件1000件
エラーデータのみ再実行 or
エラーデータから再実行
44© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA Batch FW
TERASOLUNAの概要
TERASOLUNA Batch FW
次のセクション
© 2017 NTT DATA Corporation 45
【再掲】実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者は豊富なのか?
教育用のコンテンツとしてまとまった資材があるのか?
同期実行、非同期実行が選択できるのか?
DB、ファイルなど入出力IOが選択できるのか?
様々なファイルフォーマットに対応しているのか?
ジョブの再実行(手動/スケジュール)ができるのか?
再実行した時に、処理を未処理部分に絞ることができるのか?
一定量のデータを効率よく処理できるのか?
ジョブを並列/多重に実行できるのか?
開発時のポイント
© 2017 NTT DATA Corporation 46
【再掲】実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者は豊富なのか?
教育用のコンテンツとしてまとまった資材があるのか?
同期実行、非同期実行が選択できるのか?
DB、ファイルなど入出力IOが選択できるのか?
様々なファイルフォーマットに対応しているのか?
ジョブの再実行(手動/スケジュール)ができるのか?
再実行した時に、処理を未処理部分に絞ることができるのか?
一定量のデータを効率よく処理できるのか?
ジョブを並列/多重に実行できるのか?
開発時のポイント
© 2017 NTT DATA Corporation 47
【再掲】実際の開発でSpring Batchに求められること
性能
異常時対応
起動方式
入出力IF
開発者
PM
有識者
周辺資材
Spring Batchでの開発経験がある有識者は豊富なのか?
教育用のコンテンツとしてまとまった資材があるのか?
同期実行、非同期実行が選択できるのか?
DB、ファイルなど入出力IOが選択できるのか?
様々なフォーマットに対応しているのか?
ジョブの再実行(手動/スケジュール)ができるのか?
再実行した時に、処理を未処理部分に絞ることができるのか?
一定量のデータを効率よく処理できるのか?
ジョブを並列/多重に実行できるのか?
開発時のポイント
簡単に非同期実行が実現できない!
対応していないものがある!
有識者が不足!
日本語の情報もあまりない!
© 2017 NTT DATA Corporation 48
【起動方式】Webコンテナによる非同期実行の課題 開発時のポイント
障害発生時のリカバリが難しい
• バッチ処理でトラブルが発生した場合、システム構成によってWebサーバ
を停止しなければならない(Webサーバにバッチを配置した場合)
 Webとバッチでサーバを分離した場合、サーバ間通信機構を組み込
む必要が出てくる。
• トラブル解消後どのジョブをやり直せばよいかがわからない
そもそも・・・
もっと簡単に非同期バッチを実現できないのか?
© 2017 NTT DATA Corporation 49
【入出力IF】ファイルアクセス時の諸問題
現在稼働しているエンタープライズシステムでは、様々な形式のCSVファイルが利用されている。
対応出来ないファイルが存在すること、業務AP開発者はSpring Batchを避けるかも…
対応できない文字やフォーマットが存在する
1. 固定長改行なしファイルを処理できない
 spring-batch では、改行までを1レコードとして扱うため
2. マルチバイト文字が正しく処理できない。
 spring-batch では、Stringのlengthを元に処理しているため
【例】: 期待 "𠮷田 太郎".substring(0, 2); // => "𠮷“
実際 "𠮷田 太郎".substring(0, 3); // => "𠮷"
3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。
 spring-batch では、エスケープ処理を実装していないため
[例]:“aa,a”,bbb,ccc ⇒ 対応していない!
開発時のポイント
© 2017 NTT DATA Corporation 50
【有識者/周辺資材】Spring Batch有識者や資材
圧倒的に有識者が不足しているとまでは行かない。
が、
他の技術要素に比べると扱える人は少ない
と思われる。
インターネット上にも日本語で体系的にまとめた
情報がすくない。
開発時のポイント
© 2017 NTT DATA Corporation 51
これまでの振り返り
• 日本語で記述された資料が少ない
• 有識者や事例が少ないため、開発のノウハウがない
• 一部不足機能が存在する
Spring Batchの弱み
Spring Batchの強み
• 大量のデータを処理するために必要となる便利な機能が
提供されている。(処理モデル、起動方法等)
• Spring Frameworkの機能を利用することが可能。
• WebコンテナによるWebAPとの連動を実現。
© 2017 NTT DATA Corporation 52
TERASOLUNA Batch FW
53© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA Batch FW
TERASOLUNAの概要
TERASOLUNA Batch FW
次のセクション
© 2017 NTT DATA Corporation 54
TERASOLUNAとは
Process
Environment
Support
蓄積されたノウハウ
を展開するための
研修や教育サービス
サポート
数多くのシステム開発で
培ったノウハウを盛り込んだ
標準開発手順・管理手順
標準手順
ソフトウェアを開発する際の
雛形になるフレームワーク
と開発を支援するツール
開発環境
数多くのシステム開発実績をもとにした「標準手順」「開発環境」「サポート」を
トータルで提供しており、TERASOLUNAを活用することで、
高品質なシステム開発が実現できます。
TERASOLUNAとは、NTTデータのシステム開発を支える
オープン系システム開発のための総合ソリューション
© 2017 NTT DATA Corporation 55
OSSのJava Batch FW
2008/1.0.0 2009/2.0.0 2014/3.0.0 未定/4.0.0
2008/2.x 2011/3.x NEW!
2017/5.x
2000年代前半/
1.x (非OSS)
Java EE
2013/EE7 未定/EE8
Spring Batch
TERASOLUNAは10年以上の歴史を持つFWで、
OSS化もSpring Batchと同時期!
© 2017 NTT DATA Corporation 56
TERASOLUNA 5.xのコンセプト
これまで 現在
FW自体に
付加価値
FWが
コモディティ化
Java FWが
多数乱立
Java FWは
SpringかJava EEの2強
業
界
動
向
当
社
の
取
組
独自FWとして整備
OSS(Spring)を
最大限活用
これまでのTERASOLUNA 新たなTERASOLUNA
エンタープライズ適用に
必要なサポートを提供
サポート提供と合わせて
エンタープライズ適用に
必要なガイドラインの充実
© 2017 NTT DATA Corporation 57
TERASOLUNAのコンセプト
2000年頃 現在
FW自体に
付加価値
FWが
コモディティ化
Java FWが
多数乱立
Java FWは
SpringかJava EEの2強
業
界
動
向
当
社
の
取
組
独自FWとして整備
OSS(Spring)を
最大限活用
これまでのTERASOLUNA 新たなTERASOLUNA
エンタープライズ適用に
必要なサポートを提供
サポート提供と合わせて
エンタープライズ適用に
必要なガイドラインの充実
世の中のOSSを活用して
エンタープライズ向け
フレームワークを整備
© 2017 NTT DATA Corporation 58
TERASOLUNA Batch FW for Java 5.x
業界の動向を考慮し、Spring Batchをベースと
既存のOSSを組み合わせた
新しいフレームワークの提供を開始
Java VM
Enterprise Application
Spring Framework
OSS
Libraries
Spring Batch MyBatis
NEW
59© 2017 NTT DATA Corporation
1.Spring Batch
Spring Batchの基本構成要素/アーキテクチャ
Spring Batchの5つの特徴
エンタープライズ利用時の懸念事項
2.TERASOLUNA Batch FW
TERASOLUNAの概要
TERASOLUNA Batch FW
次のセクション
© 2017 NTT DATA Corporation 60
TERASOLUNA Batch FWの構成要素
•Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク
•エンタープライズ向けに必要な汎用的な部品共通ライブラリ
•OSSを利用したエンタープライズ向けアプリ開発に
おけるベストプラクティスドキュメント開発ガイドライン
•基本的な開発方法を学ぶ学習教材チュートリアル
•基本的な機能を実装したサンプルアプリサンプルAP
•プロジェクト構成のひな形ブランクプロジェクト
2017年
リリース
予定
© 2017 NTT DATA Corporation 61
ソフトウェアフレームワーク
Spring Framework
Enterprise Application
Java VM
OSS
Libraries
Spring Batch MyBatis
3.4.2
4.3.5
3.0.7
TERASOLUNA共通ライブラリ 1.0.0
slf4j 1.7.22
hibernate 5.2.4
・・・等
Spring IO Platformに準拠した
OSSの組合わせを規定
© 2017 NTT DATA Corporation 62
共通ライブラリ
Spring Batchの弱点を
TERASOLUNA共通ライブラリの機能として提供
簡易に可用性を担保
した非同期実行方式
を実現
ファイルアクセスの
諸問題を解決
https://github.com/terasoluna-batch/v5-fw
© 2017 NTT DATA Corporation 63
共通ライブラリ
非同期実行方式として、
DBポーリングによるジョブ実行を実現
障害発生時の影響範囲極小化
Webコンテナと比較して
製造が容易
TERASOLUNA共通ライブラリとして
DBポーリングを実行する機構
AsycBatchDeamonを提供
© 2017 NTT DATA Corporation 64
共通ライブラリ
非同期実行方式として、
DBポーリングによるジョブ実行を実現
 同期実行方式
スケジュールどおりにジョブを起動したり、複数のジョブを組み合わせてる場合に利用
 非同期実行方式(Webコンテナ)
DBポーリングと同様だが、起動までの即時性が求められる場合にはこちらを利用
 非同期実行方式(DBポーリング)
ディレード処理、処理時間が短いジョブの連続実行、大量ジョブの集約などに利用
3通りの起動方式を選択可能
© 2017 NTT DATA Corporation 65
TERASOLUNA共通ライブラリとして
ファイルアクセス時の諸問題に
対応した機能を提供!
共通ライブラリ
1. 固定長改行なしファイル、を処理できない
 spring-batch では、改行までを1レコードとして扱うため
2. マルチバイト文字が正しく処理できない。
 spring-batch では、Stringのlengthを元に処理しているため
3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。
 spring-batch では、エスケープ処理を実装していないため
© 2017 NTT DATA Corporation 66
開発ガイドライン
https://github.com/terasoluna-batch/v5-guideline
開発者向けのガイドラインを公開!
Spring Batchに限らず、バッチアプリケーション開発のノウハウが集結!
検索
© 2017 NTT DATA Corporation 67
【参考】開発ガイドラインのノウハウ一例
方式の活用シーンを明確化!
陥りやすい設計ミス、実装ミスを掲載!
開発ガイドラインにより、各方針のメリット/デメリットを明記し、
実装例も掲載しているため、設計/実装の助けとなりえる
設定ファイル例、実装例が豊富!
© 2017 NTT DATA Corporation 68
サンプルAP
様々な機能の実装例をサンプルとして提供!
ファイル/DBアクセスの実装例
同期/非同期実行の実装例
タスクレット/チャンクの実装例
例外処理/並列処理の実装例
等
https://github.com/terasoluna-batch/v5-functionaltest
© 2017 NTT DATA Corporation 69
ブランクプロジェクト
エンタープライズ開発に必要なノウハウを詰め込んだ
プロジェクト構成の雛形を提供
Maven Archetype Pluginのarchetype:generate
を使用して、プロジェクトを作成
https://github.com/terasoluna-batch/v5-sample
© 2017 NTT DATA Corporation 70
今後の取組み
TERASOLUNA Frameworkに興味がある方は下記までご連絡ください
TERASOLUNA窓口
E-mail: terasoluna@am.nttdata.co.jp
NTTデータは今後もJavaアプリケーション開発の
ベストプラクティスをOSSで提供し続けます
エンタープライズJavaシステム開発で積極的に活用し、
情報交換やコミュニティ活動を活発化して
さらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。
© 2017 NTT DATA Corporation 71
皆様へのお願い
改善要望は
New issueを!
改善などの要望があれば、お気軽にどうぞ!
© 2017 NTT DATA Corporation
「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。
その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。

Weitere ähnliche Inhalte

Was ist angesagt?

アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようNobuyuki Sasaki
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現Hiroshi Toyama
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Ryosuke Uchitate
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-Yuta Imai
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 

Was ist angesagt? (20)

アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
これからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみようこれからLDAPを始めるなら 「389-ds」を使ってみよう
これからLDAPを始めるなら 「389-ds」を使ってみよう
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
 
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdevApache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 

Ähnlich wie 20170525 jsug バッチは地味だが役に立つ

新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとはapkiban
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~apkiban
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Yuichi Hasegawa
 
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイントNaoki Ohsugi
 
yokyo-unv.
yokyo-unv.yokyo-unv.
yokyo-unv.hirano
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏Developers Summit
 
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)Masahiko Ebisuda
 
【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます
【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます
【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます智治 長沢
 
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...NTT DATA Technology & Innovation
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例Recruit Technologies
 
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みJaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みHideki Sugimoto
 
Sharding with sql alchemy
Sharding with sql alchemySharding with sql alchemy
Sharding with sql alchemyAkira Matsuzaki
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~apkiban
 
カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!Masataka Kawahara
 
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合InnovationSprint2011
 
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...智治 長沢
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...NTT DATA OSS Professional Services
 
Relationship betweenddd and mvc
Relationship betweenddd and mvcRelationship betweenddd and mvc
Relationship betweenddd and mvcTakao Tetsuro
 

Ähnlich wie 20170525 jsug バッチは地味だが役に立つ (20)

新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは新しいTERASOLUNA Batch Frameworkとは
新しいTERASOLUNA Batch Frameworkとは
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
SQiPシンポジウムアブストラクト作成のポイント
SQiPシンポジウムアブストラクト作成のポイントSQiPシンポジウムアブストラクト作成のポイント
SQiPシンポジウムアブストラクト作成のポイント
 
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
良い原稿を作る3つの要素、読み易い文章を作る5つのコツ、SQiPシンポジウムアブストラクト作成のポイント
 
yokyo-unv.
yokyo-unv.yokyo-unv.
yokyo-unv.
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
 
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
 
【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます
【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます
【#VSUG DAY】Team Foundation Server を乗りこなすコツ教えます
 
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
データ活用を俊敏に進めるためのDataOps実践方法とその高度化のためのナレッジグラフ活用の取り組み(NTTデータ テクノロジーカンファレンス 2020 ...
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
 
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みJaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
 
Sharding with sql alchemy
Sharding with sql alchemySharding with sql alchemy
Sharding with sql alchemy
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
 
カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!
 
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
 
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
 
Hadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tkHadoop ecosystem NTTDATA osc15tk
Hadoop ecosystem NTTDATA osc15tk
 
Relationship betweenddd and mvc
Relationship betweenddd and mvcRelationship betweenddd and mvc
Relationship betweenddd and mvc
 

Mehr von Yuichi Hasegawa

Spring 5でSpring Testのここが変わる_公開版
Spring 5でSpring Testのここが変わる_公開版Spring 5でSpring Testのここが変わる_公開版
Spring 5でSpring Testのここが変わる_公開版Yuichi Hasegawa
 
thymeleafさいしょの一歩
thymeleafさいしょの一歩thymeleafさいしょの一歩
thymeleafさいしょの一歩Yuichi Hasegawa
 
マイクロサービス入門(Spring fest 2017)
マイクロサービス入門(Spring fest 2017)マイクロサービス入門(Spring fest 2017)
マイクロサービス入門(Spring fest 2017)Yuichi Hasegawa
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Yuichi Hasegawa
 
こどもの絵本 ヒトラーとナチ
 こどもの絵本 ヒトラーとナチ こどもの絵本 ヒトラーとナチ
こどもの絵本 ヒトラーとナチYuichi Hasegawa
 
Spring知っておきたい
Spring知っておきたいSpring知っておきたい
Spring知っておきたいYuichi Hasegawa
 
Spring4-DevLove発表資料
Spring4-DevLove発表資料Spring4-DevLove発表資料
Spring4-DevLove発表資料Yuichi Hasegawa
 
[Jjug]java small object programming
[Jjug]java small object programming[Jjug]java small object programming
[Jjug]java small object programmingYuichi Hasegawa
 
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming[豆ナイト]Java small object programming
[豆ナイト]Java small object programmingYuichi Hasegawa
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
Spring3.1概要 AOP & MVC
Spring3.1概要 AOP & MVCSpring3.1概要 AOP & MVC
Spring3.1概要 AOP & MVCYuichi Hasegawa
 

Mehr von Yuichi Hasegawa (16)

Spring 18年の歴史
Spring 18年の歴史Spring 18年の歴史
Spring 18年の歴史
 
Spring 5でSpring Testのここが変わる_公開版
Spring 5でSpring Testのここが変わる_公開版Spring 5でSpring Testのここが変わる_公開版
Spring 5でSpring Testのここが変わる_公開版
 
Enterprise Microservice
Enterprise MicroserviceEnterprise Microservice
Enterprise Microservice
 
thymeleafさいしょの一歩
thymeleafさいしょの一歩thymeleafさいしょの一歩
thymeleafさいしょの一歩
 
マイクロサービス入門(Spring fest 2017)
マイクロサービス入門(Spring fest 2017)マイクロサービス入門(Spring fest 2017)
マイクロサービス入門(Spring fest 2017)
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
 
こどもの絵本 ヒトラーとナチ
 こどもの絵本 ヒトラーとナチ こどもの絵本 ヒトラーとナチ
こどもの絵本 ヒトラーとナチ
 
Jsug 20160422 slides
Jsug 20160422 slidesJsug 20160422 slides
Jsug 20160422 slides
 
Spring知っておきたい
Spring知っておきたいSpring知っておきたい
Spring知っておきたい
 
Spring4-DevLove発表資料
Spring4-DevLove発表資料Spring4-DevLove発表資料
Spring4-DevLove発表資料
 
[Jjug]java small object programming
[Jjug]java small object programming[Jjug]java small object programming
[Jjug]java small object programming
 
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming[豆ナイト]Java small object programming
[豆ナイト]Java small object programming
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
Spring3.1 aop-mvc
Spring3.1 aop-mvcSpring3.1 aop-mvc
Spring3.1 aop-mvc
 
Spring3.1概要 AOP & MVC
Spring3.1概要 AOP & MVCSpring3.1概要 AOP & MVC
Spring3.1概要 AOP & MVC
 

Kürzlich hochgeladen

My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイントshu1108hina1020
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1Toru Oga
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 

Kürzlich hochgeladen (20)

My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 

20170525 jsug バッチは地味だが役に立つ

  • 1. © 2017 NTT DATA Corporation 2017年5月25日 株式会社 NTTデータ 林 優一郎
  • 2. © 2017 NTT DATA Corporation 2 所属:  株式会社NTTデータ ソフトウェア工学推進センタ 名前:  林優一郎 経歴:  入社4年目  1~3年目の間、公共/金融の開発案件に従事  現在はTERASOLUNA Batch FWの整備を担当  Spring Batch歴:約半年 自己紹介
  • 3. © 2017 NTT DATA Corporation 3 一般的(?)なBatchのイメージ 地味 華やかさがない Webのおまけ デザインとか無いし、 動くものがで きればそれでいい システムに必要な のはわかるけど・・・
  • 4. © 2017 NTT DATA Corporation 4 バッチ処理 【 batch processing 】 一括処理 / バッチ実行 / 一括実行 - IT用語辞典 e-Words (http://e-words.jp/w/バッチ処理.html) バッチ処理とは、一定期間(もしくは一定量)データを集め、まとめて一括処理を行う 処理方式。または、複数の手順からなる処理において、あらかじめ一連の手順を登 録しておき、自動的に連続処理を行う処理方式。 企業における売上データや受注データの集計処理など、一定期間ごとに大量の データを集めて処理する場合に有効な処理方式である。 キーワード まとめて一括処理 大量のデータを集めて処理する場合に有効 バッチ処理とは?
  • 5. © 2017 NTT DATA Corporation 5 (オンライン)リアルタイム処理 【 real-time processing 】 - IT用語辞典 e-Words (http://e-words.jp/w/リアルタイム処理.html) リアルタイム処理とは、データの処理要求が発生したときに、即座に処理を実行して 結果を返す方式。「リアルタイム」(real-time)は即時の、同時の、実時間の、といった 意味の英語表現で、コンピュータが利用者の指示や状況の変化にほとんど同時に反 応することを意味する。 キーワード 即座に処理 バッチ処理の反対?
  • 6. © 2017 NTT DATA Corporation 6 オンライン vs バッチ? 地味なバッチ処理だが、システムにはなくてはならない存在!! そんなバッチ処理を実現するSpring Batchが今日の主題です! オンライン システム ブラウザ バッチ システム リクエスト レスポンス 入力 出力 対比 実行 即時レスポンス まとめて一括処理 どんなシステムでも絶対あるが・・・結局は裏方。
  • 7. © 2017 NTT DATA Corporation 7 本日の話のゴール 1. Spring Batchの基本機能や概念いついて知ってもらうこと 2. Spring Batchが「できること」/「できないこと」(強み/弱み) について知ってもらうこと 3. Spring Batchを使った新しいTERASOLUNA Batch FW について知ってもらうこと
  • 8. © 2017 NTT DATA Corporation 8 Spring Batchについて Spring Batchは軽量で簡単なバッチフレームワークであり、 エンタープライズシステムにおける日常業務に必要なロバストなバッチ アプリケーションの開発のために開発されました。Spring Batchでは 大量のデータを処理するために必要となる便利な機能を提供している。 また、Spring Frameworkが提供するAOPやDIなどの機能を利用すること が可能である。 http://projects.spring.io/spring-batch/ 2008/3 1.0.0 RELEASE 2009/4 2.0.0 RELEASE 2014/3 3.0.0 RELEASE 4.0.0 未定
  • 9. © 2017 NTT DATA Corporation 9 なぜ今Spring Batchについて話すのか? JSUGのアンケートでは長年、興味があるテーマの上位にある ⇒ 興味を持っている人は多い 身の回りで話を聞かない、Webでもまとまった情報がない ⇒ 興味をもっている人が少ないのか? NTTデータの社内事情 TERASOLUNAがSpring Batchを使うことにした ⇒ 多くの人にSpring Batchのことを知ってほしい! (TERASOLUNA Batch)
  • 10. © 2017 NTT DATA Corporation 10 なぜ今Spring Batchについて話すのか? JSUGのアンケートでは長年、興味があるテーマの上位にある ⇒ 興味を持っている人は多い 身の回りで話を聞かない、Webでもまとまった情報がない ⇒ 興味をもっている人が少ないのか? NTTデータの社内事情 TERASOLUNAがSpring Batchを使うことにした ⇒ 多くの人にSpring Batchのことを知ってほしい! (TERASOLUNA Batch) 今日はTERASOLUNAの取組みで 得られた知見をベースに、 Spring Batchの特徴や を伝えます!開発時のポイント
  • 11. 11© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 本日のコンテンツ
  • 12. © 2017 NTT DATA Corporation 12 Spring Batch
  • 13. 13© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  • 14. © 2017 NTT DATA Corporation 14 とりあえず、Spring Batch QUICK STARTを動かしてみる http://projects.spring.io/spring-batch/
  • 15. © 2017 NTT DATA Corporation 15 Spring Batchの基本構成(チャンクモデル) ■JobLaucher Jobを起動するためのインターフェース ■Job: バッチアプリケーションの一連の処理をまとめた1実行単位 ■Step: Jobを構成する処理の単位 ■JobRepository: JobやStepの状況を管理する機構 ■ItemReader/Processor/Writer: 実際の処理(入出力、業務処理等)を分割したインタフェース
  • 16. © 2017 NTT DATA Corporation 16 処理全体の流れ
  • 17. © 2017 NTT DATA Corporation 17 ItemReader/ItemProcessor/ItemWriterの関係
  • 18. © 2017 NTT DATA Corporation 18 【参考】xmlファイルでジョブ定義の例 ジョブ定義 Writer定義 Processor定義 Reader定義 基本設定 他の設定ファイル読込み Component-scan mybatis IOや業務処理のbeanを定義 Reader/Processor/Writerを ジョブとして定義
  • 19. 19© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  • 20. © 2017 NTT DATA Corporation 20 実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なファイルフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか?
  • 21. © 2017 NTT DATA Corporation 21 Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  • 22. © 2017 NTT DATA Corporation 22 Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  • 23. © 2017 NTT DATA Corporation 23 Spring Batchの処理モデル タスクレットモデル Taskletのみで構成 トランザクションの数は基本1つ リスタート機能なし チャンクモデル Reader/Processor/Writerで構成 チャンク単位にトランザクションが発生 リスタート機能あり
  • 24. © 2017 NTT DATA Corporation 24 タスクレットジョブの定義例 開発時のポイント
  • 25. © 2017 NTT DATA Corporation 25 SimpleJobTaskletの実装例 JobのBean定義 タスクレットの実装 入出力/業務処理 をコーディング
  • 26. © 2017 NTT DATA Corporation 26 チャンクジョブの定義例 開発時のポイント
  • 27. © 2017 NTT DATA Corporation 27 タスクレットジョブとチャンクジョブ 開発時のポイント タスクレットモデル チャンクモデル taskletのbean定義参照の代わりにチャンクとし てreader/processor/writerを定義している
  • 28. © 2017 NTT DATA Corporation 28 タスクレットモデルとチャンクモデルの使い分け例 リカバリを限りなくシンプルにしたい 処理の内容をまとめたい 大量のデータを安定して処理したい エラー復旧後は未処理データから リスタートしたい 開発チームの習熟度や、現行システムに合わせて “ジョブごと”に適宜選択する。 タスクレットモデル チャンクモデル 開発時のポイント
  • 29. © 2017 NTT DATA Corporation 29 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  • 30. © 2017 NTT DATA Corporation 30 ジョブの起動方式 同期実行方式 非同期実行方式(Webコンテナ)
  • 31. © 2017 NTT DATA Corporation 31 ジョブの起動方式の使い分け例 開発時のポイント 業務要件によって実行方式を選択する! 同期実行 非同期実行(Web) ジョブ実行のタイミングが決まっている 複数のジョブを組合せる (ジョブ実行の条件分岐がある) バッチ実行に即時性が求められる 処理時間 短い 長い
  • 32. © 2017 NTT DATA Corporation 32 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  • 33. © 2017 NTT DATA Corporation 33 データの入出力 Job DB ファイル (xml, csv, tsv等) 入力/出力 対応ファイル形式 • フラットファイル • XML(固定長、可変長) • Oracle • PostgreSQL • MySQL • etc・・・ ジョブの中でIOを定義する! 定義例として「ファイル読込み」「DB書込み」を解説します
  • 34. © 2017 NTT DATA Corporation 34 データ入出力定義の例(ファイル読込み) LineMapperの定義 Tokenizerの定義 FieldSetMapperの定義 開発時のポイント Bean定義
  • 35. © 2017 NTT DATA Corporation 35 データ入出力定義の例(ファイル読込み) 開発時のポイント Bean定義 定義したreaderをItemReaderに設定(チャンク)
  • 36. © 2017 NTT DATA Corporation 36 データ入出力定義の例(DB書込み) 開発時のポイント Bean定義 Mapper XML Mapper IF MyBatis-Springが提供するMyBatisBatchItemWriterを定義
  • 37. © 2017 NTT DATA Corporation 37 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  • 38. © 2017 NTT DATA Corporation 38 フロー制御 複数のジョブ(ジョブネット)間の処理の流れを制御すること。 スケジューラとフレームワーク機能の両方で実現可能。 Job1 Scheduler スケジューラ制御 Job2 Job3 Job Step1 Scheduler Spring Batch制御 Step2 Step3 Spring Batchで制御する 場合は、Step単位で実行。
  • 39. © 2017 NTT DATA Corporation 39 Spring Batchによるシーケンシャルフローの定義方法 開発時のポイント Job Step1 Step2 Step3 <batch:step>で、このステップの正常終了後に起動する 後続ステップを指定し、next属性に後続ステップのidを 設定する。
  • 40. © 2017 NTT DATA Corporation 40 Spring Batchによる条件分岐フローの定義方法 Job StepA StepB StepC FAILEDCOMPLETED 開発時のポイント <batch:step>要素内にnext属性を指定せず、 <batch:next>を複数設定し、on属性には遷移条 件となるステップの終了コードを指定する。
  • 41. © 2017 NTT DATA Corporation 41 フロー制御応用例の紹介 複数の異なるジョブ(ステップ)を、 同時実行する並列処理 1ジョブ(ステップ)の処理対象を分 割して、同時に実行する多重処理 開発時のポイント
  • 42. © 2017 NTT DATA Corporation 42 【再掲】Spring Batchの主な特徴 要件・目的に応じてた処理モデルやジョブの起動方法、データ永続化形式等を選択可能! 実行状況の永続化、リスタート/スキップ機能 タスクレットモデル、チャンクモデル コマンドライン実行、 Webコンテナで実行 処理モデル 起動方法 データの入出力 処理の効率化 ジョブの管理 フロー制御、多重実行、並列実行 ファイル、データベース
  • 43. © 2017 NTT DATA Corporation 43 ジョブの管理機能 ジョブの起動状態や実行結果を記録および、記録した情報を元に次に行うべき行動を判断する (スケジューラが担っていた、ジョブの状態管理をフレームワークの機能で実現) 障害発生時リスタート制御 二重起動防止 等を実現 DataBaseDataBase 1000件 1000件 1000件 1000件 1000件 ・ ・ ・ コミットインターバルを 1000件に設定 障害発生時リスタートの例 障害発生! 実行したジョブの実行結果、 実行パラメータ、コンテキスト等が保存される。 リスタート 1000件1000件 エラーデータのみ再実行 or エラーデータから再実行
  • 44. 44© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  • 45. © 2017 NTT DATA Corporation 45 【再掲】実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なファイルフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか? 開発時のポイント
  • 46. © 2017 NTT DATA Corporation 46 【再掲】実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なファイルフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか? 開発時のポイント
  • 47. © 2017 NTT DATA Corporation 47 【再掲】実際の開発でSpring Batchに求められること 性能 異常時対応 起動方式 入出力IF 開発者 PM 有識者 周辺資材 Spring Batchでの開発経験がある有識者は豊富なのか? 教育用のコンテンツとしてまとまった資材があるのか? 同期実行、非同期実行が選択できるのか? DB、ファイルなど入出力IOが選択できるのか? 様々なフォーマットに対応しているのか? ジョブの再実行(手動/スケジュール)ができるのか? 再実行した時に、処理を未処理部分に絞ることができるのか? 一定量のデータを効率よく処理できるのか? ジョブを並列/多重に実行できるのか? 開発時のポイント 簡単に非同期実行が実現できない! 対応していないものがある! 有識者が不足! 日本語の情報もあまりない!
  • 48. © 2017 NTT DATA Corporation 48 【起動方式】Webコンテナによる非同期実行の課題 開発時のポイント 障害発生時のリカバリが難しい • バッチ処理でトラブルが発生した場合、システム構成によってWebサーバ を停止しなければならない(Webサーバにバッチを配置した場合)  Webとバッチでサーバを分離した場合、サーバ間通信機構を組み込 む必要が出てくる。 • トラブル解消後どのジョブをやり直せばよいかがわからない そもそも・・・ もっと簡単に非同期バッチを実現できないのか?
  • 49. © 2017 NTT DATA Corporation 49 【入出力IF】ファイルアクセス時の諸問題 現在稼働しているエンタープライズシステムでは、様々な形式のCSVファイルが利用されている。 対応出来ないファイルが存在すること、業務AP開発者はSpring Batchを避けるかも… 対応できない文字やフォーマットが存在する 1. 固定長改行なしファイルを処理できない  spring-batch では、改行までを1レコードとして扱うため 2. マルチバイト文字が正しく処理できない。  spring-batch では、Stringのlengthを元に処理しているため 【例】: 期待 "𠮷田 太郎".substring(0, 2); // => "𠮷“ 実際 "𠮷田 太郎".substring(0, 3); // => "𠮷" 3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。  spring-batch では、エスケープ処理を実装していないため [例]:“aa,a”,bbb,ccc ⇒ 対応していない! 開発時のポイント
  • 50. © 2017 NTT DATA Corporation 50 【有識者/周辺資材】Spring Batch有識者や資材 圧倒的に有識者が不足しているとまでは行かない。 が、 他の技術要素に比べると扱える人は少ない と思われる。 インターネット上にも日本語で体系的にまとめた 情報がすくない。 開発時のポイント
  • 51. © 2017 NTT DATA Corporation 51 これまでの振り返り • 日本語で記述された資料が少ない • 有識者や事例が少ないため、開発のノウハウがない • 一部不足機能が存在する Spring Batchの弱み Spring Batchの強み • 大量のデータを処理するために必要となる便利な機能が 提供されている。(処理モデル、起動方法等) • Spring Frameworkの機能を利用することが可能。 • WebコンテナによるWebAPとの連動を実現。
  • 52. © 2017 NTT DATA Corporation 52 TERASOLUNA Batch FW
  • 53. 53© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  • 54. © 2017 NTT DATA Corporation 54 TERASOLUNAとは Process Environment Support 蓄積されたノウハウ を展開するための 研修や教育サービス サポート 数多くのシステム開発で 培ったノウハウを盛り込んだ 標準開発手順・管理手順 標準手順 ソフトウェアを開発する際の 雛形になるフレームワーク と開発を支援するツール 開発環境 数多くのシステム開発実績をもとにした「標準手順」「開発環境」「サポート」を トータルで提供しており、TERASOLUNAを活用することで、 高品質なシステム開発が実現できます。 TERASOLUNAとは、NTTデータのシステム開発を支える オープン系システム開発のための総合ソリューション
  • 55. © 2017 NTT DATA Corporation 55 OSSのJava Batch FW 2008/1.0.0 2009/2.0.0 2014/3.0.0 未定/4.0.0 2008/2.x 2011/3.x NEW! 2017/5.x 2000年代前半/ 1.x (非OSS) Java EE 2013/EE7 未定/EE8 Spring Batch TERASOLUNAは10年以上の歴史を持つFWで、 OSS化もSpring Batchと同時期!
  • 56. © 2017 NTT DATA Corporation 56 TERASOLUNA 5.xのコンセプト これまで 現在 FW自体に 付加価値 FWが コモディティ化 Java FWが 多数乱立 Java FWは SpringかJava EEの2強 業 界 動 向 当 社 の 取 組 独自FWとして整備 OSS(Spring)を 最大限活用 これまでのTERASOLUNA 新たなTERASOLUNA エンタープライズ適用に 必要なサポートを提供 サポート提供と合わせて エンタープライズ適用に 必要なガイドラインの充実
  • 57. © 2017 NTT DATA Corporation 57 TERASOLUNAのコンセプト 2000年頃 現在 FW自体に 付加価値 FWが コモディティ化 Java FWが 多数乱立 Java FWは SpringかJava EEの2強 業 界 動 向 当 社 の 取 組 独自FWとして整備 OSS(Spring)を 最大限活用 これまでのTERASOLUNA 新たなTERASOLUNA エンタープライズ適用に 必要なサポートを提供 サポート提供と合わせて エンタープライズ適用に 必要なガイドラインの充実 世の中のOSSを活用して エンタープライズ向け フレームワークを整備
  • 58. © 2017 NTT DATA Corporation 58 TERASOLUNA Batch FW for Java 5.x 業界の動向を考慮し、Spring Batchをベースと 既存のOSSを組み合わせた 新しいフレームワークの提供を開始 Java VM Enterprise Application Spring Framework OSS Libraries Spring Batch MyBatis NEW
  • 59. 59© 2017 NTT DATA Corporation 1.Spring Batch Spring Batchの基本構成要素/アーキテクチャ Spring Batchの5つの特徴 エンタープライズ利用時の懸念事項 2.TERASOLUNA Batch FW TERASOLUNAの概要 TERASOLUNA Batch FW 次のセクション
  • 60. © 2017 NTT DATA Corporation 60 TERASOLUNA Batch FWの構成要素 •Spring, MyBatisなどのOSSフレームワークソフトウェアフレームワーク •エンタープライズ向けに必要な汎用的な部品共通ライブラリ •OSSを利用したエンタープライズ向けアプリ開発に おけるベストプラクティスドキュメント開発ガイドライン •基本的な開発方法を学ぶ学習教材チュートリアル •基本的な機能を実装したサンプルアプリサンプルAP •プロジェクト構成のひな形ブランクプロジェクト 2017年 リリース 予定
  • 61. © 2017 NTT DATA Corporation 61 ソフトウェアフレームワーク Spring Framework Enterprise Application Java VM OSS Libraries Spring Batch MyBatis 3.4.2 4.3.5 3.0.7 TERASOLUNA共通ライブラリ 1.0.0 slf4j 1.7.22 hibernate 5.2.4 ・・・等 Spring IO Platformに準拠した OSSの組合わせを規定
  • 62. © 2017 NTT DATA Corporation 62 共通ライブラリ Spring Batchの弱点を TERASOLUNA共通ライブラリの機能として提供 簡易に可用性を担保 した非同期実行方式 を実現 ファイルアクセスの 諸問題を解決 https://github.com/terasoluna-batch/v5-fw
  • 63. © 2017 NTT DATA Corporation 63 共通ライブラリ 非同期実行方式として、 DBポーリングによるジョブ実行を実現 障害発生時の影響範囲極小化 Webコンテナと比較して 製造が容易 TERASOLUNA共通ライブラリとして DBポーリングを実行する機構 AsycBatchDeamonを提供
  • 64. © 2017 NTT DATA Corporation 64 共通ライブラリ 非同期実行方式として、 DBポーリングによるジョブ実行を実現  同期実行方式 スケジュールどおりにジョブを起動したり、複数のジョブを組み合わせてる場合に利用  非同期実行方式(Webコンテナ) DBポーリングと同様だが、起動までの即時性が求められる場合にはこちらを利用  非同期実行方式(DBポーリング) ディレード処理、処理時間が短いジョブの連続実行、大量ジョブの集約などに利用 3通りの起動方式を選択可能
  • 65. © 2017 NTT DATA Corporation 65 TERASOLUNA共通ライブラリとして ファイルアクセス時の諸問題に 対応した機能を提供! 共通ライブラリ 1. 固定長改行なしファイル、を処理できない  spring-batch では、改行までを1レコードとして扱うため 2. マルチバイト文字が正しく処理できない。  spring-batch では、Stringのlengthを元に処理しているため 3. CSVファイルで区切り文字を含んだ文字列を囲み文字でエスケープ出力できない。  spring-batch では、エスケープ処理を実装していないため
  • 66. © 2017 NTT DATA Corporation 66 開発ガイドライン https://github.com/terasoluna-batch/v5-guideline 開発者向けのガイドラインを公開! Spring Batchに限らず、バッチアプリケーション開発のノウハウが集結! 検索
  • 67. © 2017 NTT DATA Corporation 67 【参考】開発ガイドラインのノウハウ一例 方式の活用シーンを明確化! 陥りやすい設計ミス、実装ミスを掲載! 開発ガイドラインにより、各方針のメリット/デメリットを明記し、 実装例も掲載しているため、設計/実装の助けとなりえる 設定ファイル例、実装例が豊富!
  • 68. © 2017 NTT DATA Corporation 68 サンプルAP 様々な機能の実装例をサンプルとして提供! ファイル/DBアクセスの実装例 同期/非同期実行の実装例 タスクレット/チャンクの実装例 例外処理/並列処理の実装例 等 https://github.com/terasoluna-batch/v5-functionaltest
  • 69. © 2017 NTT DATA Corporation 69 ブランクプロジェクト エンタープライズ開発に必要なノウハウを詰め込んだ プロジェクト構成の雛形を提供 Maven Archetype Pluginのarchetype:generate を使用して、プロジェクトを作成 https://github.com/terasoluna-batch/v5-sample
  • 70. © 2017 NTT DATA Corporation 70 今後の取組み TERASOLUNA Frameworkに興味がある方は下記までご連絡ください TERASOLUNA窓口 E-mail: terasoluna@am.nttdata.co.jp NTTデータは今後もJavaアプリケーション開発の ベストプラクティスをOSSで提供し続けます エンタープライズJavaシステム開発で積極的に活用し、 情報交換やコミュニティ活動を活発化して さらなるJavaの発展、繁栄に向けて共に歩んでいきましょう。
  • 71. © 2017 NTT DATA Corporation 71 皆様へのお願い 改善要望は New issueを! 改善などの要望があれば、お気軽にどうぞ!
  • 72. © 2017 NTT DATA Corporation 「TERASOLUNA」及びそのロゴは、日本及びその他の国おける株式会社NTTデータの商標または登録商標です。 その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。