この国では犬が

本と芝居とソフトウェア

第六回 #渋谷java に行ってきた

第六回 #渋谷java に行ってきました。

いってきた

Java と聞いて、いってきた。

のですが、遅刻して大変すみませんでした。
10分ばかり遅れて着いたらまだ自己紹介タイムだったのでちょっと安心した反面、瞬時に状況がつかめずちょっと焦りました。

LT イベントということで割とゆるい感じを想像していたのですが、思いのほか渋いセッション・LT が多くてたいへん熱かったので、特に熱かったものについていくつか書きます。

jfluteのLOHAS(ログはsuごい)生活

@jflute さんのセッション。

DBFlute という O/R マッパー・DB 管理支援ツールを開発されている方で、セッションの内容も、主に DBFlute(というか、SAFlute?)のログのよさについて。

「見たくなるようなログ」というテーマで、

  • Web ページでの一回のクリックごとに、出力されるログの島ができるようにする(ログのかたまりとかたまりの間に大きめの空白を開ける)
  • Action、JSP 等にそれぞれ #action、#jsp のようなハッシュタグをつけて、簡単に find できるようにする
  • SQL 自体に SQL コメントとして Action クラス名を付与する

といった工夫が紹介されていました。

個人的には Web アプリケーションのログ見たことまだほとんどないので、Action がーとか JSP がーとか具体的なところはイマイチ実感わかないのですが、前職で制御系ソフトの無節操なログにそれなりに悩まされた経験からも、「見たくなるログ」、だいじよね……と頷くことしきりでした。
開発するとき、ログの出し方に一定のルールを設ける、とかやっても(それすらやらない場合も多いと思いますが)限界はあるので、フレームワークがそのへんやってくれるとたいへんありがたいですね。

あと、@jflute さんは JJUG のイベントで IDE 対談やったときに Eclipse 担当された方とのことで、Eclipse の操作が……速い!!
序盤ライブコーディングされたのですが、「手のスピードに Eclipse がついてこれない」状態になっていました。コードスニペットが手に馴染んでる感じが大きいのかな……。

今回のセッションの内容は割と下記ページにまとめられているので、興味のわいた方はぜひ。

ちなみにスライドは Eclipse の人らしく Eclipse で作られていたため、公開されていないようです。

そんなトランザクションマネージャで大丈夫か?

最近では GitBucket が話題の @takezoen さんのセッション。

JTA の 2 フェーズコミットについてのたいへんわかりやすい解説でした。

超ざっくりまとめると、

  • 2 フェーズコミットは prepare が全部 OK だったら commit する、という方法で実現しているよ
  • JTA が途中で落ちたら DB にトランザクションが残ったりするけど、リカバリマネージャがトランザクションログから回復してくれるよ
  • でもそのログも壊れたら手動でがんばるしかないよ
  • Seasar2トランザクションマネージャはログを書いてないからリカバリ機能もないよ(!)
  • Spring FrameworkJTA に対応したトランザクションマネージャの実装を持っていないよ
  • 単なる 2 フェーズコミットでもこんなに危険がいっぱいなのに分散トランザクションとかヤバイよね、やめるよう説得するか逃げましょう

的な流れでした。

スライド見てもそこそこわかる感じなので、ご興味のある方はぜひ。

第六回 #渋谷java で発表してきました - 新・たけぞう瀕死の日記 (id:takezoe)

OutOfMemoryErrorと戦う

@sugarlife さんのセッション。

OOME が発生した場合の心構えについて。これが個人的に白眉というか、クリーンヒットでした。

Java のメモリ構成として、OS 管理の領域と JVM 管理の領域に分けられ、さらに Permanent 領域と Java heap 領域に分けられ……と言った感じで、まずは「どこのメモリが不足しているのか」を把握することが大事との由。
それから、それぞれの OOME をどう読むか、どう対処すべきかということをわかりやすい図解と一緒に解説してくださいました。

ひとくちに OOME といっても 10 種類以上があるという事実が、地味に衝撃でした。いま業務でサポートセンターの下の方をやってることもあって、4 種類くらいは見たことあったけど……。

惜しむらくは時間の都合もあって少し駆け足気味だった気がすることですが、資料が非常に充実しているので今後も活用させていただくことになりそうです。

業務の関係上 JVM 周りのこと早めに色々勉強したいのですが、なかなか入門書みたいなのも見つからなくてどこから手をつけてよいかわからないところもあり、こういうのたいへん助かります。ありがとうございました。

Java 8 の JVM 監視を考える

@chonaso さんの LT。

まさかの二連続 JVM で個人的に熱すぎる展開でした。

Java 8 時代の JVM 監視をどうするか、ということについて。
jstat や jcmd 等のコマンドを実際に試してみて、Java 7 から Java 8 への変化等について紹介してくださいました。

ブログ記事はこちら。

LT ということで前半の Java 8 の JVM についての話はかなり飛ばし気味でしたが、この辺は先日の Java Day Tokyo 2014 での David Buck さんのセッションがかなり丁寧でわかりやすかったので、ついでに紹介しておきます。Java 8 の JVM についてのオススメ資料です。

Javaを書き始めて1年半が経った自分が思うこと

#渋谷java 主催者の @seri_k さんの LT。

型安全最高ですよね。僕もそう思います。

あと、Eclipse があると Java はたのしい。

まあ関数がオブジェクトじゃないとか(でもラムダ式の導入で改善されそうな気もします!)、ジェネリクスがイマイチいけてないとか、const がないとか、イラッとすることがないとは決して言わないけれど、そういうのは多かれ少なかれどの言語にもどこかにあって、Java がやたら叩かれがちなの有名税というか、使われてるからって部分もあるだろうなと思います。

Java はたのしいよ!!

ジェネリクスおさらい

@ninneko さんの LT。

彼は目下唯一 Twitter でフォロー関係にある、というか大学時代からの友人、というかなんならそれよりもうちょい前からのちょっとした知り合いだったので帰り際声かけたらびっくりされました。

内容はタイトル通り、Javaジェネリクスについての簡潔な紹介。
ジェネリクスただでさえややこしいのにスライドの色分けがミスっていて混乱を助長した感は否めなかった……が、Java はじめたばっかりで社外向けのイベントで発表するのはさすがだなと思います。

僕も次は何かやろうかな……とも思いつつ、思いのほか登壇者陣がガチなので若干尻込みしてます。

Android + RxJava

@yo_waka さんによる、Reactive Programming を可能にする RxJava というライブラリの紹介。

Reactive ……というキーワードはちょいちょい聞いても、どういうことなのかイマイチわかってないのですよね。
Play Framework のサイトでも右上にドーン!出てくるし(あれスマホで見るときちょっと邪魔)、どっかでキャッチアップしたいタームではあります。

それはそうと、RxJava を使うと、色んなクラスが Observable なので、コンポーネント化しやすい、とかいったメリットがある……そうです。
メモも取りそこねていて理解できてない感丸出しでたいへん申し訳ありません。

あ、@yo_waka さんがお勤めの freee 株式会社はタダ飯が食えるらしいです。タダ飯は最高ですね。(これはしっかりメモってた)

OpenShift のある生活

@emaggame さんの LT。

RedHat が提供する OpenShift という PaaS の紹介。
個人的には「Enable Jenkins」ボタンがついてるの熱いなと思いました。他にも「Add MariaDB」ボタンあったり、楽ちんプラットフォーム感あってよいです。

まとめ

特に熱かったものについて、と言いながらひと通り書いてしまいました。
……どれも熱かったということです!!

実際、#渋谷java の勝手なイメージとしてなんとなく若者のワイワイイベントって印象があったのですが、思いのほか硬派で思った以上に実りある感じになりました。*1

あと、この記事

の通り、会場オシャレかったです。

最後に当日の様子はこちら。

というわけで、主催の @seri_k さんおよび会場を提供してくださったビズリーチさん、ならびに登壇者の皆さまたいへんありがとうございました。
次……かその次、あたり(弱気)はなんかネタ見つけて話したいと思ってます。

*1:もちろんワイワイがいけないというわけではないっていうかむしろ若者らしくワイワイしたいのですが、ふだんAndroidとか触ってないし個人的にはこういうのの方がより普段やってることに近くて興味深いなといった意味です