マイクロフレームワークを使ってみた-Spark 編-

本記事の概要

  • Spark Framework チュートリアルやってみた
  • Spark Framework を実際のプロジェクトに使うかを評価してみた

こんにちは。SBWorksです。

突然ですが、みなさま。マイクロフレームワークという言葉を知っていますか?

マイクロフレームワークとは

microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks.

出典 https://en.wikipedia.org/wiki/Microframework

簡単に言うと、軽量でフルスタックなウェブフレームワークって感じですね。最近は、急激な環境変化に対応する為に、お互いに疎なサービスを開発し、それらの組み合わせて大きなサービスを実行するという開発がトレンドになってきています。フレームワークもその急激な変化に対応するために、軽量なフレームワークの開発が盛んに行われているようです。色々なフレームワークが開発されている中で、今回はJavaのフレームワークである、Spark Frameworkを使ってみようと思います。(詳しく知りたい人は公式ページのドキュメントを参照してください。)

Spark Framework のチュートリアルやってみた

それでは実際にSpark Frameworkを使ってみましょう。

まずは公式ページへ。

チュートリアルページへ。

今回はBasic webapp structure のチュートリアルをやってみます。

Githubにソースコードが公開されている。チュートリアルが充実してるのはありがたいですね。

javaディレクトリ配下のソースコードはこんな感じ。util + 画面毎に分かれてる感じ。

resourceディレクトリ配下のソースコードはこんな感じ。velocity使ってる。

gradleとmavenがあったので、今回はgradleでビルドしてみます。

$ cd path/to/spark-basic-structure
$ gradle build

起動してみます。

$ gradle run

立ち上がったらログイン画面(http://localhost:4567/login/)へアクセスしてみます。

ひとまず動きました。あとはUsername/Passwordを入力して(UserDao.javaを確認)、書籍一覧画面(localhost:4567/books/)へアクセスしてみると、

書籍一覧も表示できました。

Spark Framework を実プロジェクトに使うかを検証

チュートリアルを動かすことはできたので、これを実プロジェクトで使えるのかを検証していきたいと思います。

まずは本番環境にリリースすることを想定して、jarファイルを作成して起動します。

$ cd path/to/spark-basic-structure
$ gradle build
$ java -jar build/libs/spark-basic-structure-all-1.0-SNAPSHOT.jar

起動したら、先ほどと同じようにログイン画面(http://localhost:4567/login/)へアクセスしてみます。

CSSが効いていない…。ソースコードで該当箇所を調べます。どうやら下記ソースコードがgradle run で起動した時とjarで起動した時で異なるようです。

staticFileLocation("/public");

調べてみると、同じようにrunタスクで起動した時には正常に動くのに、jarで起動すると、静的ファイルが読み込めないという記事がいくつかあったので同じようにハマっている人がいるようです。
公式にissueを投げている人がいて、grade shadowでjarファイル作ったらうまくいくよと書いていたので、試してみるもうまく行きませんでした。

jarでの不具合が出ている問題が解決できないと、本番稼働できないので、今回はSpark Framework の使用は一旦見送ることにしました。

結論

  • Spark Framework でチュートリアルやってみた
  • Spark Framework を実プロジェクトでは使わないことにした

最後に

今後もマイクロフレームワークを検証していきたいと思います。

ありがとうございました!