<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Java on yusuiked&#39;s blog</title>
    <link>https://blog.yusuiked.dev/categories/java/</link>
    <description>Recent content in Java 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>Tue, 15 Dec 2015 17:00:00 +0900</lastBuildDate><atom:link href="https://blog.yusuiked.dev/categories/java/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Java で引数の null チェックで迷った話</title>
      <link>https://blog.yusuiked.dev/posts/2015/12/15/null-check-argument-confusion-in-java/</link>
      <pubDate>Tue, 15 Dec 2015 17:00:00 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/12/15/null-check-argument-confusion-in-java/</guid>
      
      <description>&lt;p&gt;これは &lt;a href=&#34;http://qiita.com/advent-calendar/2015/java&#34;&gt;Java Advent Calendar 2015&lt;/a&gt; の 15 日目の記事です。&lt;/p&gt;
&lt;p&gt;昨日は &lt;a href=&#34;https://twitter.com/opengl_8080&#34;&gt;@opengl_8080&lt;/a&gt; さんの &lt;a href=&#34;http://qiita.com/opengl-8080/items/e5244ff862219df8b142&#34;&gt;Byteman 使い方メモ＋α&lt;/a&gt; でした。明日は &lt;a href=&#34;https://twitter.com/irof&#34;&gt;@irof&lt;/a&gt; さんです。&lt;/p&gt;
&lt;h3 id=&#34;前置き&#34;&gt;前置き&lt;/h3&gt;
&lt;p&gt;ついこないだチームでちょっとだけ話題に上って、みんなある程度指針は持っているものの、割と悩みつつ明確に答えを出せなかったので、もっと良い意見があればと思って晒してみます。まぁよくある話だし、Java 8 で &lt;code&gt;Optional&lt;/code&gt; が使えるようになって &lt;code&gt;null&lt;/code&gt; について語られるケースが増えたと思うので、再考するちょうどよい機会になればいいなーと思います。初心者向けです。&lt;/p&gt;
&lt;h4 id=&#34;どう処す処す&#34;&gt;どう処す？処す？&lt;/h4&gt;
&lt;p&gt;こんな状況の時にあなたならどうしますか？&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;&lt;span style=&#34;color:#75715e&#34;&gt;// Generics なのは例です。String でもなんでもいいです&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;public&lt;/span&gt; T &lt;span style=&#34;color:#a6e22e&#34;&gt;doSomething&lt;/span&gt;(T input) {
&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;// input が null の時にどう処す？処す？&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;もちろん、呼び出し側のコンテキストとか、ライブラリを何使うかとか、Java 8 or それ以前とか、そういった前提によっていろいろ対処は変わってくるとは思うのですが、いくつか選択肢があると思います。良い悪いを置いといて、よく見るのは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;null&lt;/code&gt; を返す&lt;/li&gt;
&lt;li&gt;何らかのデフォルト値を返す&lt;/li&gt;
&lt;li&gt;&lt;code&gt;java.lang.IllegalArgumentException&lt;/code&gt; などの例外を投げる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;辺りかなぁと思います。&lt;code&gt;null&lt;/code&gt; を返すパターンの時は、もし返り値が &lt;code&gt;Collection&lt;/code&gt; や配列なのに、&lt;code&gt;null&lt;/code&gt; 返しちゃうようなのを見かけたら、Effective Java をそっと差し出してあげてください。&lt;/p&gt;
&lt;h4 id=&#34;おぬし気が効いてるのう&#34;&gt;おぬし気が効いてるのう&lt;/h4&gt;
&lt;p&gt;個人的に、以下のような実装を見たら、おお、おぬしホスピタリティを心得ておるのぅ、って思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Null Object パターンで何もしないオブジェクトを返す&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;これも一種のデフォルト値を返すパターンと言える&lt;/li&gt;
&lt;/ul&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-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Command&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;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;execute&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;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ABCCommand&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;implements&lt;/span&gt; Command {
&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;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;execute&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ABC&amp;#34;&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// こいつが Null Object&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;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;NullCommand&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;implements&lt;/span&gt; Command {
&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;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;execute&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;// do nothing&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Main&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;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(String... args) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Command missing &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; createCommand(&lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;); &lt;span style=&#34;color:#75715e&#34;&gt;// 普通こんなことやらないけど&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        missing.&lt;span style=&#34;color:#a6e22e&#34;&gt;execute&lt;/span&gt;();  &lt;span style=&#34;color:#75715e&#34;&gt;// createCommand の戻り値が null だったら〜という null チェックが要らない&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;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; Command &lt;span style=&#34;color:#a6e22e&#34;&gt;createCommand&lt;/span&gt;(String name) {
&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;if&lt;/span&gt; (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;equals&lt;/span&gt;(name)) {
&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; ABCCommand();
&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;else&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; NullCommand();
&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ガード節を表現する実装をする&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Spring in Summer ~ 夏なのにSpring で発表してきました #jsug_sis</title>
      <link>https://blog.yusuiked.dev/posts/2015/08/31/presented-at-spring-in-summer-jsug-sis/</link>
      <pubDate>Mon, 31 Aug 2015 18:00:00 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/08/31/presented-at-spring-in-summer-jsug-sis/</guid>
      
      <description>&lt;p&gt;こういう大きいイベントでセッション発表するのは初めてだったのでかなり緊張しましたが、無事発表を終えることができました。やればできるもんですねｗ&lt;a href=&#34;https://blog.yusuiked.dev/posts/2015/08/31/presented-at-spring-in-summer-jsug-sis/#f-1f661b55&#34; title=&#34;資料作るのも結構ギリギリまでやってた…&#34;&gt;*1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.slideshare.net/yukung/report-to-spring-developer-from-cyberagent&#34; title=&#34;Report to Spring Developer from CyberAgent&#34;&gt;&lt;strong&gt;Report to Spring Developer from CyberAgent&lt;/strong&gt;&lt;/a&gt; from &lt;a href=&#34;http://www.slideshare.net/yukung&#34;&gt;&lt;strong&gt;Yusuke Ikeda&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.slideshare.net/yukung/report-to-spring-developer-from-cyberagent&#34;&gt;www.slideshare.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;時間が多少オーバーしてしまい、質疑応答の時間が取れなかったのは申し訳なかったです。ただセッション終了後には数人の方に質問しにきていただいたりもして、多少なりとも興味持って聞いていただけたのかなぁと勝手ながら思っています。&lt;/p&gt;
&lt;p&gt;発表の機会を下さった @making さんはじめ、 JSUG スタッフの方々、その他関係者の方々、本当にありがとうございました。&lt;/p&gt;
&lt;h3 id=&#34;補遺&#34;&gt;補遺&lt;/h3&gt;
&lt;p&gt;私と同僚の山田の2人でのセッションで、前半が私のレガシーシステムへの導入事例、後半が山田の Spring Boot を使った運用 Tips といった構成でした。最初は私も技術的なことを掘り下げたセッションにしようかとも思っていたのですが、メリハリがないと聞く側も疲れてしまうだろうという気持ちもあってこのような構成にしました。結果的にはバランスが取れて良かったかなと思っています。&lt;/p&gt;
&lt;p&gt;私のパートはセッション中にも何度か言いましたが、BtoC でよく話題に上がるような以下の様な問題&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高トラフィック&lt;/li&gt;
&lt;li&gt;低レイテンシ&lt;/li&gt;
&lt;li&gt;大量データ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;はあつかわず、どちらかというとどこにでもありそうな話題をテーマにしました。目新しい話題を期待されていた方には申し訳なかったです。&lt;/p&gt;
&lt;p&gt;Spring のカンファレンスで私たちのような事業者が冠に付いたセッションに対して期待されるのは、どちらかというと上記のようなテーマではないかと思ったりもしました。ただ、私自身が Spring に絡めた話でその文脈を語れるほど経験がなかったことと、私が Spring（特に Boot）に対して魅力に感じていたのは、今回のセッションで話したような生産性の高さと柔軟性、そして簡単さだった&lt;a href=&#34;https://blog.yusuiked.dev/posts/2015/08/31/presented-at-spring-in-summer-jsug-sis/#f-2fa9cb96&#34; title=&#34;しんどい状況から本当に救われたので&#34;&gt;*2&lt;/a&gt;ので、そこをお話したかったということが大きいです。&lt;/p&gt;
&lt;p&gt;そういう意味でも、もし導入を検討されている方や悩まれている方がいるなら、背中を押してあげたい気持ちですｗ&lt;a href=&#34;https://blog.yusuiked.dev/posts/2015/08/31/presented-at-spring-in-summer-jsug-sis/#f-e33d3864&#34; title=&#34;私が @making さんにそうされたように&#34;&gt;*3&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;質問されたこと&#34;&gt;質問されたこと&lt;/h3&gt;
&lt;h4 id=&#34;犠牲的アーキテクチャの話で今あるものを捨ててしまうのが価値とは&#34;&gt;犠牲的アーキテクチャの話で、今あるものを捨ててしまうのが価値、とは？&lt;/h4&gt;
&lt;p&gt;この辺りの話はちょっと前提をすっ飛ばしすぎて、普段 Web 上の議論を追っていない方にとってはなんのこっちゃという話でした。すみません。&lt;/p&gt;
&lt;p&gt;大元は、マーティン・ファウラーが書いた&lt;a href=&#34;http://martinfowler.com/bliki/SacrificialArchitecture.html&#34;&gt;このエントリ&lt;/a&gt;が発端の話です。（日本語訳は&lt;a href=&#34;http://capsctrl.que.jp/kdmsnr/wiki/bliki/?SacrificialArchitecture&#34;&gt;こちら&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;端的に言うと、今作っているものも数年後には捨てざるを得ないくらい、世の中が変わったり技術が進んだりして、要件が実態と合わなくなることがあるかもしれない。ビジネスが成長して、システムのスケーラビリティが追いつかないこともあるかもしれない。それならば、作る時に最初から捨てることを意識してアーキテクチャを選ぼう、という考え方です。ただし、捨てるからといって、それまで作ってきたものに価値はない、ということではなく、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;比較的短時間で捨ててしまうソフトウェアだって多くの価値を生み出しうると認めること&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ともある通り、それはそれで開発チームが得てきた問題領域に対する経験や知識が無駄になるわけではないし、また品質を置いてけぼりにしていいわけではなく、極力モジュール性を高めておくことで新しいアーキテクチャにも交換できるようにしておくことが重要だとも言っています。この辺は、今流行りの Microservices Architecture にも通じる話かなと。&lt;/p&gt;
&lt;p&gt;兎にも角にも、これをそもそもやるべきかどうか、いつやるべきか、というのに答えがあるわけでもなく、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;多くの場合、これは技術というより事業の決断なのだ。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ということなんだと思います。&lt;/p&gt;
&lt;p&gt;この話題に関しては、犠牲的アーキテクチャという言葉ともに、&lt;strong&gt;神宮式年遷宮&lt;/strong&gt;に絡めて語られたり、&lt;strong&gt;式年遷宮アーキテクチャ&lt;/strong&gt;などと言われて一時議論されていました。以下に、Web 上の有用な議論のリンクを示しておきますので、興味ある方はどうぞ。特に、Rebuild.fm の Aftershow 67 を聞いてみるといいと思います。&lt;/p&gt;
&lt;h5 id=&#34;その他参考になるリンク&#34;&gt;その他参考になるリンク&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.infoq.com/jp/news/2014/11/sacrificial-architecture&#34;&gt;Martin Fowler氏の語る“犠牲的アーキテクチャ&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rebuild.fm/67a/&#34;&gt;Rebuild: Aftershow 67: Sacrifice Your Code (Naoya Ito)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://anemone.dodgson.org/2015/04/09/probablistically-sacrificial/&#34;&gt;確率的に犠牲的 - steps to phantasien&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.oimou.com/shen-gong-shi-nian-qian-gong-toikenie-sheng-de-akitekutiyaaf27a09a/&#34;&gt;神宮式年遷宮と犠牲的アーキテクチャ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://forza.cocolog-nifty.com/blog/2014/12/post-2649.html&#34;&gt;犠牲的アーキテクチャ～リプレースを正当化するアーキテクチャ: プログラマの思索&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;チーム状況として1人と言っていたが障害時のオペレーションはどうしているのか&#34;&gt;チーム状況として1人と言っていたが、障害時のオペレーションはどうしているのか？&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;基本的に自分が対処できる状況にあればするが、休みやいない場合はもちろんローテーションするようにしている&lt;/li&gt;
&lt;li&gt;一次対応は他メンバーでもできるようになっている&lt;/li&gt;
&lt;li&gt;手順は Wiki にまとめるなど、明確化している&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;開発が1人だったということだがインフラのキッティングやらネットワークやらまで1人でやったのか&#34;&gt;開発が1人だったということだが、インフラのキッティングやらネットワークやらまで1人でやったのか？&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;インフラはオンプレミスの仮想環境に乗る形なので、アプリケーションエンジニアは基本的にはミドルウェアまで見られればとりあえず回る&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;蛇足&#34;&gt;蛇足&lt;/h4&gt;
&lt;p&gt;1人でやってることに関して、「私も1人でやってるんで、どういう風に上手くやってるのか教えて欲しいですー」みたいな話をちらほら聞きました。意外と世の中ソロプレイを強いられている方々多いのでは…？ｗ&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>JJUG CCC 2015 Spring に行ってきた #jjug_ccc</title>
      <link>https://blog.yusuiked.dev/posts/2015/04/15/attended-jjug-ccc-2015-spring/</link>
      <pubDate>Wed, 15 Apr 2015 08:00:00 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/04/15/attended-jjug-ccc-2015-spring/</guid>
      
      <description>&lt;p&gt;少し時間が経ってしまいましたが。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1647&#34;&gt;前回までの会場とは違い&lt;/a&gt;、西新宿駅から近くなったのでより行きやすくなってた。この辺りは以前通っていた職場にも近くて、歩いて通ったことも何度もあったので、懐かしさを感じつつ会場入り。もうやんカレー昔よく行きました。&lt;/p&gt;
&lt;p&gt;タイムテーブルは&lt;a href=&#34;http://www.java-users.jp/?page_id=1663&#34;&gt;こちら&lt;/a&gt;。&lt;/p&gt;
&lt;h3 id=&#34;参加したセッション&#34;&gt;参加したセッション&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#K-1&#34;&gt;基調講演1 Java 20年史&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#K-2&#34;&gt;基調講演2 Java SE 8 と Raspberry Pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#CD-1&#34;&gt;Java における null。これまでとこれから&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#AB-2&#34;&gt;Web開発における最新テスト手法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#AB-3&#34;&gt;大規模な負荷でもドキドキしない為のJava EE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#CD-4&#34;&gt;『Embulk』に見るモダンJavaの実践的テクニック ～並列分散処理システムの実装手法～&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#G-5&#34;&gt;Grails 第3章 進化したSpring-bootベースフレームワーク&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#F-6&#34;&gt;いろんなデータをKibana4で見てみよう&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.java-users.jp/?page_id=1661#F-7&#34;&gt;JobStreamerではじめるJavaBatchクラウド分散実行&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;感想とか思ったこととか&#34;&gt;感想とか思ったこととか&lt;/h3&gt;
&lt;p&gt;参加レポートは他の方にお任せして、個人的に感じたことや思ったことなどを。セッション資料も JJUG のサイトにリンクされてますし、以下のブログでも素晴らしくまとまっているのでそちらをどうぞ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/chiheisen/20150411/1428749951&#34;&gt;JJUG CCC 2015 Spring ( #jjug_ccc ) - セッション資料の一覧 - 地平線に行く - 地平線に行く&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;基調講演1-java-20年史&#34;&gt;基調講演1 Java 20年史&lt;/h4&gt;
&lt;p&gt;JJUG 副会長の河村さんによる Java 昔話。なんだか大学の講義を聞いているようで懐かしさを覚えつつ、前半は聞いたことが無い単語や技術要素もあったりして逆に新鮮だったのと、全体を通して Java がどう変化してきたのかを俯瞰で見ることができていい機会だった。&lt;/p&gt;
&lt;p&gt;私は Java 触り始めたのが大学3年の頃なので 2003 年くらい。ちょうど Struts が出始めの頃で、卒業論文で分散オブジェクト技術について書いてたので、 RMI/IIOP とか EJB とかについて調べていた記憶が話を聞いていて蘇った。それから新人研修がちょうど Java5 が出たての頃で、研修の補助図書として Java5 の本を渡された記憶とかも。懐かしい。&lt;/p&gt;
&lt;p&gt;全体として、Java はインターネットの普及とともに進化してきたのだと改めて感じた。ブラウザの覇権の歴史とか、JavaScript の復興とか、これまでのインターネットの歴史について振り返るような授業が大学にあるとすれば、必ず出てきそうな話だと思うし、それとともに Applet やら Servlet やら EJB やらが出てきて何が問題だったのか、みたいなことが教科書に乗ってると思う。そういう意味で、むしろ最近入社した新卒〜3年目くらいの人に聞いて欲しいと思った。その時どんな問題があってそういった技術が出てきて、その技術がどんな課題があって消えていったのか、といったことは、技術がどんなに進歩しても普遍的な話だと思うし。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Java エンジニア養成読本読み終わった</title>
      <link>https://blog.yusuiked.dev/posts/2015/01/04/finished-reading-java-engineer-training-textbook/</link>
      <pubDate>Sun, 04 Jan 2015 19:49:37 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2015/01/04/finished-reading-java-engineer-training-textbook/</guid>
      
      <description>&lt;p&gt;年末年始積ん読消化第1弾。&lt;/p&gt;
&lt;p&gt;ざっくりとしたレビューは booklog の方に書きました。&lt;/p&gt;
&lt;p&gt;こっちは雑感を少し。&lt;/p&gt;
&lt;p&gt;きしださんの巻頭記事は、Java 屋な人が飲み屋で展開したいネタがギュッと詰まってて大変面白かったです。こういう話題を飲み屋でできるチームは良いチームな気がしたｗ歴史とかも、自分が大学時代語られていたような話から最近の話題まで網羅されてて、読み物として純粋に楽しめました。&lt;/p&gt;
&lt;p&gt;特集1の Java 入門と、特集4のチーム開発入門は、新人研修が終わって次何読ませるかってなった段で一旦これをかますのがいいかなーと思いました。もちろん最初はわからないことが多く出て消化不良になるリスクもあるんだけど、避けては通れない道でもあると思うので、早いところまず到達して欲しいポイントを見せて到達点を明示しておくのも大事なのではないかなーと思ったり。&lt;/p&gt;
&lt;p&gt;ブクログの方にも書いたけど、Java 入門の方は読んでて、あ、これ Effective Java とパーフェクト Java に書いてあったなーとか思い出したりしたので、両方のエッセンスが上手く詰まっている気がするし、例外のお話や標準ライブラリのところは、この本が想定している読者層であろうエンプラな現場では、大事なくせに先輩方が教えてくれない（教えられない？…おや誰か来たようだ）現場の方が多かったりする。さらにチーム開発入門はこのままWebDBPressのチーム開発実践入門へ繋げる流れがいいかなーなどと感じた。そういう意味でもこういう読みやすい媒体で触れさせるのに最適だと思う。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/489471499X/hatena-blog-22/&#34;&gt;&lt;img src=&#34;http://ecx.images-amazon.com/images/I/51E1m-weAXL._SL160_.jpg&#34; alt=&#34;Effective Java 第2版 (The Java Series)&#34; title=&#34;Effective Java 第2版 (The Java Series)&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/489471499X/hatena-blog-22/&#34;&gt;Effective Java 第2版 (The Java Series)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Joshua Bloch,柴田芳樹&lt;/li&gt;
&lt;li&gt;出版社/メーカー: ピアソンエデュケーション&lt;/li&gt;
&lt;li&gt;発売日: 2008/11/27&lt;/li&gt;
&lt;li&gt;メディア: 単行本（ソフトカバー）&lt;/li&gt;
&lt;li&gt;購入: 77人 クリック: 936回&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/asin/489471499X/hatena-blog-22&#34;&gt;この商品を含むブログ (267件) を見る&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4774166855/hatena-blog-22/&#34;&gt;&lt;img src=&#34;http://ecx.images-amazon.com/images/I/51Or5uklizL._SL160_.jpg&#34; alt=&#34;改訂2版 パーフェクトJava&#34; title=&#34;改訂2版 パーフェクトJava&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4774166855/hatena-blog-22/&#34;&gt;改訂2版 パーフェクトJava&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 井上誠一郎,永井雅人&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 技術評論社&lt;/li&gt;
&lt;li&gt;発売日: 2014/11/01&lt;/li&gt;
&lt;li&gt;メディア: 大型本&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/asin/4774166855/hatena-blog-22&#34;&gt;この商品を含むブログ (3件) を見る&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4774164283/hatena-blog-22/&#34;&gt;&lt;img src=&#34;http://ecx.images-amazon.com/images/I/51ZhxAcsdkL._SL160_.jpg&#34; alt=&#34;チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB&amp;#43;DB PRESS plus)&#34; title=&#34;チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB&amp;#43;DB PRESS plus)&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>はじめての Spring Boot 読み終わった #hajiboot</title>
      <link>https://blog.yusuiked.dev/posts/2014/12/27/finished-reading-first-spring-boot-hajiboot/</link>
      <pubDate>Sat, 27 Dec 2014 08:45:47 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2014/12/27/finished-reading-first-spring-boot-hajiboot/</guid>
      
      <description>&lt;p&gt;一足先に仕事が納まっていたので、今日通しで読み終えた。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4777518655/hatena-blog-22/&#34;&gt;&lt;img src=&#34;http://ecx.images-amazon.com/images/I/51NngrEolCL._SL160_.jpg&#34; alt=&#34;はじめてのSpring Boot―「Spring Framework」で簡単Java (I/O BOOKS)&#34; title=&#34;はじめてのSpring Boot―「Spring Framework」で簡単Java (I/O BOOKS)&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4777518655/hatena-blog-22/&#34;&gt;はじめてのSpring Boot―「Spring Framework」で簡単Java (I/O BOOKS)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 槙俊明&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 工学社&lt;/li&gt;
&lt;li&gt;発売日: 2014/11&lt;/li&gt;
&lt;li&gt;メディア: 単行本&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/asin/4777518655/hatena-blog-22&#34;&gt;この商品を含むブログ (3件) を見る&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;感想&#34;&gt;感想&lt;/h3&gt;
&lt;p&gt;それほど分量が多い本ではないし、ステップ・バイ・ステップで記述されているので最低限の Java の知識さえあればサラッと読める。サンプルソースコードや正誤表も GitHub で管理されているので、常に最新状況が反映されていて安心感がある。またサンプルも動かなかったりしたらソース落としてきて手元でビルドして確認できる点は、初心者が写経して typo で動かなくてやる気なくす、みたいなことを減らすことができそうだし素晴らしいなぁと思いました。よく、技術書でサンプルコードを zip で落とすパターンもあるけど、もう一律 GitHub でいいんじゃないかなぁ。&lt;/p&gt;
&lt;h3 id=&#34;内容&#34;&gt;内容&lt;/h3&gt;
&lt;p&gt;Hello World から始まって、Spring Boot というよりは Spring Framework の基本、おそらく最も使う機会が多いと思われる要素（DI、Spring JDBC、Spring JPA）を一巡り、その後 Spring Boot で REST API と Thymeleaf を使った画面のある WebApp を実装し、Flyway や Spring Security にもさっと触れます。そして作ったアプリを heroku にデプロイ、最後に &lt;code&gt;RestTemplate&lt;/code&gt; を使ったテスト方法と、Spring Boot でアプリ開発をするにあたって一通りの要素が網羅されていて、Spring Boot の取っ掛かりにはとてもコストパフォーマンスの良い&lt;a href=&#34;https://blog.yusuiked.dev/posts/2014/12/27/finished-reading-first-spring-boot-hajiboot/#f-8ccecad8&#34; title=&#34;時間的な意味で&#34;&gt;*1&lt;/a&gt;書籍だと思います。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>第九回 #渋谷java で LT してきた</title>
      <link>https://blog.yusuiked.dev/posts/2014/12/13/gave-lt-at-9th-shibuya-java/</link>
      <pubDate>Sat, 13 Dec 2014 21:37:27 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2014/12/13/gave-lt-at-9th-shibuya-java/</guid>
      
      <description>&lt;p&gt;前回に引き続き参加させていただいて、今回は喋ってきました。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;//www.slideshare.net/yukung/j-ooq-shibuyajava9&#34; title=&#34;jooq-to-send-to-sql-faction&#34;&gt;&lt;strong&gt;jooq-to-send-to-sql-faction&lt;/strong&gt;&lt;/a&gt; from &lt;a href=&#34;//www.slideshare.net/yukung&#34;&gt;&lt;strong&gt;Yusuke Ikeda&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;今回は割と早めに LT 登録させてもらっていたのですが、それから怒涛のように仕事が忙しくなってスライド作る時間が作れず、当日なんとか間に合わせた感じ。デモで使ったサンプルは結構前に検証も兼ねて書いたものを使いまわしてなんとか事なきを得ました。&lt;/p&gt;
&lt;p&gt;デモプロジェクトはこちら。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/yukung/jooq-sample&#34;&gt;yukung/jooq-sample · GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;次回はもっと余裕を持って行動したい（小並感）&lt;/p&gt;
&lt;h4 id=&#34;感想&#34;&gt;感想&lt;/h4&gt;
&lt;p&gt;LT 内で Java の O/R マッパーのお勧め聞いたらやっぱり Doma って返ってきました。&lt;/p&gt;
&lt;p&gt;今回はマサカリもバンバン飛んでていつもより緊張感あった気がしますｗ でも、終わった後その場でソースコードレビューしてたりして、楽しかったです。&lt;/p&gt;
&lt;p&gt;あと、@making さんからサインもらいました。Spring Boot 使い始めの時はとてもお世話になりました。ありがとうございました。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://assets.yusuiked.dev/images/posts/2014/12/20141213213931.jpg&#34; alt=&#34;20141213213931.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;-&amp;mdash;-&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>第八回 #渋谷java に行ってきた</title>
      <link>https://blog.yusuiked.dev/posts/2014/09/21/attended-8th-shibuya-java/</link>
      <pubDate>Sun, 21 Sep 2014 21:53:18 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2014/09/21/attended-8th-shibuya-java/</guid>
      
      <description>&lt;p&gt;&lt;a href=&#34;http://shibuya-java.connpass.com/event/8212/&#34;&gt;http://shibuya-java.connpass.com/event/8212/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;前回の参加が第4回だったので、大分お久しぶりです、という感じでした。相変わらずオサレな会場に加え、なんとオフィス内にビーチまで出来ていました。オサレ感がレベルアップしている…!!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;オフィス内ビーチ！ &lt;a href=&#34;https://twitter.com/hashtag/%E6%B8%8B%E8%B0%B7java?src=hash&#34;&gt;#渋谷java&lt;/a&gt; &lt;a href=&#34;http://t.co/KFxZyJkFRJ&#34;&gt;pic.twitter.com/KFxZyJkFRJ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— Yusuke Ikeda (@yukung) &lt;a href=&#34;https://twitter.com/yukung/status/513228571423166465&#34;&gt;2014, 9月 20&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;資料とtogetter&#34;&gt;資料とTogetter&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://shibuya-java.connpass.com/event/8212/presentation/&#34;&gt;http://shibuya-java.connpass.com/event/8212/presentation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://togetter.com/li/721801&#34;&gt;http://togetter.com/li/721801&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;感想&#34;&gt;感想&lt;/h3&gt;
&lt;p&gt;以下、それぞれのセッションの個人的な感想をば。思ったままに書くので読みづらいかもしれません。&lt;/p&gt;
&lt;h4 id=&#34;querydslとspring-dataでとりあえずcrud-nabedge-さん&#34;&gt;QueryDSLとSpring DataでとりあえずCRUD @nabedge さん&lt;/h4&gt;
&lt;p&gt;Qyerydsl という SQL っぽい DSL でタイプセーフにRDBアクセスするフレームワークの紹介でした。資料はなく、サンプルコードを交えたコードの解説。詳しくは @nabedge さんの GitHub を見ていただければ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Querydsl&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://querydsl.com/&#34;&gt;http://querydsl.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;サンプルコード&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/nabedge/querydsl-sample&#34;&gt;https://github.com/nabedge/querydsl-sample&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;リポジトリを見てもらえればわかりますが、中身は DDL + 初期データのSQL と、Spring Framework と連携する Java configuration のコードだけです。DBアクセスするためのコードは Querydsl が SQL を元に自動生成するため Maven で install 実行すると生成されます。&lt;a href=&#34;https://blog.yusuiked.dev/posts/2014/09/21/attended-8th-shibuya-java/#f-eca7472b&#34; title=&#34;querydsl-maven-plugin がやってくれる&#34;&gt;*1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;実際の使い方はテストコードを見れば大体わかります。基本的には、テーブルにアクセスするための自動生成されたオブジェクトと、クエリを文字列ではなく DSL としてメソッド呼び出しで表現&lt;a href=&#34;https://blog.yusuiked.dev/posts/2014/09/21/attended-8th-shibuya-java/#f-2042467a&#34; title=&#34;いわゆる流れるようなインタフェースというやつだと思うけど、最近聞かなくなった気がするｗ&#34;&gt;*2&lt;/a&gt;して、タイプセーフにクエリが発行できる、という感じのものでした。更新系のクエリはコールバックを更新用のメソッドに渡すようなスタイルなため、Java8 のラムダ式で書くとシンプルに書けます。@nabedge さんもこれを調べて初めてラムダ式を書いたと言っていましたｗ&lt;/p&gt;
&lt;p&gt;見た感じ、S2JDBC に非常に似ている印象を受けました。公式サイトを見る限り、サブクエリや検索結果オブジェクトへの射影なども表現できるようで、簡単なクエリをバシバシ投げながらコードを書く際は気持ちが良さそうだなぁと感じました。&lt;/p&gt;
&lt;p&gt;また、私がちょうど今お守りをしている Java のプロジェクトは O/R マッパーとして MyBatis を使っていますが、アノテーションに SQL を書きまくっていて、文字列ということもあるし、気軽に SQL をペタペタ貼り付けて実行、とかをやりづらく、実際に動かしたら SQL エラー、とかになって非常につらたん(´・ω・｀)、という状況だったので、IDE の補完を駆使してタイプセーフにクエリを発行できるところに魅力を感じました。ちょっと興味が湧いたので触ってみようかと思います。&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title> Seasar2再学習めも</title>
      <link>https://blog.yusuiked.dev/posts/2010/09/18/seasar2-relearning-memo/</link>
      <pubDate>Sat, 18 Sep 2010 02:31:07 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2010/09/18/seasar2-relearning-memo/</guid>
      
      <description>&lt;p&gt;久しぶりに時間が取れたので，&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4798121509/hatena-blog-22/&#34;&gt;&lt;img src=&#34;http://ecx.images-amazon.com/images/I/51zwRaNprYL._SL160_.jpg&#34; alt=&#34;Seasar 2 徹底入門 SAStruts/S2JDBC 対応&#34; title=&#34;Seasar 2 徹底入門 SAStruts/S2JDBC 対応&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.amazon.co.jp/exec/obidos/ASIN/4798121509/hatena-blog-22/&#34;&gt;Seasar 2 徹底入門 SAStruts/S2JDBC 対応&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 竹添直樹&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 翔泳社&lt;/li&gt;
&lt;li&gt;発売日: 2010/04/20&lt;/li&gt;
&lt;li&gt;メディア: 大型本&lt;/li&gt;
&lt;li&gt;購入: 10人 クリック: 270回&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://d.hatena.ne.jp/asin/4798121509/hatena-blog-22&#34;&gt;この商品を含むブログ (33件) を見る&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を読んでSeasar2を再学習したのでそのメモ。&lt;/p&gt;
&lt;h4 id=&#34;s2containerの初期化&#34;&gt;S2Containerの初期化&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;SingletonS2ContainerFactory#init()&lt;/li&gt;
&lt;li&gt;app.diconの内容でコンテナを初期化する&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;コンポーネントの取得&#34;&gt;コンポーネントの取得&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;S2Container#getComponent()で取得&lt;/li&gt;
&lt;li&gt;できるだけ型を指定して取得するほうが吉&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;diの設定&#34;&gt;DIの設定&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;自動バインディングをうまく利用することでdiconファイルの記述量を減らすことができる&lt;/li&gt;
&lt;li&gt;インタフェースを実装していないコンポーネントをDIする場合や，同じインタフェースを実装した複数のコンポーネントが登録されている場合は，diconファイルで明示的にDIの設定を記述する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ライフサイクルの選び方&#34;&gt;ライフサイクルの選び方&lt;/h4&gt;
&lt;p&gt;singleton,application,sessionなどライフサイクルが長い場合はスレッドセーフであることを十分に留意する必要がある。request,session,applicationはWebアプリケーション環境下のみで指定可能。利用する場合はweb.xmlにてS2ContainerFilterの設定が必要。&lt;/p&gt;
&lt;h4 id=&#34;初期化と破棄のタイミング&#34;&gt;初期化と破棄のタイミング&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;singletonのコンポーネントはコンテナの初期化(S2Container#init())と同時にインスタンスが生成され，初期化される。singleton以外のコンポーネントはコンポーネントのインスタンスが取得されるタイミングで初期化される。&lt;/li&gt;
&lt;li&gt;初期化時と破棄時の処理を行うためにdiconファイルでinitMethodタグとdestroyMethodタグで設定する。destroyMethodタグはsingletonのコンポーネントのみ有効。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;diできないライフサイクル&#34;&gt;DIできないライフサイクル&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;application,session,requestというライフサイクルについては，自分よりも短いライフサイクルのコンポーネントはDIできない。ただし，より長いスコープを持つコンポーネントに対して，prototypeのコンポーネントをDIすることは可能。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;スレッドセーフでないユーティリティ，ステートフルなコンポーネントなど，複数のコンポーネント間で共有したくないものをDIするケース&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;outerコンポーネントの使い方&#34;&gt;outerコンポーネントの使い方&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;S2Container外でインスタンスを生成して，S2Container#injectDependency()を呼び出すことでDIを行う&lt;/li&gt;
&lt;li&gt;Seasar2以外のフレームワークや，既存のアプリケーションの一部にSeasar2を組み込んで使うような場合に使う&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;インジェクションの種類&#34;&gt;インジェクションの種類&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;コンストラクタインジェクション&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;componentタグの配下にargタグを用いてコンストラクタの引数を指定する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;セッターインジェクション／フィールドインジェクション&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;componentタグの配下にpropertyタグを記述する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;メソッドインジェクション&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;componentタグの配下にinitMethodタグを用いて呼び出すメソッドを指定する&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;自動バインディング&#34;&gt;自動バインディング&lt;/h4&gt;
&lt;p&gt;autoBinding属性 内容 auto コンストラクタとプロパティに対して自動バインディングを行う。autoBinding属性を省略した場合はauto semiauto アノテーションなどで明示的に指定したプロパティに対して自動バインディングを行う constructor コンストラクタに対して自動バインディングを行う property プロパティに対して自動バインディングを行う none 自動バインディングを行わない&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title> 今さらながらStruts&#43;Tomcatの環境周りまとめ</title>
      <link>https://blog.yusuiked.dev/posts/2010/02/13/struts-tomcat-environment-summary/</link>
      <pubDate>Sat, 13 Feb 2010 20:50:03 +0900</pubDate>
      <author>yusuiked@gmail.com (yusuiked)</author>
      <guid>https://blog.yusuiked.dev/posts/2010/02/13/struts-tomcat-environment-summary/</guid>
      
      <description>&lt;p&gt;研修の講師をやることになり、サンプルアプリを作ることになったので、Struts+Tomcatでアプリを作ろうとしたら、開発環境構築で大分躓いてしまいました。久しぶりでほとんど覚えてなかったのでメモっておきます。&lt;/p&gt;
&lt;p&gt;使用したStrutsのバージョンは1.2.9、Tomcatのバージョンは5.5です。&lt;a href=&#34;https://blog.yusuiked.dev/posts/2010/02/13/struts-tomcat-environment-summary/#f1&#34; title=&#34;大分レガシーですが、これがSIerクオリティ&#34;&gt;*1&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;tomcatと各javaee仕様のバージョンの対応&#34;&gt;Tomcatと各JavaEE仕様のバージョンの対応&lt;/h4&gt;
&lt;p&gt;JavaEE Servlet JSP EJB JSF 備考 Tomcat4.x 1.3 2.3 1.2 2.0 Tomcat5.x 1.4 2.4 2.0 2.1 Tomcat6.x 5.0 2.5 2.1 3.0 1.2 JAX-WS2.0、JAXB2.0、JPA1.0、JSFとJSTLの共存が可能 Tomcat7.x 6.0 3.0 2.2/EL2.2 3.1 2.0 JAX-RS、CDIなどが追加、JAX-WS2.2、JAXB2.2、JPA2.0&lt;/p&gt;
&lt;h4 id=&#34;jstlel式とtomcatとの関係&#34;&gt;JSTL/EL式とTomcatとの関係&lt;/h4&gt;
&lt;p&gt;JSTL EL式 備考 Tomcat4.x 1.0 △ ※EL式使うときはJSTL1.0が必須 Tomcat5.X 1.1 ○ ※JSTLなくてもEL式は使用可能（JSP2.0の標準仕様、Tomcatがcommons-el.jarを含んでいる） Tomcat6.x 1.1 ○ 1.2も使おうと思えば使える Tomcat7.x 1.2 ○ JSTL 1.2 には JSP 2.1 コンテナーが必要なこと、またJSTL 1.2 以降では JSTL が Java EE の一部を構成することに注意&lt;a href=&#34;https://blog.yusuiked.dev/posts/2010/02/13/struts-tomcat-environment-summary/#f2&#34; title=&#34;http://www.ibm.com/developerworks/jp/java/library/j-jstlsql/&#34;&gt;*2&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSTL1.2 のライブラリは公式のMavenリポジトリにはない？？（未確認）java.net の GrassFish のリポジトリから取得するよう&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;バージョン対応表など詳しくは&#34;&gt;バージョン対応表など詳しくは&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;JavaEE6&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
