📢
Scala-CLI だけで作る超軽量エコーコマンド ── その場でネイティブ実行ファイルを生成しよう
0. 前提:scala-cli のインストール
brew install scala-cli # Homebrew で一発
Homebrew 未使用の方は 公式インストール手順 参照。
scala-cli は Scala 本体+GraalVM を自動で取って来てくれるので事前セットアップ不要です。
1. ソースコードを 1 ファイルだけ書く
mkdir hello-bin && cd hello-bin
cat <<'EOF' > EchoApp.scala
//> using scala "2.13.14"
// 単純なエコー。最初の引数をそのまま出力
object EchoApp {
def main(args: Array[String]): Unit = {
println(args.headOption.getOrElse(""))
}
}
EOF
ポイント
解説 | |
---|---|
//> using scala "2.13.14" |
Scala バージョンを宣言(ここでは 2 系を選択) |
object EchoApp { … } |
Scala 2 では object+main がエントリポイント |
args.headOption.getOrElse("") |
引数が無ければ空文字列を返す安全実装 |
2. ネイティブバイナリを一発生成
scala-cli package EchoApp.scala \
--native-image \
--output bin/echo
- 実行すると初回のみ GraalVM を自動ダウンロード
(キャッシュされるので 2 回目以降は即ビルド) - bin/echo が スタンドアロン実行ファイル として作成されます。
3. 動作チェック:追加 → 一覧 → 削除 …ではなくエコー
chmod +x bin/echo # 生成時に実行属性が付かない場合のみ
./bin/echo go # => go
./bin/echo "Hello, Scala!" # => Hello, Scala!
./bin/echo # => (空行)
- 第一引数 をそのまま出力
- 引数無しなら空行を返し、シェルスクリプトのパイプ用にも便利
4. おわりに
ソースにバージョンや依存を宣言できるので ビルドスクリプト不要
* GraalVM Native Image のおかげで 実行時 0.0 sec & 配布も楽々
小さなツールを “配れるバイナリ” にしたいとき、
Go だけでなく Scala もこんなに手軽――ぜひお試しください!
Discussion