2018/3/20 修正
GitHubでThymeleaf版のチュートリアルについて問い合わせたところ、一部の節はJSP版でリリースしている。との回答をいただきました。
また、チュートリアル以外にもJSP版でリリースしている箇所を[Wiki]
(https://github.com/Macchinetta/server-guideline-thymeleaf/wiki/1.5.x.RELEASE)にまとめてくださいました。次版以降で対応されるそうなので、ThymeleafでTodoアプリケ−ションを作りたい人は気長に待ちましょう!
というわけで、タイトルを修正いたしました。
前:Macchinettaを使ってTodoアプリケーションを作ってみた
後:Macchinettaがリリースされました
あわせて、本投稿のサンプルアプリケーションの節をほぼ打ち消しました。
Macchinettaとは?
Macchinetta Framework
(マキネッタ。以下Macchinetta
とします。)は、3/13にNTTが発表したWebシステムを開発するためのアプリケーションフレームワークで、OSSとしてGitHub上に公開されています。詳しくは下記のリリース記事を参照してください。
リリース記事:
効率的なソフトウェア開発を実現するNTTのJava開発フレームワークを公開しIT業界に貢献
ガイドラインのフレームワークスタックを見るとどうやらSpring
を中心としたOSSの組み合わせのようです。
TERASOLUNAとの関係
Spring
を中心としたOSSの組み合わせと言えばNTTデータが提供しているTERASOLUNA Server Framework for Java (5.x)
(テラソルナ。以下TERASOLUNA
とします。)を思い浮かべますが、Macchinetta
の依存関係を見るとTERASOLUNA
が提供しているライブラリを参照しているので、Macchinetta
がTERASOLUNA
を包含しているようです(スタックを見た感じ、Macchinetta
独自の共通ライブラリのようなものは、少なくともServer Framework
にはなさそう)。
ちなみにMacchinetta
が利用しているTERASOLUNA
のバージョンは5.4.1.RELEASEで、一般に公開されている5.3.1.RELEASEよりも新しくなって……と思ったら、5.4.1.RELASEが3/16にリリースされていました。ちなみに3/19現在、ガイドラインは日本語のみのようです。
OSSのスタック
Macchinetta
とTERASOLUNA
のスタックを比較すると、Macchinetta
では日付操作を提供するJadira Usertype
とJPA
がサポート外になっています。私がこれまでに携わった案件では、いずれもMyBatis3
を使っていましたがJPA
は不人気なんですかね?
またTERASOLUNA
ではViewにJSP
&Apache Tiles
を利用していますが、Macchinetta
ではJSP
&Apache Tiles
と別にThymeleaf
をサポートしています(ガイドラインもJSP
&Apache Tiles
版とThymeleaf
版があります)。
ちなみに、Macchinetta
もTERASOLUNA
も参照しているSpring IO platform
のバージョンはBrussels-SR5
ですが、Brussels-SR5
が含むSpring Framework
とSpring Security
に脆弱性CVE-2018-1199が報告されているため、Spring Framework
とSpring Security
だけBrussels-SR5
で指定しているバージョンよりも新しくなっています。
機能
TERASOLUNA
ではServer Framework
とbatch
機能を提供していましたが、Macchinetta
ではそれに加えてSpring Cloud
などを利用したクラウド拡張と、jQuery
などを利用したクライアント側の開発をするためのOSSライブラリ群を提供しています(リリース記事ではクライアントについて特に言及していませんが、どういう位置づけなんでしょうか)。
サンプルアプリケーション
せっかくなのでThymeleaf
版のチュートリアルをやってみました。
TERASOLUNA
と同様にMaven
のアーキタイプで作成します。
mvn archetype:generate -B^
-DarchetypeGroupId=com.github.macchinetta.blank^
-DarchetypeArtifactId=macchinetta-web-blank-noorm-thymeleaf-archetype^
-DarchetypeVersion=1.5.1.RELEASE^
-DgroupId=todo^
-DartifactId=todo^
-Dversion=1.0.0-SNAPSHOT
注意点としては、archetypeArtifactId
に明記しているように、ブランクプロジェクトにもJSP
&Apache Tiles
版とThymeleaf
版があります。
で、読み進めていったところ……アプリケーションのTODOの入力フォーム作成のところで詰まってしまいました。
本来ならばtodo/src/main/webapp/WEB-INF/views/todo
下にlist.jsp
を作成しhttp://localhost:8080/todo/todo/listにアクセスすると入力フォームが表示されるはずなのですが、なぜかエラーになってしまいます。
例外ログを見ると……
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/views/todo/list.html]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141)
at org.thymeleaf.spring4.templateresource.SpringResourceTemplateResource.reader(SpringResourceTemplateResource.java:103)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:223)
... 112 more
todo/list.html
がない……?
実はThymeleafを触るのは初めてで、事前知識なしでチュートリアルに挑んだわけですが、4.1. テンプレートエンジン(Thymeleaf)を読むと、テンプレートHTMLを実装するように書かれていますねぇ。
ためしにJSP
&Apache Tiles
版とのチュートリアルの差分を取ったですが……
213c213
< Bash上で\ ``mvn archetype:generate``\ を実行する場合は、以下のように"\ ``^``\" を"\ ``\``\" に置き換えて実行すればよい。
---
> Bash上で\ ``mvn archetype:generate``\ を実行する場合は、以下のように"\ ``^``\" を\ ``\``\ に置き換えて実行すればよい。
219c219
< -DarchetypeArtifactId=macchinetta-web-blank-noorm-archetype\
---
> -DarchetypeArtifactId=macchinetta-web-blank-noorm-thymeleaf-archetype\
239c239
< -DarchetypeArtifactId=macchinetta-web-blank-noorm-archetype^
---
> -DarchetypeArtifactId=macchinetta-web-blank-noorm-thymeleaf-archetype^
257c257
< -DarchetypeArtifactId=macchinetta-web-blank-archetype^
---
> -DarchetypeArtifactId=macchinetta-web-blank-thymeleaf-archetype^
コマンド以外の差分がない……あっ、察し。
じゃけん、イシューあげましょうね。
The document of todo tutorial with Thymeleaf seems same as the one with JSP.
何度もURLを見直したのでJSP版とThymeleaf版を混同していることはないはず……。
TERASOLUNA
と違ってチュートリアルのコードが公開されていないので、これ以上は進められ無さそうです。
勝手な予想
実際にMacchinetta
やTERASOLUNA
を利用するかはさておき、Spring
に関する日本語のドキュメントとしては、これらのガイドラインは非常に有用だと思います。しかし、サポートのスピードが遅く、最新のSpringは5.xがリリースされていますが、Macchinetta
やTERASOLUNA
がサポートしているのはまだ4.3系なんですよねぇ。TERASOLUNA
はこれまで半年に1回くらいのペースでバージョンアップが来ているので、今年の夏くらいにSpring 5.xをサポートしたMacchinetta
とTERASOLUNA
がリリースされるのではないでしょうか?
投稿に至った経緯
Qiitaに誰もMacchinetta
の記事を書いていなかったので、1ゲットいただくために、簡素ですが記事にいたしました。しかし、Macchinetta
のイシューでも1ゲットするとは。
今だ!1ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ