基礎編 part1

地味に gradle について理解を深める必要があるため、それを先にやってしまいたいと思います。

🎵 本日の一曲

夏ですね。 暑い、暑い、暑すぎる。 ところで爽快感のある曲はいいですね。 木陰に隠れる琴葉姉妹を見て、そういえば木陰は本当に涼しいことを思い出しました
湿度などによりますが、木陰は嫌な暑さだとは思わないんすよね。 ただ、近くを車が通っていたり、室外機があったりすれば別ですが。

...山しかなくね?そんなとこ。 山は割と涼しい。 つまり木陰が涼しいというより山が涼しい。 qed 署名終了。(強引)

前提について

筆者は mac 環境および linux 環境で作業してます。 最近 windows と縁がないもので...
java について、openjdk がおすすめです。 といってもたくさんありますので、おすすめ書いときます

  • adoptium
    x86 系で動作する windows や linux ならこれ使っとけば良さそうです。
  • azul
    arm 系で動作する mac ではこれがおすすめです。

note

ここでインストールしておく必要はありません。 sdkman でまとめて導入可能です。

sdkman を入れてみる

sdkman
最近人気な、シェルスクリプトを用いて全自動で入れてくれるやつでインストールできるのかぁ。

apt install -y unzip # 必要とのこと
curl -s "https://get.sdkman.io" | bash

sdk install gradle # graldeを入れる
> gradle -v
Welcome to Gradle 8.14.2!

Here are the highlights of this release:
 - Java 24 support
 - GraalVM Native Image toolchain selection
 - Enhancements to test reporting
 - Build Authoring improvements

For more details see https://docs.gradle.org/8.14.2/release-notes.html


------------------------------------------------------------
Gradle 8.14.2
------------------------------------------------------------

Build time:    2025-06-05 13:32:01 UTC
Revision:      30db2a3bdfffa9f8b40e798095675f9dab990a9a

Kotlin:        2.0.21
Groovy:        3.0.24
Ant:           Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Launcher JVM:  21.0.8 (Ubuntu 21.0.8+9-Ubuntu-0ubuntu124.04.1)
Daemon JVM:    /usr/lib/jvm/java-21-openjdk-arm64 (no JDK specified, using current Java home)
OS:            Linux 6.10.14-linuxkit aarch64


> which gradle
/root/.sdkman/candidates/gradle/current/bin/gradle
> echo $PATH
/root/.sdkman/candidates/gradle/current/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

イイネ 👍

note

which sdkを試したがなぜだかコマンドが出なかった。 set など調べると、シェルスクリプトの関数として動いているようだ。

なんと java も入る。

sdk install java 21.0.8-zulu

色々触れてみる

gradle initでプロジェクトを生成できる。

WORKDIR=$(mktemp -d);
cd $WORKDIR;

# gradleプロジェクトを初期化する
gradle init

とりあえず環境構築まで

sdkman は革命だね。 次回以降は割と簡単に進むと思います。

以下過去の話

java の入れ方

JAVA_HOME の設定などをお勧めされているのや、PATH を設定しているのをよく見ますが、あれ意味を理解していれば効率よく運用できるはずです。

PATH とは(AI による説明)

  • PATH は環境変数のひとつで、OS に「どこにコマンドを探しに行くか」を教える役割を担っています。
  • コマンド実行時、PATH に登録されたディレクトリの順序に従って、最初に見つかった同名ファイル・コマンドが使われます。
  • PATH が空だと OS は「どこを探せばよいかわからない」ので、どんなコマンドもフルパス指定が必要になります。
    例:/bin/ls のように絶対パスで書けば実行可能
    でも、単に ls とだけ入力しても "command not found" になります
  • export PATH="$PATH:/your/custom/path" で PATH に使うディレクトリを追加可能。
    PATH=$PATH がないと、既存の PATH が消えるので注意
# 個人用実行ファイルを作ってみた
WORKDIR=$(mktemp -d)
cd $WORKDIR

# 実行ファイル作成
cat << EOF > run.sh
#!/bin/sh
echo "hello world"
EOF
chmod +x run.sh # 実行権限設定

./run.sh # 実行可能

export PATH="$PATH:$WORKDIR" # パスに追加してみる

run.sh # 実行可能
echo $PATH # PATHの内容もこれで確認可能

なーるほど。 そうやって使うのね。 完全に理解した。
てか、シェルの変数と環境変数、ごっちゃになりそうだな。なんで export って名前なんだろう。 しかもシェルはアクセス方法が変数、環境変数ともに差がないんだよなぁ。

JAVA_HOME について

最近使ってないからわからなくなった。 考えるのをやめた。思考停止。
つまり不要ってことだ。

direnv を使おう

  • direnv
    ディレクトリごとに環境変数を変えられるのが特徴。 マインクラフトは java1.12 以降 jre/jdk8 が必要、確か 1.19 以降は jre/jdk17、1.20 以降は jre/jdk21 が必要である。
    これは mod 開発時にも影響を及ぼす。 そのときに使えるのが direnv である。

note

ただし、後述する gradle をうまく活用すれば問題ないと思うけれど
Toolchains for JVM projects
...ん?
.......ん????
jdkが自動ダウンロードされるらしい

gradle について

java 版の cargo です。 これを使えば外部コードの連携から、ビルド、テストまで、行ってくれます。 多分優れもの。
tmpにプロジェクトを作ってみましょう。

gradle を導入してみよう。

gradle も バージョン依存激しいです。
とりあえず最新版入れてればなんとかなりますが...

  • brew install gradle (sdkman を使う場合は sdkman を入れてみるの項目で説明)
  • apt install gradle (sdkman を入れてみるの項目で説明)

この辺のコマンドで入るかと。

caution

流石に適当言ってられないから、docker で無理やりapt install -y gradleしたんだけど、ぼくのしってる挙動とちがうんだけどー!
...
gradle -v
Gradle 4.4.1
古すぎるじゃねぇか!!!

tip

ああ、windows をお使いで?
wslgも参考のこと
これで(Linux 環境が)できた。