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ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ