SlideShare una empresa de Scribd logo
1 de 72
© 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
FAILEDCOMPLETE
D
開発時のポイント
<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データの商標または登録商標です。
その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。

Más contenido relacionado

La actualidad más candente

20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つYuichi Hasegawa
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るGo Miyasaka
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring土岐 孝平
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き土岐 孝平
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来Hiromasa Oka
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugMasatoshi Tada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 

La actualidad más candente (20)

20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 

Similar a バッチは地味だが役に立つ

新しい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
 
【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
 
yokyo-unv.
yokyo-unv.yokyo-unv.
yokyo-unv.hirano
 
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(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
 
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合InnovationSprint2011
 
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みJaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みHideki Sugimoto
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~apkiban
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例Recruit Technologies
 
Sharding with sql alchemy
Sharding with sql alchemySharding with sql alchemy
Sharding with sql alchemyAkira Matsuzaki
 
カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!Masataka Kawahara
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...智治 長沢
 
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」PC Cluster Consortium
 

Similar a バッチは地味だが役に立つ (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シンポジウムアブストラクト作成のポイント
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
 
yokyo-unv.
yokyo-unv.yokyo-unv.
yokyo-unv.
 
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(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 ...
 
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
 
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組みJaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
 
Sharding with sql alchemy
Sharding with sql alchemySharding with sql alchemy
Sharding with sql alchemy
 
カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
 
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 

Más de apkiban

システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用apkiban
 
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くSpring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くapkiban
 
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用apkiban
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflixapkiban
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢apkiban
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告apkiban
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 apkiban
 
TERASOLUNA Framework on the Spring IO Platform
TERASOLUNA Framework on the Spring IO PlatformTERASOLUNA Framework on the Spring IO Platform
TERASOLUNA Framework on the Spring IO Platformapkiban
 
Spring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるSpring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるapkiban
 

Más de apkiban (9)

システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
 
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗くSpring Initializrをハックする-カスタマイズを通してその内部実装を覗く
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
 
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用大規模・長期保守を見据えたエンタープライズシステム開発へのSpring Frameworkの適用
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflix
 
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」
 
TERASOLUNA Framework on the Spring IO Platform
TERASOLUNA Framework on the Spring IO PlatformTERASOLUNA Framework on the Spring IO Platform
TERASOLUNA Framework on the Spring IO Platform
 
Spring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わるSpring 5 でSpring Test のここが変わる
Spring 5 でSpring Test のここが変わる
 

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

  • 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 FAILEDCOMPLETE D 開発時のポイント <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データの商標または登録商標です。 その他、記載されている会社名、商品名、サービス名等は、各社の商標または登録商標です。