バナー画像

Java言語では様々なアプリケーションを作成することが出来ますが、Javaで作成したプログラムをバッチ処理として実行したいという要望も多いのではないでしょうか。

本記事では、Javaプログラムを使った手軽に出来るバッチ処理作成について解説していきます。

バッチ処理とは


Javaプログラムをバッチ処理で動かす前に、バッチ処理とは何なのかについて確認しておきましょう。

概要

バッチ処理というのは、処理のひとまとまりのことを表す言葉です。

一般的には「日次バッチ」「月次バッチ」「年次バッチ」のように、定期的な周期で動かす処理のまとまりをバッチ処理と呼びます。

定期的な周期で動かす方法としては、Windows環境では「タスクスケジューラー」機能、MacやLinux環境では「cron」コマンドなどで実行させます。

メリット

バッチ処理を利用するメリットとしては、登録さえしておけば自動的に決まった周期で処理をまとめて実行してくれる点にあります。

スケジューラーにより処理が自動で実行されるため、業務時間外の深夜や早朝などに実行したいプログラムで利用すると非常に便利です。

また一度登録してしまえば、プログラムによる自動化が行え手動によるミスが起きないため、人的ミスを減らす意味でも有効です。

バッチファイルとの違い

バッチ処理と似た言葉に「バッチファイル」がありますが、バッチファイルは基本的にWindows環境で利用する拡張子が「.bat」のファイルのことを指しています。

バッチファイルの内部には複数のコマンドを記述し、上から順番に実行させることが可能です。

タスクスケジューラーなどでバッチファイルを起動するため、バッチ処理と同じような意味合いにはなりますが、バッチファイルはあくまでWindows用のひとまとまりのコマンドを集めたファイルと認識しておきましょう。

バッチ処理で実行するJavaプログラムを作成しよう


ではここからは実際にバッチ処理で動かすためのJavaプログラムを作成してみましょう。

Javaでの実装

まずはバッチ処理で実行するためのJavaプログラムを実装する必要があります。

今回はサンプルとして下記のコードを実装しました。

Sample1.java

class Sample1 {

	public static void main(String[] args) {
		Test1 test = new Test1();
	}

}

class Test1 {
  public Test1() {
    System.out.println("ポテパンサンプル");
  }
}

Sample2.java

class Sample2 {

	public static void main(String[] args) {
		Test2 test = new Test2();
    test.sum(10, 20);
	}
}

class Test2 {
  public void sum(int num1, int num2) {
    int result = num1 + num2;
    System.out.println("足し算の結果は" + result + "です。");
  }
}

jarファイルの生成

では作成したJavaファイルをコンパイルしてclassファイルを作成し、圧縮してjarファイルを作成するところまで進めていきましょう。

classファイルの作成

作成したJavaファイルのディレクトリまで移動した後、下記コマンドでコンパイルを実行します。

javac Sample1.java

lsコマンドで確認するとclassファイルが作成されていることが分かります。

$ ls
Sample1.class	Sample1.java	Test1.class

jarファイルの作成

同じディレクトリで下記コマンドを実行して、classファイルをjarファイルとして圧縮します。

$ jar -cvf Sample1.jar *.class
マニフェストが追加されました
Sample1.classを追加中です(入=287)(出=221)(22%収縮されました)
Test1.classを追加中です(入=363)(出=284)(21%収縮されました)

再度lsコマンドを実行するとjarファイルが作成されていることが分かります。

Sample1.class	Sample1.jar	Sample1.java	Test1.class

2つ目のjarファイルを作成

バッチ処理で呼び出す用に同様の手順で「Sample2.java」を別フォルダでコンパイルし、jarファイルを作成するところまで進めておきます。

$ javac Sample2.java 
$ ls
Sample2.class	Sample2.java	Test2.class
$ jar -cvf Sample2.jar *.class
マニフェストが追加されました
Sample2.classを追加中です(入=323)(出=247)(23%収縮されました)
Test2.classを追加中です(入=854)(出=518)(39%収縮されました)
$ ls
Sample2.class	Sample2.jar	Sample2.java	Test2.class

commandファイルを作成してバッチ処理でJavaプログラムを実行してみよう


ここまでで、Javaプログラムが作成出来たので、commandファイルを作成し、バッチ処理としてJavaプログラムを実行してみましょう。

commandファイルの作成

commandファイルはWindows環境のbatファイルのようなもので、シェルスクリプト作成して拡張子を「.command」に書き換えるだけでダブルクリックでの実行が可能となります。

任意の場所に「Test.command」ファイルを下記の内容で作成してみましょう。

ポテパンダの一言メモ

jarファイルの格納先によってファイルパスは変更してください。

#!/bin/bash

cd ~/Documents/java/sample1
java -jar Sample1.jar

cd  ~/Documents/java/sample2
java -jar Sample2.jar

commandファイルの実行

作成したcommandファイルは、Finder上からダブルクリックで簡単に実行することが出来ます。

まずはスクリプト内に記述したjarファイルのディレクトリにtxtファイルが作成されていないことを確認しておきます。

sample1 $ ls  
Sample1.class	Sample1.jar	Sample1.java	Sample1.mani	Test1.class
sample2 $ ls
Sample2.class	Sample2.jar	Sample2.java	Sample2.mani	Test2.class

commandファイルをダブルクリックして実行するとターミナルが立ち上がり下記のように表示されます。

/Users/ユーザー名/Desktop/Test.command ; exit;

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[プロセスが完了しました]

再度lsコマンドでtxtファイルが作成されているか確認します。

sample1 $ ls
Sample1.class	Sample1.java	Test1.class
Sample1.jar	Sample1.mani	sample1.txt

sample2 $ ls
Sample2.class	Sample2.java	Test2.class
Sample2.jar	Sample2.mani	sample2.txt

このように作成したJavaプログラムが、バッチ処理によりまとめて実行出来ていることが確認出来ました。

さいごに: バッチ処理でJavaプログラムをまとめて実行してみよう


本記事では、Javaプログラムを使ったバッチ処理の作成方法についてご紹介してきました。

今回ご紹介したようにバッチ処理自体は「command」ファイルを作成することで簡単に実現でき、「cron」などと組み合わせることで定期的なプログラム実行の自動化も実現させることが出来ます。

定期処理や大量データの処理を行う上で、バッチ処理は欠かせない機能なので、この機会にバッチ処理の基本を把握しておきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。