Gradleを使ったSparkのHelloWorld!

   · ☕ 3 min read

gradle_spark.png

ビルドツールであるGradleを使用して、web framework であるSparkを起動するまでの流れを記述する。

これは何

Gradle で Spark を動かすのに苦労したため、同じ過ちを避けるための備忘録。

対象とする読者

Gradle も Spark も全く知らない方。

TL;DL

適切にbuild.gradleを記述し Kotlin から呼び出す。この時一緒に SL4J も読み込んでおくことがポイント。

Gradle について

Gradleは複数の言語をサポートするビルドツールだ。

Gradle is a build tool with a focus on build automation and support for multi-language development.
(https://github.com/gradle/gradle より)

対応言語 / プラットフォームは Java, Scala, Android,C/C++, Groovy が挙げられる。これらを使用したプロジェクトの開発サイクルにおいて、その全般(コンパイル/パッケージングからテスト、公開まで)を柔軟にサポートするツールだ。

CLI の使用

Gradle の使用は、CLI ツールもしくは IDE プラグイン経由で使用することができる。

CLI ツールのインストールは、Mac であれば Homebrew を通して行える。

# インストール
brew install gradle

# インストール成否の確認
gradle -v

※ Gradle はあらゆる OS に対応しているが、インストール時にJavaJDK もしくは JRE(version 8)が必要となるため事前にインストールしておく必要がある。

IDE での使用

Gradle は多くの IDE によりサポートされており、CLI ツールをインストールせずとも、各 IDE から提供されている Gradle 拡張をインストールすることで、IDE 経由で使用することができる。

インストール手順は各 IDE のマニュアルを参照。IntelliJはこちら

Spark について

Spark は Kotlin / Java で Web アプリを作るためのマイクロフレームワークだ。「生産性の向上(Built for productivy)」のためのフレームワークとして、開発者が少ないコードで多くの機能を実現できるようにするという、極めてシンプルな哲学を掲げている。

With a clear philosophy Spark is designed not only to make you more productive, but also to make your code better under the influence of Spark’s sleek, declarative and expressive syntax.
(http://sparkjava.com/ より)

多くの場合、REST API の作成に使用されることの多い Spark だが、複数のテンプレートエンジンをサポートしているため、バックエンドからフロントエンドまでカバーすることができる。

Spark の HelloWorld!

ここでは Spark を Gradle 経由で起動する際に、用意するべき最低限のファイルについて記す。

build.gradle を記述

以下のビルドファイルを用意する。

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.72'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    implementation "com.sparkjava:spark-kotlin:1.0.0-alpha"
    implementation 'org.slf4j:slf4j-log4j12:1.7.21'
}

ポイントとして、上から順に、

  • IntelliJ で Kotlin をサポートするよう、プラグインを読む
  • Mave Central repositoryをライブラリとして追加
  • spark を読み込む(公式ドキュメントを参照)
  • SLF4J(Simple Logging Facade for Java)を読み込む
    • Spark 内部で動作している(?)ため要読込(<= 詳細 要確認)

SLF4J を読み込まないと Gradle に怒られる。この点については Spark の公式 Document に言及がなかったため困惑した。

log4j の設定ファイルを用意する

SLF4J を使用する上で、設定ファイルが必要となる。設定ファイルをsrc/main/resources/lob4j.propertiesとして作成し、以下の設定を記述する。

log4j.rootLogger=DEBUG, console
log4j.logger.xxx=DEBUG, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p-%c] %m%n

Kotlin で Spark の動作確認

Get リクエストに対する応答を書き、正しくコードが実行されるようであれば成功。

1
2
3
4
5
import spark.Spark.get

fun main(args: Array<String>) {
    get("/hello"){req, res -> "Hello Spark!"}
}

終わりに

Gradle を使用した Spark の動作を確認してきた。
各設定について、特に Gradle については不明な点が多すぎるため、今後も調べていきたい。

要確認

  • Gradle と Maven との比較
  • build.gradlecompileimplementationの違い
  • build scanの使いどころ
  • buildscript
Share on

whasse
WRITTEN BY
whasse
Web Developer