株式会社ライブキャストロゴ 株式会社ライブキャスト

M1 MacBook Proを購入してからずいぶん時間が経つのですが、Spring Bootの開発環境を構築する必要性が出てきたので、今回はEclipse(STS)ではなくインストール済みのVSCodeで開発できるようにしていきたいと思います。

(余談)JDKのアンインストール

Oracle JDKはサポート期間の長いLTSというものと、サポート期間の短いフィーチャーリリース(非LTS)の2種類があります。後者はLTSがリリースされる前に新機能を扱いたいような時に利用することのできるJDKでとても短期間の周期でリリースされていきます。
Oracle Java SE Supportロードマップ | Oracle 日本

実は当方の環境にはフィーチャーリリースのJDK18がインストール済みなのですがサポート期間がもう終了してしまっておりました。2022年12月14日現在のLTSは1つ前にリリースされたJDK17なのでこちらを使っていきたいと思います。
フィーチャーリリースは6ヶ月という非常に短い期間でリリースが頻繁に行われます。複数のJDKをインストールして使用するバージョンを切り替えながら開発するという、複数のJDKをコントロールするやり方もあるのですが、今回はサポートが終了となったJDKをアンインストールしてからLTSのJDKをインストールしていきたいと思います。

まず、JDK一式が保存されている場所(JAVA_HOME)を調べたいと思います。以下のコマンドを実行してください。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
18.0.2.1 (x86_64) “Oracle Corporation” – “Java SE 18.0.2.1” /Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/Contents/Home

※ /usr/libexec/java_homeコマンドは、JDKをインストールすると同時にインストールされるコマンドです。一度JDK18をインストールしていたのでこちらのコマンドを使うことができました。

アンインストールの方法は、出力されたJAVA_HOMEのパス、

/Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk/

のディレクトリを削除してやればOKです。とてもシンプルですね。

Terminalから、以下のコマンドを実行して削除してやりましょう。

$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-18.0.2.1.jdk

再度、/usr/libexec/java_homeコマンドを実行してみます。

$ /usr/libexec/java_home -V
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

「Javaの実行環境がありません」というメッセージが表示されました。
はい。アンインストールの完了です!

JDK17のダウンロード・インストール

JDKの利用については紆余曲折ありまして、OracleのJDKが再び無償で使えるようになりました。
こちらからJDK17をダウンロードしていきます。
Java Downloads | Oracle 日本

Java17のタブを選択し、macOSのタブを選択します。

何種類かファイルがありますが、まず、JDKがまとめて圧縮されたファイル(Compressed Archive)とInstallerの2種類があり、CPUのアーキテクチャ(Arm 64とx64)によってさらに2種類に分かれています。
Compressed Archiveは解凍して/Library/Java/JavaVirtualMachines/の下にコピーすれば良いだけなのですが、今回はInstallerを使うことにしました。
M1チップのアーキテクチャは何かをTerminalで確認すると、

$ uname -m
arm64

なので、「Arm 64 DMG Installer」を選択してやりましょう。Downloadリンクをクリックすると.dmgの拡張子のファイルがダウンロードされるので、完了したらダブルクリックして開いてやりましょう。もし、ダウンロードするファイルを間違えてインストールしようとしても大丈夫です。

「インストーラのアーキテクチャが正しくありません」というエラーメッセージが表示されるので、間違ったものがインストールされることはありません。

それでは、インストーラを起動してインストールしていきましょう。画面に沿ってインストールしていけばOKです。

パスワードか指紋認証を求められた際は、指示に従って入力していってください。

java_homeコマンドでJAVA_HOMEを確認してみましょう。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
17.0.5 (arm64) “Oracle Corporation” – “Java SE 17.0.5” /Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home

はい。インストール完了です。

$ java -version
java version “17.0.5” 2022-10-18 LTS
Java(TM) SE Runtime Environment (build 17.0.5+9-LTS-191)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9-LTS-191, mixed mode, sharing)

javaコマンドも実行できるようになりました。

VSCodeの拡張機能をインストール

Spring Bootのプロジェクトを作成して開発していくために、以下の2つのVSCodeの拡張機能をインストールしていきます。

Extension Pack for Java

Microsoft社製の拡張機能です。VSCodeでのJava開発に便利な拡張機能をパッケージ化したものになります。いくつかの拡張機能がインストールされます。
Javaのクラスを作って実行すること自体はJavacコマンドとJavaコマンドがあれば可能なのですが、この拡張機能がインストールされていると便利な機能がたくさん使えて開発効率が上がります。
Extension Pack for Java – Visual Studio Marketplace

VSCodeのサイドバーから「拡張機能」を開いてください。「Extension Pack for Java」を検索してインストールしていきます。

Spring Boot Extension Pack

Springフレームワークの開発元、Pivotal社製の拡張機能です。簡単に言うとSpring Tool Suite(STS)のVSCode版です。VSCodeでSpring Bootのプロジェクトを作成してアプリを開発していくことができるようになります。

Spring Boot Extension Pack – Visual Studio Marketplace

VSCodeのサイドバーから「Spring Boot Extension pack」を検索してインストールしてください。

開発環境が整いました!

Spring Bootプロジェクトの作成

VSCodeの「表示」メニューより「コマンドパレット」を開いてください。

「Spring Initializr:Create a Maven Project…」を選択してプロジェクトを作成していきます。

Spring Bootのバージョンを選択してください。今回は「3.0.0」を選択しました。

プロジェクトで使う開発言語を選択します。「Java」を選択します。

続いて、Group Idを入力していきます。Group Idは作成するプロジェクトが帰属する組織の識別子のようなものだと思ってください。具体的には、パッケージ名に使われます。今回は、デフォルトのままとしました。

続いて、Artifact Idを入力していきます。成果物(artifact)の名前です。プロジェクトやjarファイルの名前、pom.xmlなど、いろいろなところで使われます。デフォルトのままとしました。

packaging typeを選択します。プロジェクトで作成したクラスのファイル群を1つのファイルにまとめる際の形式のことです。jar(Javaアーカイブ)にしました。

JDKのバージョンを選択します。インストールしたのはJDK17なので「17」を選択します。

続いて依存関係を選択します。このプロジェクトで使用するライブラリのことです。

今回は、2つだけの依存関係で

  • Spring Web
  • Spring Boot DevTools

シンプルなWebアプリを作りたいと思います。

プロジェクトの作成に必要な情報はこれで終わりです。プロジェクトの作成場所を選ぶとArtifact Idの名前のフォルダが作成されます。VSCodeの画面右下に以下のようなメッセージが表示されたら、

「Open」ボタンをクリックしてプロジェクトを開きましょう。

フォルダの中身がVSCodeのサイドバーのエクスプローラーに展開されます。

Webアプリケーションの作成

Controllerにアクセスするとプレーンテキストを返すというシンプルなWebアプリを作成します。

DemoController.javaというファイルを新規作成してください。@RestControllerというアノテーションを使います。また、@RequestMappingアノテーションで”/”(ルート)にアクセスするとindexメソッドが実行されるようにします。

ソースコードは以下の通りです。

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoController {
    @RequestMapping("/")
    public String index() {
        return "Hello Spring World!";
    }
}

実行して同梱されているWebサーバを立ち上げ、ブラウザからhttp://localhost:8080/にアクセスしてみます。

「Hello Spring World!」という文字列がブラウザに出力されました。

以上でVSCodeでSpring Bootの開発環境を構築していく作業は終了です。とてもシンプルなWebアプリでしたがなんの問題もなくコーディングでき、簡単に実行することができました。しばらくはこちらの開発環境を試しながらWebアプリケーションの開発に従事していきたいと思います!

関連記事

  • Unique Post