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

ここでは、Asakusa Frameworkを使ったバッチアプリケーションの開発の流れを説明します。 このチュートリアルは、ここで説明する開発の流れに沿って構成されています。

2.1. 概要

Asakusa Frameworkを使ったアプリケーション開発の流れを、下図に示します。

_images/development-process.png

以降では、各開発作業の概要を見ていきます。

2.2. アプリケーションの設計

システムの要求仕様などからアプリケーションの設計を行います。

アプリケーションの設計についてはこのチュートリアルでは扱いませんが、 チュートリアル向けに簡略化したアプリケーションの設計資料を [3. サンプルアプリケーションの説明] で説明します。

See also

[Asakusa Framework documentation] - 開発の流れ では設計で検討すべき項目の概要を説明しています。

2.3. アプリケーションの実装

Asakusa Frameworkを使ったバッチアプリケーションの実装の流れを見ていきます。 各項目では対応するチュートリアルページへのリンクを挙げています。

2.3.1. 開発環境の準備

まずバッチアプリケーションの開発環境を準備 [4. 開発環境の準備] します。 基本的には通常のJava開発環境と同じような環境を利用することができます。 このチュートリアルではEclipse環境を利用 [5. Eclipse環境のセットアップ] します。

開発環境を準備したらバッチアプリケーションのソースコード一式を作成・管理するためのプロジェクトを作成 [6. プロジェクトの作成] します。 また、バッチアプリケーションのテストを実行するために、Asakusa Frameworkの実行環境をインストール [7. Asakusa Frameworkのインストール] します。

2.3.2. データモデル定義DSLの記述

データモデル定義に基づいて、Asakusa Frameworkが提供するデータモデル記述言語(DMDL)を記述 [8. DMDLによるデータモデルの定義] してアプリケーションで利用するデータモデルを定義します。 DMDLには結合や集計といった処理を定義 [9. 結合モデルと集計モデルの定義] したり、外部入出力のファイルフォーマット情報を定義 [10. CSVフォーマットの定義] することもできます。

記述したDMDLからデータモデルクラスを生成 [11. DMDLのコンパイル] することができます。 データモデルクラスは、後述するAsakusa DSLで処理の入力、及び出力対象のオブジェクトとして利用します。

2.3.3. Asakusa DSLの記述

Asakusa Frameworkでアプリケーションを作成するには、 Asakusa DSLで処理の内容やデータフロー、データの入出力方式を定義します。

Asakusa DSLは、以下のような構造を持っています。

_images/asakusa-dsl.png

2.3.4. アプリケーションのテスト

Asakusa Frameworkは、Asakusa DSLの単位でテストを行うための仕組みが提供されています。

Operator DSLついては、通常のJavaのクラスと同様にテストを行うことが出来ます [14. 演算子のテスト] 。 Flow DSLおよびBatch DSLについては、データフローを実行可能な形式にコンパイルし、テストツールと連携してテストを行うテストドライバーと呼ばれるテスト部品を使用してテストを行います [17. フロー部品のテスト] [19. ジョブフローのテスト] [21. バッチのテスト] 。

テストドライバーを利用したテストはテストセットとして、JUnitなどのテストハーネス上でテストドライバーAPIを使用したテストクラス、およびテストの入力データ、テスト結果の期待値、及びテスト検証のルールを定義したテストデータを作成します。 テストドライバーAPIでは、テストデータをExcelやJSONファイルとして作成するための仕組みが提供されています。

2.3.5. アプリケーションのビルド

Asakusa DSLで作成したアプリケーションのソースコードから、Asakusa DSLコンパイラによって各プラットフォームで実行可能なアプリケーションを生成 [22. バッチのコンパイル] します。

アプリケーションの実行環境にデプロイするにはアプリケーションの実行バイナリのほか、ランタイムライブラリや設定ファイルなども必要です。 Asakusa Frameworkが提供するビルドシステム(Gradle Plugin)は、これらをパッケージングする仕組み [23. デプロイ用パッケージの作成] を提供しています。

2.3.6. アプリケーションのデプロイと実行

開発したバッチアプリケーションをSpark環境などの運用環境で実行する準備 [24. Spark環境へのデプロイ] を行います。 準備が整ったら、バッチアプリケーションを実行 [25. Spark環境上のバッチ実行] してみましょう。