[*Java*] JJUG CCC 2019 Spring に参加してきた

# はじめに
[JJUG CCC 2019 Spring](http://www.java-users.jp/ccc2019spring/#/)に参加してきましたメモ。

# 参加セッション一覧
## [大企業運営の法人向けサービスにおけるOpenJDK移行事例](https://slides.com/hiroyuki_onaka/jjug-ccc-2019-spring/#/)
* JAVA_HOME切り替えるだけ…とよく言われるけど
  * OS・ミドルウェア・ネットワーク等の影響は？

* パッケージソフトウェアをOracle JDK8　→　Open JDK11に移行
 * マイナーバージョンの違いでエラーが出た！
   * 互換性なくなる変更が入っていた
   * マイナーリリースで互換性なくなる変更が入る事がある

* Oracle JDKはリリース内容を全て確認するのにサポート契約が必要

* Open JDK移行のためにPostgreSQLアップデートする羽目に

* Open JDKにはOSの対応バージョンもあるから、使うバージョンによってOSアップデート必要

* OSのアップデートやJDKディストリビューションの違いで差異が出ることがある

* 継続的にインフラをメンテナンスできている場合はOpen JDKに対応できるが、そうでない場合は苦戦する印象


## [開発リーダー1年目。メンバーのスキルアップのためにやっていること。](https://docs.google.com/presentation/d/1Xx5UPJkmy2dgzRloe8zaGGpEPWk1rhLiAMypK4TKRz8/edit)

### マネージャーやりたいですか？
* （想像）
 * プログラミングしてる暇なさそう
 * 退屈な会議
 * 自分がやったほうが早い

### ポイント
* チームメンバーのスキルアップ
* 心理的安全性の確保

* 委託も正社員も関係ない
 * 平等にスキルアップを目指す

### やってること
* 輪読会（リーダブルコード、レガシーソフトウェア改善ガイド　→　チーム外の人の参加もOK
* ランチ　→　仕事の話はしない、自由参加、メンバー外も誘う
* 夕会／雑談　→　詰まってる人のフォロー　／　雑談できる空気でやるのが大事

### やった結果
* 輪読会
 * 次の本どうしよう？というのを本をあまり読まないメンバーも読みたい本を挙げるように
 * アウトプットが必要なのでLTの練習になったり
 * リーダブルコード：チームとして認識が整った
* 心理的安全性
 * ランチを断れる空気があるのがよい
 * チームの仲良し感が羨ましいという声が
　
* 毎週LT大会開催
* 別チームへ輪読会へ提案
* 別部門と合同ハンズオンをやろうとしている

* エンジニアのスキルセットがないと判断ができないので、エンジニアスキルが無いとマネージャーはできない

## [Cloud Native時代の開発環境とアプリケーション基盤(仮)](https://speakerdeck.com/nobusue/runtime-for-cloud-native-era)

お弁当もぐもぐしてたから余りメモれていない

* Eclipse Che
 * ブラウザで開発できる
 * コンテナで動いてる

* ソースをローカルに持たせたくない
 * 仮想環境　→　とてもストレス

* 使ってみたい場合
 * OpenShilf Online・・・ただ遅い
 * Minishift・・・手元のリソースに余裕がある人にオススメ、速い
 * Docker・・・あまりメンテされてないっぽい…

* Visual Studio Code用のプラグインも作っている

## [先行開発！Javaでクリーンアーキテクチャ -- ゼロから始める新規開発](https://nrslib.com/clean-architecture-with-java/)

* ヘキサゴナルアーキテクチャ

* アプリケーションレイヤー
 * ユースケースを実現

* 詳細なコード
 * ビジネスロジックがこれに依存しないように

* コードがデータベースとかに依存する
 * とても大変

* ドメインロジックでWeb・DB・UIとか扱わない


## [テストエンジニアが教える JUnitを書き始める前に考えるべきテスト](https://speakerdeck.com/nihonbuson/jjug-ccc-2019-spring)

### 参加者
 * 開発者：192
 * テストエンジニア：9

### テストの目的
* JSTQB
* 欠陥の検出
 * 対象ソフトウェアの品質レベルが十分か　→　テストは「欠陥がある」ことしか示せない、完璧とは言えない
 * 意思決定のための情報の提示　→　テストでこういうこと確認したから使ってください／こういうバグがあるから使えない
* 欠陥の作り込みの防止
 * 実装を行う前に行えるテストがある

* 仕様誤り
 * リリース後だと200倍コストがかかる（時間だけじゃなくて信頼性とかも

* 設計だけでなく、テストのことも議論する
* テストをやる理由をちゃんと考える

### 自動化
* 自動テストすればいいんじゃない？
 * あくまでちゃんと動くよね？の確認
 * 手動で行って効果のないテストを自動化しても無駄
* 適してる部分
 * 単純な部分
 * お金に関わる部分

### テストの勉強方法
* マインドマップから始めるソフトウェアのテスト
* ソフトウェアテスト技法ドリル
* はじめての自動テスト
* JSTQBの資格本

* テストの勉強は習うより慣れたほうが良い

* 最新のテスト事情を知る
 * JaSST　がオススメ

## [1400万ユーザーのWebサービスを15年運用して考える、Javaである理由](https://speakerdeck.com/masao0127s/1400mo-yuzafalsewebsabisuwo-15nian-yun-yong-sitekao-eru-javadearuli-you)

PCの電池温存のためにメモれてない…

## [JJUG会長と一緒に考えたSpring Boot x JavaScript x IntelliJ x アジャイルというモダンな新人研修を今まさにやっている話](https://speakerdeck.com/masatoshitada/modern-new-employees-training-spring-boot-javascript-intellij-agile)

### 従来の新人研修
* 課題をこなすことがゴール
* チーム内のコミュニケーションが古い
* 技術がダサい

### 問題点
* 学習が受け身になる
* 主体的に学習する姿勢が重要

### 従来型
* エクセル
* タイムスタンプ付きフォルダ

### モダン
* Git
* Gitlab
* 最近の主役はJavaScript
 * ９割以上の新人研修では扱わないらしい(ﾟ∀ﾟ:)
* 新人研修の窓口が人事とかであまり良く知らないことも多い

### モダンな新人研修とは
* クライアントからサーバーサイドまで一通り自分で作れる
* 公式ドキュメントでの調べ方を身につける

### 選択した技術
* React
* マテリアルデザイン
* Spring Boot
* Java11　→　AdoptOpenJDK

### 開発環境
* IntelliJ
* Git
* Docker
* Gitlab
* ESLint使ったことでソースコードがきれいになった

### 結果
* チームに馴染むのが速い
* アーキテクチャの理解ができている
* 学ぶ意欲が高い


## [マイクロサービス：４つの分割アプローチの比較](https://www.slideshare.net/mobile/masuda220/ss-146325870)

* ここが抜き出した方がいいんじゃ？を検討
 * 保守的なスタイルでやってる

* 非同期メッセージングの技術のコモディティ化？
 * 今は非同期にするのがやりやすくなった

* 動いてればOK
 * 拡張や柔軟性を持たせる

* マイクロサービスにすると、モノリスだけでは考えなくていい問題も出てくる
 * 分かってないと辛い目にあうだけ

* ネットワークは安全？
 * 穴が空いているということだからセキュリティホールになる

* 顧客テーブルの項目が増えがち

## 懇親会
はじめて参加したけどめっちゃ人がいた

# おわりに
聞きたいセッションが多かったのではじめて懇親会まで残っていられた。