VSCodeでKotlin + Spring Bootの環境構築をしたので、メモとして残しておきます。
目次
事前準備
- VSCodeのインストール
- JDKのインストール
Kotlinとは
Kotlinは、Javaの統合開発環境であるIntelliJ IDEAで有名なJetBrainsが開発したオブジェクト指向プログラミング言語です。言語構文自体はJavaとは互換性がない独自方式ですが、コンパイルされたコードはJava VM(仮想マシン)上で動作します。
2017年にAndroid公式開発言語に追加されたことで、知名度が上がりました。
Kotlinの特徴
Javaと互換性がある
KotlinとはJavaと互換性があり、KotlinからJavaを呼び出すことも、JavaからKotlinを呼び出すこともできます。
汎用性
Kotlinは、Javaをより安全に記述できることを目的として改良されており、高い汎用性をがある言語です。
またJavaを簡潔に記述できるようにコードがシンプルになっているため、短いコードで記述でき、開発時の負担が軽減されています。
安全性
もともと産業利用を目的とした汎用言語として開発された言語なので、コードが簡潔でバグを発生させにくい構造になっています。
また、KotlinにはNull Safetyがあり、Javaの場合に発生しがちなNull参照を原因とする実行時エラーを防ぐことができるため、安全なシステム開発ができます。
Spring Bootとは
Spring BootはJavaによるWebアプリ開発を迅速かつ効率的にする仕組みを備えたフレームワークのことです。
Spring Frameworkとの関係
Spring Frameworkは現在に至るまで様々な機能拡張がされており、豊富な機能が充実する一方で、組み合わせて使うには煩雑な設定とノウハウが必要という課題も指摘されるようになりました。
この課題に取り組み、最小限の設定とより少ないコード量でアプリケーションを作成して、すぐに実行できる仕組みを実装したのがSpring Bootです。
そのため、Spring BootもSpring Frameworkをベースとするフレームワークの1つです。
JVMとは
KotlinはJVM言語ですが、そもそもJVMについて何なのか整理します。
JVMとは「Java Virtual Machine」の略でJavaで作成されたアプリケーションを各OSで動かすために必要となるアプリケーションです。Java仮想マシンなどとも呼ばれます。
Javaで作成したプログラムをコンパイルすると中間コードと呼ばれるJavaクラスファイルを出力します。JavaクラスファイルはどのOS上でコンパイルしても同じものが生成され、実行したいOSにインストールされているJVM上で実行されます。
JavaクラスファイルがOSに関わらず共通なのに、それぞれのOSで問題なく動さするのはそれぞれのOS用のJVMがJavaクラスファイルを対象のOSで動作するように変換して実行してくれるからです。
JDKとは
JDKとははJVM・Javaコンパイラ・ライブラリ等のJavaの開発に必要な物のセットです。Java開発環境などと呼ばれます。
Kotlinのコードだけを実行するだけなら、KotlinのコンパイラとJVMがあれば動きますが、Javaのライブラリを使ったりすることがあるため、JDKを入れておくと良いでしょう。
jarファイルとは
jarとはJava Archiveの略です。その名の通りJavaのファイルがひとつにまとめられ、アプリケーションとして使えるようになったファイルのことです。
コンパイルされた複数のclassファイルやプログラムが使用する画像などはすべてjarファイルの中に入っています。複数のjavaファイルが圧縮されてひとまとめになったものをjarファイルといいます。
Gradleとは
javaのビルドツールで jarファイルへのビルドをしてくれます。mavenと違い設定ファイルはgrovyという言語で書きます。
Spring Bootのプロジェクト作成
以下の2つの方法でSpring Bootのプロジェクトテンプレートを作成できます。
- https://start.spring.io/
- VSCodeの拡張機能を使う
今回はspring initializerを使って作成しました。以下のように設定し「GENERATE」を押すことでテンプレートを生成できます。
Dependenciesは以下の2つを選択しました。
- Spring Web: Webアプリ作成に必要な依存関係定義のセット
- Thymleaf: テンプレートエンジン
VSCodeで生成したテンプレートを開きます。
タスクの実行をするため、.vscode/tasks.jsonを生成し、以下を貼り付けます。
・tasks.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <code>{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "./gradlew build" }, { "label": "run", "type": "shell", "command": "./gradlew bootRun", }, { "label": "clean", "type": "shell", "command": "./gradlew clean" }, { "label": "check", "type": "shell", "command": "./gradlew check" } ] }</code> |
「ターミナル」→「タスクの実行」から「Run」を選択します。以下のように正常に起動すれば完了です。
1 2 3 4 5 6 7 8 9 10 11 | <code>> Executing task: ./gradlew bootRun < > Task :bootRun . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.2)</code> |
build.gradleがある階層でこのコマンドを実行するとbuildが実行され、build/libs/の下にjarファイルが生成されます。
1 | $ gradlew build |
生成されたファイルを以下のコマンドで実行すると、localhost:8080でページにアクセスすることができます。
1 | $ java -jar build/libs/hoge-0.0.1-SNAPSHOT.jar |
Hello Worldしてみる
HelloWorld.ktを作成し、localhost:8080にきたら「Hello World」と表示するようにします。「GetMapping」や「RestController」を使うにはSpring WebをDependenciesで選択しておく必要があります。
・HelloWorld.kt
1 2 3 4 5 6 7 8 9 10 11 | import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @RestController class HelloController { @GetMapping("/") fun helloWorld(): String { return "Hello World" } } |
サーバを起動させてlocalhost:8080にアクセスし、「Hello World」と表示されれば成功です。