このエントリーをはてなブックマークに追加

テンプレートエンジンNightでGroovy Templateの紹介をしてきました #tenight

はじめに

テンプレートエンジンNight

http://www.zusaar.com/event/10707003

Groovyには、テンプレートエンジンが標準で仕様に入っているので、紹介してきました。

補足

  • Simple Template Engineは、以下のように使います。

    import groovy.text.SimpleTemplateEngine
    
    def text = 'Hello "$placeHolder"!'
    def binding = ["placeHolder":"Groovy"]
    
    def engine = new SimpleTemplateEngine()
    template = engine.createTemplate(text).make(binding)
    
    assert 'Hello "Groovy"!' == template.toString()
    
  • Simple Template Engineの詳細な使い方はこちらです。

    G*Magazine Vol.6 オレオレ・プログラミング GROOVY

    http://beta.mybetabook.com/showpage/51053be10cf2ffb79bb047f0

  • GroovyのテンプレートエンジンはJavaからでも利用することが出来ます。

    例えば、Markup Template Engineを使う場合は、以下のとおりです。

    try (StringWriter writer = new StringWriter()) {
        TemplateConfiguration config = new TemplateConfiguration();
        MarkupTemplateEngine engine = new MarkupTemplateEngine(config);
        // createTemplateにはStringの他にReader, URLを渡せます
        Template template = engine.createTemplate("p('test template')");
        Map<String, Object> model = new HashMap<>();
        Writable output = template.make(model);
        // java.io.Writerを継承したインスタンスを渡してください
        output.writeTo(writer);
        System.out.println(writer);
    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }
    
  • Groovyのテンプレートエンジンの機能についての詳細は、こちらです。

    Template engines

    http://groovy-lang.org/templating.html

  • JsonBuilderは、以下の様にClosureを使って書くことが出来ます。

    import groovy.json.*
    
    def json = new JsonBuilder()
    json {
        message {
            text "Hello Groovy!"
        }
    }
    println json
    // 整形して出力することも出来ます
    println json.toPrettyString()
    
    {"message":{"text":"Hello Groovy!"}}
    {
        "message": {
            "text": "Hello Groovy!"
        }
    }
    

    JsonBuilderのサンプルはこちらです。

    http://groovyconsole.appspot.com/script/498001

    GroovyにはJSONのParserもあります。

    http://groovy-lang.org/json.html

  • スライドで紹介したGroovy Template を利用しているプロダクトはこちらです。

Groovyには、テンプレートエンジン以外にもJavaから使える機能が沢山あります。

また、Gradle は2.0からであればGroovy2.3の機能を使えるので、試してみてはいかがでしょうか。

感想

JVM以外のテンプレートエンジンのお話も聞けて、当日はとても楽しかったです。

当日は、JavaというかJVMのエンジニアが少なく、PHP, Perl, Rubyの方が多い印象でした。

Webデザイナーさんとの協業を考えると、HTMLのDOMにどうアプローチするのかを考えないと、お互いの為にならないということを知りました。

その他にも、JVM以外のテンプレートエンジンでの苦労話を聞いて、かなり勉強になりました。

Groovyを知ってたり使ってらっしゃる方が多かったのは、個人的には意外でした。

やはり、AndroidでGradleが採用されたから使っているというのが大きいのではないかと思います。

あと、Pixivさんのオフィスに初めてお邪魔して、楽しそうだなぁと思いました。

Smarty2で苦労されていらっしゃるみたいですが、良い解決策が見つかる事を願ってます。

主催者の @moznion さん、発表者の皆さん、会場を提供して下さったPixivさん、ありがとうございました。

また別のNightでお会いしましょう。

このエントリーをはてなブックマークに追加