ソフトウェアエンジニアの雑記

日々思ったことをまとめます

Javaをスクリプト言語っぽくするJBang その4(JBangアプリをインストールする、カタログにする)

Javaスクリプト言語っぽくするJBangその4です。今回は、JBangで作成したアプリのインストールとエイリアスとカタログについてです。

k-sasaki.net

k-sasaki.net

k-sasaki.net

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