takeda_san’s blog

KotlinとVRを頑張っていく方向。

JJUG CCC 2019 Springにいってきました #jjug_ccc

午後から参加しました。
時間の余裕あるやろと思って、ゆっくり諸々の家事をしていたら意外にセッション開始ギリギリでした。

http://www.java-users.jp/ccc2019spring/#/

懇親会付きで申し込みしたのですが、決済が今回から交通系ICカードになって気軽になりましたね。
(PayPal普段使わないので…)
端末、スポンサー殿の広告で見たことあるやつでした。

以下、メモです。

先行開発!Javaでクリーンアーキテクチャ -- ゼロから始める新規開発

https://nrslib.com/clean-architecture-with-java/

復習用の記事もある…すごい。

APIができてからフロントエンドができるのが理想だが、理想の通りにはならない

モデリングが済んでAPI定義してからフロント側作ってほしい気持ちです。
といいいつつも機能とか使い勝手とかを検討してから裏側作ってよみたいなのはよくある話であるあるですね。

その現実に立ち向かうためのクリーンアーキテクチャ

いままでイマイチクリーンアーキテクチャがなぜ必要なのかというのが、ぼんやりだったので期待感高まる。

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

あー、そういうことか。
一番外側のインタフェースが差し替えられるように、つくれるからフロントエンドを先に作れるねってことか。

ドメインオブジェクトとは、ドメインモデルを実装したもの
ドメインを抽出するモデリングすしたのが、ドメインモデル

あんまり区別せずに使ってたので、目からウロコででした。
エリックエヴァンス本にかいてあるらしいので、やはり原典に立ち向かう機運。

DIP

クリーンアーキテクチャ本でやったやつだ!(よくわかってない)

EntityとInputData/OutputData

DTOとEntityは別ってこと?
SQLの結果を受け取ったり、逆にUIからの入力を受け取るにもEntityを作らないとなのかなと思ってた。

Usecaseの詳細を移譲する

スタブ・モックが作りやすいっていう利点があるんですね。
正直クリーンアーキテクチャ本読んでて、そこまでします?って思ってたところなんですよね。
最近、テストしやすいようにクラスを分けると自然にいい感じにクラス設計できることに気が付いてきたので、腹落ちしました。

MessageBus

え、受け取るInputによってOutputをよしなにやってくれるクラスってこと…?
中身どんな実装になってんのッ!怖い…けどすごい便利そう

Debug用のStubモジュール

MessageBusもそうなんだけど、テスト用にデータ・クラスを差し替えられるのは、ほんと便利そう。
フロントとの連携テストすごいやりやすそう。
あ、そうか。スタブだけつくってフロントの動作確認ができますよーってことなのか、すごい。
課題をエンジニアリングで解決するってこういうことなのかな…ただただカッコイイ。

テストエンジニアが教える JUnitを書き始める前に考えるべきテスト

https://speakerdeck.com/nihonbuson/jjug-ccc-2019-spring

ペアワークという先進的すぎる取り組み。

アンケートで、エンジニア:テストエンジニア=190:9(ぐらい)

9の方って、QAチームですよってことですよね。
正直、どんな仕事をするのかわかってない…

テストの目的

私はつねに機能を追加できる状態にするためだと思ってました。

JSTQB

資格の名前らしい、知らなかった。

実装前に行うテスト
仕様誤りを早期に発見する

テストって仕様誤りの発見も含まれるんですね。
まったく想像つかなかった…
テスト=テストコードという思い込みがあるからかもしれない。
しかし仕様誤りとは…?

仕様が詰まっていないところを発見するのが大事

許容するってあるけど、エラー画面を出すの?disableにして操作できないようにするの?みたいなこと。
ここを早めに発見することで将来への工数を減らすことができる。 テストって言われると仕様書をそのままテストコードにすることだと無意識におもっていたけど、
仕様のあいまいな箇所を見つけることもテストなんだな…
これが欠陥の作りこみの防止ってことなのか。

テストケース名に具体的なテストをする理由をつける

適当につけてたけど、確かにあとから変更する人に向けてなぜそのケースがあるのかというのを命名に込めるというのは大事だなぁ。

テスト設計技法

雰囲気でやっていたが、ちゃんと体系立てて設計技法がある。
結構ワークでガバガバだったので、勉強が足りないな…

QAチームはシステムテストレベルを見たい

事前にどこまで開発チームにやってほしいのか、定義するの大事ですね。
期待をちゃんと管理するってやつですね。

CheckingとTesting
Testingとは、なんとかして製品を破壊する作業

なるほど知らんかった…
QAチームが今ないので勉強になる。

書籍
マインドマップから始めるソフトウェアテスト
ソフトウェアテスト技法ドリル

Functional Spring Cookbook

https://bit.ly/ccc-fsc

普通のSpring Bootに飽きた人

もっと刺激の強いSpring Bootをハァハァ
普通のSpring Bootもアノテーションてんこ盛りで刺激強いですよ。

Functional Sytle <-> Annotation Sytle

特にJava Configって、アノテーションでゴテゴテになりがちなので、なくなるのはスッキリしてていいなぁ…

Spring WebFlux

使ったことないから、あとでやってみよ。
いままでそれほど多数のリクエストを処理するようなシステムをやったことないというのはあるんだけど、知っておきたい

Programmatic Bean Registration

すごい!アノテーションじゃなくても書けるんだ
設定がとっちらかって読みづらいことがあるので、initializeで一か所に集約できるのいいかも

YAVI(ヤバイ)
関数型でBeanValidation使うと、めんどくさい…
ということで作ったライブラリ

俺が使いやすいやつを作ったる!っていうモチベーションで実際作っちゃうのがすごい

Spring Fu

ほんと設定の書き方シンプル。
Kotlinで書くことが多いのでフォローしておきたい。

Asynchronous Database Access API (ADBA)

はえー、こんなのもあるのか…
ほんと知らないことばっかりや。

懇親会

懇親会、今回も参加しました。
お寿司は回るし、ヤッホーブルーイングのビールはたくさんあるしで豪華すぎでは…

ビールスポンサーが星野リゾート殿だったので、なんでヤッホー?と思ったのですが、創業というか代表の方が同じなんですね。
知らなかった!

こういう宿泊施設の予約システムってパッケージでありそう。って思ってたのですが、

ということでした。
確かに予約サイトって使いにくいと別のとこ見始めちゃうことがあるので大事。

あと、いただいたCode Cardですがこうなりました。
不思議ですね。

gist.github.com