<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Groovy on yusuiked&#39;s blog</title>
    <link>https://blog.yusuiked.dev/categories/groovy/</link>
    <description>Recent content in Groovy on yusuiked&#39;s blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-jp</language>
    <managingEditor>yusuiked@gmail.com (yusuiked)</managingEditor>
    <webMaster>yusuiked@gmail.com (yusuiked)</webMaster>
    <lastBuildDate>Sun, 06 Dec 2015 08:00:00 +0900</lastBuildDate><atom:link href="https://blog.yusuiked.dev/categories/groovy/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Groovy で寒い冬を乗り越える話 #gadvent</title>
      <link>https://blog.yusuiked.dev/posts/2015/12/06/surviving-cold-winter-with-groovy-gadvent/</link>
      <pubDate>Sun, 06 Dec 2015 08:00:00 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/12/06/surviving-cold-winter-with-groovy-gadvent/</guid>
      
      <description>&lt;p&gt;これは G* Advent Calendar 2015 の 6 日目の記事です。&lt;/p&gt;
&lt;p&gt;昨日は @saba1024 さんの &lt;a href=&#34;http://qiita.com/saba1024/items/4cb5a44196865b2d8b3d&#34;&gt;[Groovy]RatpackでシンプルなWEBアプリケーションを開発する -JSONとJSONPを扱う-&lt;/a&gt; でした。&lt;/p&gt;
&lt;p&gt;明日も @saba1024 さんです。&lt;/p&gt;
&lt;h3 id=&#34;前置き&#34;&gt;前置き&lt;/h3&gt;
&lt;p&gt;自宅、寒いんですよ。鉄筋かつ建物自体が古いのもあってか、断熱性が悪くて家に帰ってエアコン付けてから温まるまで、結構時間かかります。みなさんもこういう経験よくあるんじゃないでしょうか。先に帰宅した者負けみたいな。&lt;/p&gt;
&lt;p&gt;マーティがホバーボードに乗ってるはずの 2015 年にもなって、出先からエアコンを付けられないなんておかしい！！！１１１&lt;/p&gt;
&lt;p&gt;とゆーことで、買いました。IRKit。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://assets.yusuiked.dev/images/posts/2015/12/20151205181500.jpg&#34; alt=&#34;20151205181500.jpg&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://getirkit.com/&#34;&gt;IRKit - Open Source WiFi Connected Infrared Remote Controller&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;割と有名だと思うので、ここで IRKit がどういうものかという説明はしませんが、ざっくり言うと WiFi で繋がる学習機能付き赤外線リモコンです。また、HTTP をおしゃべりできるので、あんなことやそんなことがいろいろできちゃいます。&lt;/p&gt;
&lt;p&gt;IRKit は基本的には家の中のネットワークから使うのですが、IRKit にはインターネット越しに信号を送れる Internet HTTP API もあったりして、至れり尽くせりです。ただ、一つだけ面倒な点があって、赤外線データは IRKit 自体ではなく iOS アプリが保持する仕組みになっているため、家族のスマホで共有するのが面倒という事があります。&lt;/p&gt;
&lt;p&gt;なので、情報自体は一つにしてしまって、外部から自由に信号を送れたら、冬でも暖かい生活が送れる！と思っていろいろ調べていたら、同じことを考えている人はいるもので、すでにあるんですね。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blog.riywo.com/2015/01/13/022037/&#34;&gt;IRKitの自分専用APIサーバ＆自分専用UIをHerokuに立てて快適生活を目指す - As a Futurist&amp;hellip;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;あるんですが、Ruby です。まぁ、そのまま Ruby で使っても良かったんですが、なんとなく、Ruby にあるなら Groovy（か Java）にもあるやろ！！と思って、探してみたんですが無いんですねこれが。&lt;/p&gt;
&lt;p&gt;そこで、せっかくなので作りました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Girkit&lt;/li&gt;
&lt;li&gt;Girkit-api-server&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;girkit&#34;&gt;Girkit&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yukung/girkit&#34;&gt;github.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;はい、ruby-irkit のパクりインスパイアです。本当にありが（ry&lt;/p&gt;
&lt;p&gt;読み方は「じゃーきっと」で、これは IRKit のクライアントライブラリになっています。できることは本家と同じで、&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>今こそッ、始めようGrailsブートキャンプ!!!! に行ってきた #jggug</title>
      <link>https://blog.yusuiked.dev/posts/2015/10/24/attended-grails-bootcamp/</link>
      <pubDate>Sat, 24 Oct 2015 23:39:50 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/10/24/attended-grails-bootcamp/</guid>
      
      <description>&lt;p&gt;いつもの NTTソフトウェアさんで。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://jggug.doorkeeper.jp/events/32330&#34;&gt;jggug.doorkeeper.jp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Grails も3系になり、Spring Boot をベースに生まれ変わったということで以前ちょこっとだけ触ってみたことがありましたが、再度自分の理解を確かめる意味で参加してきました。&lt;/p&gt;
&lt;h3 id=&#34;内容&#34;&gt;内容&lt;/h3&gt;
&lt;p&gt;Grails 3.0.9 を使って簡単な Todo アプリを作るハンズオンでした。@yamkazu さんの資料が素晴らしすぎて、これを読みながら手を動かしていくことでざっと Grails 3 での開発の流れを実体験できる仕上がりになっています。これ Grails 3 の日本語の入門資料として今のところ最適なんじゃないでしょうか。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yamkazu/jggug-grails-bootcamp&#34;&gt;github.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;成果物&#34;&gt;成果物&lt;/h3&gt;
&lt;p&gt;私もこれに沿って Todo アプリを作ってみました。カンタン。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://assets.yusuiked.dev/images/posts/2015/10/20151024232829.png&#34; alt=&#34;20151024232829.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yukung/jggug-grails-bootcamp&#34;&gt;github.com&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;感想とかメモ&#34;&gt;感想とかメモ&lt;/h3&gt;
&lt;h4 id=&#34;ドメインクラスを指定するだけで基本的な-crud-のメソッドsave-delete-list-getが勝手に生えてる&#34;&gt;ドメインクラスを指定するだけで基本的な CRUD のメソッド（save, delete, list, get）が勝手に生えてる&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Todo&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    String content
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; constraints &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        content blank: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; maxSize: &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; todo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Todo&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;content: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hogehoge&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;todo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;save&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// Create
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; todos &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Todo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;list&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// Multi read
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; todo &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Todo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// Read
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;todo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;content&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;updated.&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;todo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;save&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// Update
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;todo&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;delete&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// Delete
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;環境ごとに設定を変える仕組みが最初から備わっている&#34;&gt;環境ごとに設定を変える仕組みが最初から備わっている&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;environments&lt;/code&gt; に &lt;code&gt;development&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;production&lt;/code&gt; と環境ごとに設定ができる&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// BootStrap.groovy で起動時の処理を記述できる
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;BootStrap&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; init &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; servletContext &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        environments &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            development &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// run-app で立ち上げた時のモード
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            test &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// test-app でテスト実行した時のモード
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            production &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;// war, jar で動かしている時のモード
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;コントローラについて&#34;&gt;コントローラについて&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Controller と Action メソッドが URL に対応している&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>渋谷 JVM に行ってきた #渋谷JVM</title>
      <link>https://blog.yusuiked.dev/posts/2015/04/19/attended-shibuya-jvm/</link>
      <pubDate>Sun, 19 Apr 2015 23:25:02 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/04/19/attended-shibuya-jvm/</guid>
      
      <description>&lt;p&gt;&lt;a href=&#34;http://d-cube.connpass.com/event/13257/&#34;&gt;d-cube.connpass.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;JVM そのものではなく、JVM の上で動く言語についての会でした。申し込み人数が100人超えしていたけど、最終的には90人くらいに落ち着いてた。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;連休に入るとサーバが故障するとか、ヘソ曲げてるとしか思えない&lt;/p&gt;
&lt;p&gt;— Yusuke Ikeda (@yukung) &lt;a href=&#34;https://twitter.com/yukung/status/589252769493581825&#34;&gt;2015, 4月 18&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;出かける直前にサーバのアラートが来ちゃって&lt;a href=&#34;https://blog.yusuiked.dev/posts/2015/04/19/attended-shibuya-jvm/#f-1f4653af&#34; title=&#34;それまでまったくアラート出したことなかったおとなしい子だったのに、この日から長めの連休に入るとなった瞬間機嫌を損ねるとかね…&#34;&gt;*1&lt;/a&gt;、なんだかんだバタバタしてしまい10分くらい遅れて到着したけど、セッション自体はまだ始まってなかったのでセーフ。&lt;/p&gt;
&lt;p&gt;まとめはこの辺&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://togetter.com/li/810009&#34;&gt;togetter.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;とか、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://shigemk2.hatenablog.com/entry/shibuyajvm.scala&#34;&gt;I love Scala #渋谷JVM - by shigemk2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://shigemk2.hatenablog.com/entry/shibuyajvm.clojure&#34;&gt;Immutable時代のプログラミング言語 Clojure #渋谷JVM - by shigemk2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://shigemk2.hatenablog.com/entry/shibuyajvm.groovy&#34;&gt;今さら始めよう Groovy #渋谷JVM - by shigemk2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://shigemk2.hatenablog.com/entry/shibuyajvm.java&#34;&gt;盛り返すJava #渋谷JVM - by shigemk2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とか。shigemk2 さんの記事は素晴らしくまとまっているので、詳細な内容はそちらでどうぞ。 &lt;/p&gt;
&lt;h3 id=&#34;scala-セッションtakezoen-さん&#34;&gt;Scala セッション（@takezoen さん）&lt;/h3&gt;
&lt;p&gt;竹添さんの言語遍歴と Scala に出会ってからのお話。Java 以外にも Lisp、Haskell、Clojure といろいろ変遷があって、人に歴史ありだなーと勝手に思ってました。会社入って早い段階でポール・グレアムの本を読んでいたとか、当時の自分は存在も知らなかったしすごいなーと思いつつ。2011年〜2012年辺りの Java の停滞感と、当時の Scala の Java にはなかった熱気が、竹添さんを Scala に誘ったといった辺りも、なるほどなぁと思いながら聞いてました。途中、Java の停滞期の話をしている途中で竹添さんの PC から Java アップデートのお知らせが来てスライドが中断するという奇跡が起こって会場が盛り上がってたｗ&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;たけぞえさんへの Java からの悲痛な叫びｗｗ &lt;a href=&#34;https://twitter.com/hashtag/%E6%B8%8B%E8%B0%B7JVM?src=hash&#34;&gt;#渋谷JVM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— Yusuke Ikeda (@yukung) &lt;a href=&#34;https://twitter.com/yukung/status/589289902669303808&#34;&gt;2015, 4月 18&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>本が出るまで待てない!? Gradleハンズオン - G*ワークショップZ Oct 2014 に行ってきた #jggug</title>
      <link>https://blog.yusuiked.dev/posts/2014/10/26/attended-gradle-hands-on-g-workshop-z-oct-2014-jggug/</link>
      <pubDate>Sun, 26 Oct 2014 22:48:31 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2014/10/26/attended-gradle-hands-on-g-workshop-z-oct-2014-jggug/</guid>
      
      <description>&lt;p&gt;最近ずっと使ってます。Gradle。&lt;/p&gt;
&lt;p&gt;今仕事でやってるプロジェクトも Gradle を使っているので、なんという俺得なタイミング、ということで行ってきました。&lt;/p&gt;
&lt;p&gt;Gradle 本出版記念ということで、参加者だけのありがたい特典もありました。行ってよかったデス。&lt;/p&gt;
&lt;h3 id=&#34;コンテンツ&#34;&gt;コンテンツ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;@nobusue さんの Gradle イントロダクションと 2.0,2.1 の主な変更点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.slideshare.net/nobusue/gws-20141024-gradleintro&#34; title=&#34;Gws 20141024 gradle_intro&#34;&gt;&lt;strong&gt;Gws 20141024 gradle_intro&lt;/strong&gt;&lt;/a&gt; from &lt;a href=&#34;http://www.slideshare.net/nobusue&#34;&gt;&lt;strong&gt;Nobuhiro Sue&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@literalice さんの Gradle プラグインハンズオン&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;lt&#34;&gt;LT&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;@kyon_mm さんの Gradle 2.2, 2.3 の変更点おさらい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@nobeans さんの OSS 開発の嗜み話&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;すいません、資料見つけられませんでした&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;以下学び&#34;&gt;以下、学び&lt;/h3&gt;
&lt;h4 id=&#34;plugins-ブロックとプラグインポータル&#34;&gt;plugins ブロックとプラグインポータル&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Gradle2.1 で追加された&lt;/li&gt;
&lt;li&gt;3rd party のプラグインを使うときにより簡単になった&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;buildscript &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    repositories &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        jcenter&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dependencies &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        classpath &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com.bmuschko:gradle-tomcat-plugin:2.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apply plugin: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com.bmuschko.tomcat&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;〜2.0までこう書いていたのが、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;plugins &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    id &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com.bmuschko.tomcat&amp;#34;&lt;/span&gt; version &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで良くなった。ただし&lt;a href=&#34;http://plugins.gradle.org/&#34;&gt;プラグインポータル&lt;/a&gt;に登録されていることが前提。&lt;/p&gt;
&lt;h4 id=&#34;インクリメンタルコンパイル&#34;&gt;インクリメンタルコンパイル&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Gradle 2.1 で追加された&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;変更のあった Java ソースのみ再コンパイルする&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title> Tellurium を試してみた</title>
      <link>https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/</link>
      <pubDate>Tue, 27 Dec 2011 03:02:21 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/</guid>
      
      <description>&lt;p&gt;もう25日は過ぎてしまいましたが、自重せずに &lt;a href=&#34;http://atnd.org/events/22483/&#34;&gt;G* Advent Calendar 2011 : ATND&lt;/a&gt; 27日目の記事行かせていただきたいと思います。&lt;br&gt;
初めまして、&lt;a href=&#34;http://blog.hatena.ne.jp/yukung/&#34;&gt;id:yukung&lt;/a&gt;/@yukung と申します。Groovistな皆様、お手柔らかにお願いいたします。&lt;/p&gt;
&lt;p&gt;最近、ノンブロッキングI/Oな仕事をしているので、当初Grettyについて書こうかなーと思っておりました。そうしたら見事に @toby55kij さんとネタがかぶってしまったので（&lt;a href=&#34;http://d.hatena.ne.jp/toby55kij/20111223/1324568112/&#34;&gt;Grettyで割り勘計算機 #gadvent2011 - Toby55@新潟の日常&lt;/a&gt;）、慌てて&lt;a href=&#34;http://groovy.codehaus.org/Modules/&#34;&gt;ここ&lt;/a&gt;を漁って違うネタを探して若干焦りました＞＜&lt;br&gt;
&lt;a href=&#34;http://groovy.codehaus.org/Modules&#34;&gt;Groovy - Modules&lt;/a&gt; の中で、Telluriumがちょっと面白そうだなーと思ったのと、ググッてもあまり日本語の情報がなかったので&lt;a href=&#34;https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/#f1&#34; title=&#34;というか英語の情報も多くなかった&#34;&gt;*1&lt;/a&gt;、書いてみようと思います。というわけで、急造な記事なのでちょっと浅いかもしれませんが、ご容赦ください。&lt;/p&gt;
&lt;h4 id=&#34;tellurium-って&#34;&gt;Tellurium って？&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/aost/&#34;&gt;Tellurium&lt;/a&gt; は、GroovyとJavaで実装されたWebアプリケーション向けのテスティングフレームワークです。この分野には、Webブラウザの操作をエミュレートしてWebアプリケーションの自動テストを可能にしてくれるSeleniumという有名なツールがありますが、TelluriumはそのSeleniumを基盤にして構築されています。というか私が触ってみた感想は、平たく言ってSeleniumをDSLで書けるようにしたGroovy/Javaラッパーな感じです。&lt;/p&gt;
&lt;h4 id=&#34;selenium-との違い&#34;&gt;Selenium との違い&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/aost/&#34;&gt;公式サイト&lt;/a&gt;によれば、TelluriumはSeleniumとの違いを、テストコンセプトの違いと定義しています。また、Seleniumを「C言語」のようなものであるとすれば、Telluriumは「C++」のようなものだ、とも言っています。なんだかわかったようなわからないような感じですね。&lt;/p&gt;
&lt;h5 id=&#34;ui要素の扱い&#34;&gt;UI要素の扱い&lt;/h5&gt;
&lt;p&gt;Telluriumでは、UI要素の記述を「UI module」として扱えることをSeleniumに対するアドバンテージとして捉えているようです。&lt;br&gt;
RIAやAjaxなど&lt;a href=&#34;https://blog.yusuiked.dev/posts/2011/12/27/tried-tellurium/#f2&#34; title=&#34;あまり聞かなくなりましたねこの言葉&#34;&gt;*2&lt;/a&gt;、リッチなWebアプリケーションが一般的になってきた昨今、Webのインテグレーションテストも重量級になってきがちなところに対する一つの答えとなるのがTelluriumのゴールのようです。&lt;/p&gt;
&lt;p&gt;主なメリットとしては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript Eventをトリガーにした動作&lt;/li&gt;
&lt;li&gt;Ajaxアプリケーションのサポート&lt;/li&gt;
&lt;li&gt;変更に対する堅牢性と柔軟性&lt;/li&gt;
&lt;li&gt;メンテナンスの容易さ&lt;/li&gt;
&lt;li&gt;UI module の再利用性&lt;/li&gt;
&lt;li&gt;表現力（DSLで書けるなど）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった所が挙げられています。&lt;/p&gt;
&lt;p&gt;私はSeleniumを仕事では使っていませんし、使いたいなーと思って入るものの今のところヘビーユーザーでもないので、相違点について細かいところはあまりわからないのですが、例えばSeleniumでボタンクリックするような挙動を記述したいときは、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   selenium.&lt;span style=&#34;color:#a6e22e&#34;&gt;click&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;//div[3]/input[@value=&amp;#39;Create&amp;#39;]&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんな風に書くと思いますが、TelluriumではGroovyを使って、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ui&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Form&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Form&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;form&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Div&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[:]){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            Selector&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sex&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[:])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            InputBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; type: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; name: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;j_username&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Container&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Finish&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tr&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            SubmitButton&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;uid: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Submit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; clocator: &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;tag: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; type: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;submit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; value: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Login&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; name: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;submit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんな風に、UI要素だけを分離して書くことで、テスト箇所のUI要素と、実際のテストコードを分離することができます。また、UI要素を階層構造で記述するので、モジュールとしての再利用性も期待できます。&lt;br&gt;
UI要素など、変更が頻繁にかかる箇所はGroovyのDSLでライトに書いてカプセル化し、テストコードは使い慣れたJUnitやTestNGなどで書くことによって、UIの変更に大きな影響を受けず、かつUI要素をモジュール化して再利用できる、ということが主なメリットのようです。&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
