Jakarta Commons CLIでJavaコマンドラインも楽々
翻訳校正:原井彰弘
ひょっとして、コマンドラインの引数をパースするコードをわざわざ書いている?JavaのCLIアプリケーションで引数を簡単に扱うための「Jakarta Commons Command Line Interface」を扱う。
コマンドラインの引数をパースするコードを書く作業は楽しいものではない。しかし、アプリケーションコンテナやウェブサービスが流行っているこのご時世においても、ときどき必要となる。しかし、コマンドラインの引数を調べなければいけない―それが少し複雑になってきた場合には特に―というときには信頼できるオープンソースのJavaツールキット「Command Line Interface」(CLI)を利用しよう。
CLIはJakarta Commonsプロジェクトのひとつ。ひとつやふたつの引数をパースするくらいのアプリケーションには大げさだが、ほとんどの設定をコマンドラインから行うようなものを開発するならば必要不可欠である。
CLIを利用するには、最初にOptionクラスのインスタンスを作成する必要がある。
Options opt = new Options();
作成したOptionsインスタンスを用いて、アプリケーションが受け取るコマンドラインの引数を定義する。これを行うひとつの方法は、OptionsクラスのaddOption()メソッドを用いることだ。アプリケーションが受け取るオプションひとつにつき、このメソッドを一度呼び出す。
opt.addOption("h", false, "Print help for this application");
opt.addOption("u", true, "The username to use");
opt.addOption("dsn", true, "The data source to use");
クラスの引数を定義したら次にCommandLineParserを作成し、mainメソッドに渡されたStringの配列をパースする。
BasicParser parser = new BasicParser(); CommandLine cl = parser.parse(opt, args);
さて、全ての引数をパースし終わったので、次にパーサから返されたCommandLineインスタンスを調べ、どのような引数と値がユーザから与えられたのかを見つけ出す。
if ( cl.hasOption('h') ) {
HelpFormatter f = new HelpFormatter();
f.printHelp("OptionsTip", opt);
}
else {
System.out.println(cl.getOptionValue("u"));
System.out.println(cl.getOptionValue("dsn"));
}
上記のように、HelpFormatterクラスを用いると自動的にプログラムのヘルプを生成することも可能だ。
コード全体は以下のようになる。
// OptionsTip.java
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.ParseException;
public class OptionsTip {
public static void main(String args[]) {
try {
Options opt = new Options();
opt.addOption("h", false, "Print help for this application");
opt.addOption("u", true, "The username to use");
opt.addOption("dsn", true, "The data source to use");
BasicParser parser = new BasicParser();
CommandLine cl = parser.parse(opt, args);
if ( cl.hasOption('h') ) {
HelpFormatter f = new HelpFormatter();
f.printHelp("OptionsTip", opt);
}
else {
System.out.println(cl.getOptionValue("u"));
System.out.println(cl.getOptionValue("dsn"));
}
}
catch (ParseException e) {
e.printStackTrace();
}
}
}
CLIツールキットは退屈なコーディングを肩代わりし、コマンドラインの引数のパースを単純な作業にする。より詳しい情報は、Jakarta Commons CLIプロジェクト にあるドキュメントを参照して欲しい。
- ホワイトペーパー
- 話題のタグ
キャリアコンサルタントのノウハウが最大の強みです
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
JailBreakついに:PwnageTool公開
プロジェクトの進行でよくある4つのトラブル
iPhoneに付く指紋が…… ひとまずおすすめのシリコンケース
contentプロパティでコンテンツを追加する(2):FirefoxとSafariのCSS
iPhone 24時間耐久レース:バッテリーは実際何時間?
フォームデザイン虎の巻:フォームの基礎をおさえる
Techno Exchange
DELLが掲げる「新・仮想化アセスメントサービス」
ZDNet Japan Green IT
ZDNet Japan ホスティング特集