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リポジトリ内にカタログファイルをおいておくと、簡単にツールなどを共有できますし、プロジェクト固有のツールなどの共有もスムーズにいくとおもいます。実際のプロジェクトですぐ使えるものばかりなので、ぜひ使っていただければと思います。