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プロジェクト にあるドキュメントを参照して欲しい。
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
【最終警告】パンデミック対策特集
電力に"ふた"をする独自の省エネ機能とは!?
100万円で実現!中小企業の情報漏えい対策
企業ITシステムの企画、構築、運用のイロハ
―エン・ジャパン厳選求人☆毎週更新―
大丈夫?あなたの会社のセキュリティ対策
高まるiSCSIストレージへの注目度