JJUG CCC 2019 Springに行ってきました

本日開催されたJJUG CCC 2019 Springに参加しました

JJUG CCCへの参加は2回目で前回は去年のspringに参加しました。 今回は都合で午後からの参加になってしまいましたが、聴講したセッションについて感想など整理できればと思います。

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

成瀬さん(@nrslib) speakerdeck.com

成瀬さんのお話を直接お聞きするのは2回目で、1回目がボトムアップドメイン駆動開発の勉強会でした。

こちらの勉強会がとてもわかりやすく噛み砕いて伝えていただいた印象が強かったのですが、今回もわかりやすく理解も深まりました。

クリーンアーキテクチャのワークショップ、非常に興味あります。

私は普段の開発でオニオンアーキテクチャを意識していて、クリーンアーキテクチャの方は思想的なところは少し抑えていたのですが細かい要素が何を表しているのかは余り把握出来ていないというレベル感でした。

今回の発表の中でadapterやport, controllerやpresenterをテレビゲーム機に例えていて、イメージがしやすくそれぞれが何を指しているか掴めました。

コード例も見やすく、充実していて他の方に伝播させるときなどにも是非参照させていただきたいです。

お話の中でもありましたが、クリーンアーキテクチャの導入に際しては用意するクラスが多いので自動化ツール必須だなという印象をうけたのと、オニオンアーキテクチャはクリーンアーキテクチャの内側に相当するという説明の部分でどの層がどの層に該当するのかという辺りが気になりました。

オニオンアーキテクチャ クリーンアーキテクチャ
アプリケーション層 ユースケース
インフラストラクチャ層 インターフェースアダプタ層

私の理解では表のような対応関係を考えていたので、互換ではなく内側ということは私の理解が異なっているのでしょうか。 この辺を調べて理解深めたいです。

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

ブロッコリーさん(@nihonbuson) speakerdeck.com

お話の仕方自体が上手な方で、今まで体験したことのないリアルタイムなアンケートやペアワークなどタイプの催しも開催されていて新鮮でした。

内容も学びになる点が多く得るものが多かったです。

私が普段書くテストは期待通りの振る舞いをすること、リファクタをかけた時に元の動作を担保することという目的が大きいです。

書いたテストも私の理解する仕様的にこうあるべきという主観で記述していたので想定していないバグを作り込んでいるではという不安がいつも付きまとっています。

今回の発表で

  • コードを書き始める前に始めるテスト活動もある
  • テストにも設計がある
  • コードレビューに勉強会もある
  • 開発者が行うのはChecking
  • QAチームなどが行うのはTesting

など今まで知らなかった世界が結構あるなという学びがありました。 コードレビューも苦手なので、興味があるので勉強会に参加してみたいです。

LINEのBot Platformの裏側

長谷部さん(@be_hase1014) speakerdeck.com

LINE チャットアプリのバックに興味があったので聴講しました。

トラフィックが大量で大規模なLINEさんならではのアーキテクチャフレームワークの話が聞けました。

社内の有志とAkkaの勉強がてらチャットツールを作ろうと動き始めていたところだったので、タイムリーでした。

SpringのWebFluxやCloud Sleuthを利用しているという話があり特に後者は普段の業務でも有用そうなので押さえていきたいです。

ストラングラーパターンによるマイクロサービスマイグレーションの勘所

川上さん(@kawakamitor0312) speakerdeck.com

先週の現場DDDでストラングラーパターンという用語を聞き、気になったので聴講しました。

レガシーシステムからマイクロサービスに移行していくに当たってのプロセスで、少しずつ切り出していく流れを話されていて参考になりました。

DB分割の仕方のところで

  • 新規機能でまずAPI経由でDBにアクセスする
  • 既存機能でDBを直接参照しているものAPIに切り替える
  • 全部API経由に切り替えたところでDBに着手する

というアプローチを取られていました。

順番についても全部を分割するのではなく、効果的だと判断できる部分から取り組むということでした。

少しずつ切り出しているのでレガシーシステムと並行稼動していてリクエストの振り分けの話もされていて実務でレガシーシステムの改修をするという場合に参考になりそうな情報が盛り沢山でした。

マイクロサービス 4つの分割のアプローチ

増田さん(@masuda220)

www.slideshare.net

先週の現場DDDに引き続き増田さんの話を聴講しました。

増田さんもモノリスからマイクロサービスに部分的に切り出していくアプローチでお話されていて、これまで聞いてきた話で概ねそのパターンなのでレガシーからの移行は少しずつが正解なのかなという印象でした。

マイクロサービスの分割の限界は経験値による → 経験を積んでいくとより細かく出来るかもしれないが最初から細分化は難しい という話が先週のDDDの話の最初から良いモデルを作るのが難しいという話と重なってくるなと感じました。

ビジネスファンクションでの分割の例が、私の業務で分割したパターンそのままで、自分たち(人間側が)がサービス単位まで分解されていなく複数面倒みることになったりや、修正取り消しうまく回らなくなるという課題があるという話が実際起きてしまっているのでかなり刺さりました。

コーディネータパターンも複数のサービスにまたがったトランザクションを考えるときにそうするしかないよなと思いつつも、メッセージキューなどが絡んでくると訂正処理もまたなかなか難しいなという実体験とリンクさせて聞けました。

全体的にかなり背景にDDDというものを意識されているように感じて、非常に楽しかったです。

BPStudy#141〜DDD(Domain Driven Design)実践の現場にも参加させていただこうと考えているので、増田さん、高崎さんのDDDのお話が聞けるのを楽しみにしています。

最後に

普段業務でJavaを使用しているのでコード例などもすんなり入ってくるという点と、CCCということで多様な分野のお話が1つの会場で聞けてお得だなという印象が強かったです。

環境面でも広い会場で運営の方もたくさんいらしゃって、Wi-Fiも提供されていたりハッシュタグも整理されていたりとかなり快適でした。

良い機会を作っていただいて、関係者の皆様に心よりお礼申し上げます。

次は是非懇親会にも参加したいです!