Javaをスクリプト言語っぽくするJBangその4です。今回は、JBangで作成したアプリのインストールとエイリアスとカタログについてです。
JBangアプリのインストール
JBangで作成したアプリは、jbang app コマンドでインストールが可能です。
前回作成したSpringBootSample.javaをインストールしてみましょう。
$ jbang app install api/SpringBootSample.java
これでインストールが可能です。jbang app listでインストールアプリ一覧が表示されます。
$ jbang app list SpringBootSample
となります。
$ SpringBootSample . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.5.0) 2025-06-15T07:27:45.723+09:00 INFO 1388 --- [ main] api.SpringBootSample
無事起動できています。
仕組みは簡単で、$HOME/.jbang/bin/配下に呼び出し用のshellscriptが作成されているだけになります。
JBangのエイリアス
JBangにはエイリアスがあります。これはjbang appとは異なり、jbangのショートカットみたいなものになります。下記のコマンドで追加が可能です。
$ jbang alias add api/SpringBootSample.java [jbang] Alias 'SpringBootSample' added to '/Users/kohei.sasaki/.jbang/jbang-catalog.json'
登録ができているかを確認します。
$ jbang alias list SpringBootSample /Users/kohei.sasaki/.jbang/../git/jbang-sample/api/SpringBootSample.java
登録できているようです。では、実行してみましょう。
jbang SpringBootSample . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.5.0) 2025-06-15T07:27:45.723+09:00 INFO 1388 --- [ main] api.SpringBootSample
無事実行できます。
さらにJavaコードに説明文をを書くことが可能です。
//DESCRIPTION SpringBoot sample application.
説明文は追加時のみ読み取られるので、更新をかけます。
$ jbang alias add --force api/SpringBootSample.java [jbang] Alias 'SpringBootSample' added to '/Users/kohei.sasaki/.jbang/jbang-catalog.json'
その後、説明文が追加されたかみてみましょう。
$ jbang alias list SpringBootSample SpringBoot sample application. /Users/kohei.sasaki/.jbang/../git/jbang-sample/api/SpringBootSample.java
説明文が追加されています。
カタログ
簡単に誤解を怖れずにいうと、前述のエイリアスをひとまとめにしたものになります。これを用いることで、チーム内のスクリプトの共有やテストツールの共有などが簡単にできてしまいます。
JBangのドキュメント内にあるカタログをみてみましょう。 github.com
下記は抜粋ですが、jbang alias がひとまとめになっています。
{
"catalogs": {},
"aliases": {
"hello": {
"script-ref": "hello.java",
"description": "Script that says hello back for each argument"
},
....
....
....
}
}
こちらのカタログを追加してみましょう。
$ jbang catalog add https://github.com/jbangdev/jbang-catalog/blob/HEAD/jbang-catalog.json [jbang] Catalog 'jbang-catalog' added to '/Users/kohei.sasaki/.jbang/jbang-catalog.json'
標準出力されたjbang-catalog.jsonファイルをみてみましょう。
{
"catalogs": {
"jbang-catalog": {
"catalog-ref": "https://github.com/jbangdev/jbang-catalog/blob/HEAD/jbang-catalog.json"
},
...
...
...
}
追加されていました。カタログのリストをみてみます。JBangではデフォルトで様々なカタログが標準で入っています。
$ jbang catalog list alibaba https://github.com/alibaba/jbang-catalog/blob/HEAD/jbang-catalog.json apache/camel Run Apache Camel routes easily https://github.com/apache/camel/blob/HEAD/jbang-catalog.json ... ... jbangdev JBang's own catalog of small utilities https://github.com/jbangdev/jbang-catalog/blob/HEAD/jbang-catalog.json ... ... `jbangdev`で追加されています。カタログの中に何が登録されているかを見てみます。 $ jbang catalog list jbangdev ... hello@jbangdev Script that says hello back for each argument https://github.com/jbangdev/jbang-catalog/blob/HEAD/hello.java ...
先ほど登録したカタログには約20くらいのエイリアスが登録されています。helloを実行してみます。カタログ内のjbangを実行する際は下記のように@の後ろにカタログ名をつけます。
$ jbang hello@jbangdev jbang Hello jbang
実行できました。これで自分で作ったJBangアプリが共有できるのは簡単ですね。
まとめ
JBangのアプリのインストール、エイリアス、エイリアスをまとめたカタログをご紹介させていただきました。GistなどやGithubリポジトリ内にカタログファイルをおいておくと、簡単にツールなどを共有できますし、プロジェクト固有のツールなどの共有もスムーズにいくとおもいます。実際のプロジェクトですぐ使えるものばかりなので、ぜひ使っていただければと思います。