白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

JJUG CCC 2016 Fallに参加してきました

f:id:Shiro-Neko:20161204001525j:plain

こんばんは。

年2回開催されているJJUG(日本Javaユーザグループ)のカンファレンスに参加してきました。
なんだかんだでもう3回目の参加です。
だいぶ慣れた気はしますが、周りの人が全てスーパープログラマーに見えるのは相変わらずです。

で、あの・・・えっと・・・
ちょっといいにくいのですが・・・

12月は冬です!!
(あ、特に不満はないです。Fallじゃないなって思っただけです。)

というわけで、見てきたセッションについてのトピックスと感想です。

A-1 「Be a great engineer!〜 フォローすべきトレンド、スルーすべきトレンドをどう見抜くのか」

・トレンドをただのトレンドとして受け入れるんじゃなくて、技術の本質を捉える必要がある

⇒たとえば、RDBを何で使うのか?ただそういうものだからといって使っていてはだめ。
 RDBでなければならない理由がないのならば、それ以外にも選択肢はたくさんある。(KVSとか全文検索とか)

・カナヅチを持つとすべてが釘に見える

⇒技術ありきで目的を見つけるんじゃなくて、目的を解決するための手段として技術は使いたいよね。
 自分のニーズに一致すれば、それが世の中のニーズになることもある。(ならないこともあるけど)

2017年のトレンドとしては、機械学習、IoT、AR、VR…etc。まぁそうですよね。
数年後には流行っていないトレンドを追うのはもったいないからスルーとかそういうのじゃなくて、
トレンドを追うこと自体が目的にならないようにしないといけないですよね。
流行らなかったとしても、あの時に勉強したことが役に立ってるなんてことは普通にあるので。

GH-2 「SIerもはじめる、わたしたちのDevOps」

・100点からの減点⇒0点からの加点になって楽しい

⇒加点方式はスピード感が大事なので、リードタイム短くしないとね。

・Docker便利だよ

⇒Dockerはもはや共通基盤化してる。
 オンプレからマネージドサービス、そしてNoOpsへ。

Dev側とOps側のそれぞれの方向から見るSIerにとってのDevOpsという感じ。
なんとなく話が独立しちゃってた感じがしたのは、単にわたしのOps側の知識がなさすぎなだけ・・・かな。

加点方式、減点方式の話はすごく共感。
実はわたしは今年の3月で前の会社を退職して、今はちょっとフリーで仕事をしているんですが、
やっぱり「こうしたらもっといい」みたいな視点で仕事したいっていうのは大きいです。
でも、一人でやってるとそれはそれで寂しくなってきて、そろそろまたチームで仕事したいかも。

F-3 「 メンバーのスキルアップ、どうしてる? -Java 100本ノックで新加入メンバーを鍛えてみた-」

・100本ノックで鍛える

⇒帰る前にプルリク⇒翌朝レビュー(1h~半日くらい)の流れでやる。
 ちゃんと相談に乗る。ちゃんと説明してもらう。ちゃんと褒める。

アンチパターンには名前を付ける

⇒共通言語にすることは大事。「ここ、○○のアンチパターンっぽくなってますね」とか言える。
 アンチパターンの名前かっこよすぎ。

最初からEclipseでコーディングしてたので、javacで適切なオプション付けてコンパイルとかできる気がしないです。
でも、APIリファレンスは見ます。

コピペでもpush(commit)したものはあなたの責任範囲でしょっていうのはよく後輩とかメンバーにいったものです。
「よくわからないけどこうなってたので」って平気で言える人がたくさんいるって恐ろしい。

AB-4 「Spring CloudでDDD的なマイクロサービスを作ってみる」

ユビキタス言語がちゃんとすると英語の会話がそのままコードになる

⇒文を読むがごとくコード化ができる。
 ユビキタス言語化されていない新しい単語がでてくると気づくようになる。

・マイクロサービスへの道

⇒まずはシンプルに作る→ドメインをちゃんとする→境界づけられたコンテキストをちゃんとする→マイクロサービス
 業務の管轄の関係で直接DB見に行けなかったから、APIとかファイルでやりとりしたら結構いい感じだった。

最近久しぶりにDDD本読んだので、ちょっと聞いてみたくなりました。
「境界づけられたコンテキスト」を自分が理解できているのかがいまだにあやしい・・・。
何をドメインに持っていくのか、どういう基準でコンテキストを境界付けるのか、
DDDにちゃんと詳しい人と一緒にお仕事したいデス。

AB-5 「ドメイン駆動設計とScala 〜既存プロジェクトへの適用〜」

ScalaとDDDは相性がよさそう

エヴァンスさん的にはrubyがおすすめらしい。
 DSL(ドメイン固有言語)でメタプログラミング的な。(だとしたらScalaとの相性は・・・?)

・EntityとかValue Objectはいいとして、Aggregateが難しい

⇒エンティティのライフサイクルを同一にする。(ルートエンティティを作る)
 でも、なんだかんだいって全部のライフサイクルが同じに見えてきて巨大な集約を作りがち。

引き続きのDDD。Scalaだからこうなってるとかはそんなになくて、単純にDDDの話という感じ。
サービスの規模が大きくなるにつれて顕著になっていく複雑性に立ち向かう手段としてのDDD、
まだ道半ばという感じらしいですが、試行錯誤してる感じがしていいですね。

E-6 「Javaによる理想のデザインパターン

・修飾子で設計を守る

⇒最初にデザパタを組み込んでルールを守らせる。

今のご時世におけるデザインパターンの在り方みたいなのを期待していたのですが、
普通にJavaデザインパターンの入門的なお話でした。
申し訳ないですが初心者向けっぽくて目新しいお話もなかったので、30分で抜けさせてもらいました。
(そのあとはGH-6に行ったのですが、途中からでよくわからなかったという・・・)


今回はここで撤収しました。
毎回のことではあるのですが、同じ時間帯に聞きたいセッションが複数あって結構悩みますよね。

このカンファレンスだけで急激に賢くなったりはしないですが、
知ってはいたけどあんまり詳しくはないことに手を出してみたくなったり、
気になるキーワードを手に入れられたりと、得るものは多いですね。

スタッフの皆様、参加者の皆様、おつかれさまでございました。
興味はあるけど参加していない皆様、次回こそはいかがでしょう。


P.S.

シールとかボールとかもらいました。

f:id:Shiro-Neko:20161204001539j:plain