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プロジェクト にあるドキュメントを参照して欲しい。
- ホワイトペーパー
- 企画特集
今注目の「サジェスト検索」−デモ掲載中
◆エン・ジャパン厳選求人☆毎週更新◆
ESBでIT投資の無駄を劇的に解消する
SOA、BPM、SaaS −今、企業に必要なこと
【徹底対談】運用管理ツールの賢い使い方
そのストレージで仮想化に対応できますか?
セキュリティ&ユーザ事例【SIer Club】
仮想環境を実現するソリューション特集
中小企業のセキュリティリスクとは?
インターネット上の悪意を未然に防ぐには?
ストレージメディア特設サイト開設
御社のログ活用しませんか!?
パンデミック対策特集
ロリポップ!がリニューアル
集積度も性能も、業界最高水準のブレードPC
- サーバー監視・運用のコストを削減するには
- サービス・ドリヴン・データセンター
- エンタープライズにおけるSUSEの強み
- ■ストレージ容量50%削減保証■
- 話題のタグ
Windows 7はLinuxへの切替が簡単:注目の仮想ディスクフォーマット「VHD」
iPhone OS 3.0で変わった「絵文字」
OSSのクラウド基盤「Eucalyptus」を使う(4)--インストール〜ノード構築
俳優経験者が指南する「人前で上手く話すためのティップス10選」
「うるまでるびペイント」登場:絵は上手下手ではなく制作過程に楽しみが
待てば回路の日和あり--「iPhone 3GS」発売、しかし――