JJUG CCC 2019 Fall 初参加レポート

2019年に入ってから仕事でJavaを使い始め、早数ヶ月。
初めてJavaのカンファレンスに参加した備忘録を書こうと思います。

JJUG CCCとは

日本 Java ユーザグループ (JJUG)が主催しているCross Community Conferenceのことで、年に2回開催されている。
ちなみに、イベントに参加登録した時点でJJUGの会員になるそう。


JJUG CCC 2019 Fall

時間: 10:00 - 18:30 (セッション時間)
場所: ベルサール新宿グランド コンファレンスセンター 5F

感想
綺麗なビルで、聴講者側にも机がある場所が多く、快適に過ごせました。
事前申し込みで託児室が利用可能とのことで、素敵な取り組みを行なっている団体さんだなと好印象でした。


参加セッション

・Javaで学ぶオブジェクト指向プログラミングの基礎知識 🔰
・【ランチセッション】JJUG初心者のためのJavaコミュニティのススメ
・ 開け!ドメイン駆動設計の扉 🔰
・長く続くサービスがモダンであり続けるには
・こわくないソースコードリーディング生活 🔰
※ 🔰マークがついているセッションは、Javaを勉強し始めて数年以内の初級者が対象とのこと


==========
 ここから先ではセッション中にメモした内容を元に学んだことを書きます。個人的な備忘録的意味合いで記します。間違いがあるかもしれませんがご了承ください。
==========


Javaで学ぶオブジェクト指向プログラミングの基礎知識 🔰

増田 亨 さん

型志向が大前提でオブジェクト指向がある。


・値の範囲の制限
・値の操作の制限

カプセル化
型の定義をクラスに収納することがカプセル化
カプセル化することで、範囲と操作を制限できる。

例えば、Javaの標準ライブラリであるLocalDateはカプセル化されている。LocalDateを使わなければ、int year, short month, short day等を利用することになる。
→カプセル化した方を使ったほうが、楽で安全にプログラミングができる。

オブジェクト指向プログラミングには2つのモードがある
モード1: 定義済みの型だけを使う
モード2: 独自の型を定義する
★ モード2でやることによって初めてオブジェクト指向の良さが出てくる!

感想
オブジェクト指向やカプセル化という言葉や意味はなんとなく理解していたつもりでしたが、わかりやすく新しい視点を教えてもらえたのでさらに理解が深まったように思えました。増田さんの著書: 現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法もぜひ読んでみたいと思います。


【ランチセッション】JJUG初心者のためのJavaコミュニティのススメ

杉山 貴章 さん、Shigeru Tatsuta さん

感想
JJUG初参加の人には無料でお弁当がもらえました。
Javaは多くのコミュニティによって成長してきた等のお話をされていましたが、お弁当に夢中でメモをしていませんでした。。

恐れずに話しかけて、仲間を増やそうとのことで、次回は懇親会に参加してみようかな...などと思ったりしました。Don't be shy.


開け!ドメイン駆動設計の扉 🔰

成瀬 允宣 さん

非ドメイン駆動設計的開発に潜む問題点として、コードを見ても仕様がわかりにくいことがある。
ドメイン駆動設計のゴールは、ソフトウェアの利用者とコードが地続きになるこで、最初にコストを払うことで、保守性を担保していくことができる。

[用語集]
●ドメイン
ソフトウェアの利用者を取り巻く領域
●モデル 模型=モデル
ソフトウェアにとって役立つ知識を知識を抽象化したものがモデル
※乗り物のトラックを考えるとき、用途によって異なるものとなる。
●ドメインオブジェクト
モデルをコードで表現したもの
●ドメインエキスパート
ドメインの業務をよく知っている人
●ユビキタス言語
開発者の技術語、エキスパートの固有語があるが、コミュニケーションを通して共通語(ユビキタス言語)を作っていく。
エキスパートでも曖昧なことはある。開発者が主体となって協力してユビキタス言語を構築しつつ、ドメインモデルで必要なものを取捨選択していくべき。

ドメインについて初めから全てを把握することは難しいが、会話の力で刹那的なニュアンスをキャッチしよう。
もしかしたら途中で大規模なリファクタリングが必要になることがあるかもしれないが、必要なことだと思って恐れないで欲しい。

当たり前のことを当たり前に実践するためのプラクティスがドメイン駆動設計。

感想
ドメイン駆動設計で有名な分厚いエヴァンス本で挫折する人は多い。(私も)
そこで、読むための準備運動としてこのセッションを位置付けていました。
値オブジェクト、エンティティ、サービス等についてもお話しされていましたが、話を聞くので精一杯だったので割愛します。
ご自身が出演されている面白いCMをセッション中に流していたことが最も印象的で、その後のPHPカンファレンスで成瀬さんを発見し、なんだかちょっとだけ嬉しくなりました。
当日のスライドは諸事情により公開しないとのことですが、ご本人の記事を見つけたのであとで読むメモ。https://nrslib.com/bottomup-ddd/


長く続くサービスがモダンであり続けるには

角田 拓己 さん

モダンとは?
現代的である様→今主流の技術を使っている状態

モダンであるメリットは、自分たちが楽をするため。
例えば、モダンなものはドキュメントが多かったり、実例が多かったりする。メンテナンスされているのも良い点。

あと、エンジニアの欲求として新しい技術を使いたいし、取り入れたい!
注意: モダンであり続けることは手段なので目的ではない

しかし、モダンであり続けるためには、日々の努力が必要。

今回紹介していた例が、モダンであるために定期的に様々なものをアップデートする仕組み。

●自動テストの導入
Spring Boot Starter Testを使い、クラス、メソッドなどは日本語で記載することで、網羅性とレビューのしやすさを担保。
サンプルコード

自動テストを導入したことで、テスト実施校数の削減はもちろんのこと、様々な用途に使えた。リグレッションテストを行うときや、*JavaからKotlinにするときにも便利。依存ライブラリのupdate時にも使える。
*ちなみにIntelliJ使えばConvert to Kotlinを使えるとのこと

●アップデート情報の自動通知の仕組みを確立
プロダクトの依存のバージョンupdate情報を教えてくれるgradle-versions-pluginと、slackに通知してくれるgradle-slack-pluginを使うことで、自分以外のチームのメンバーもupdateを気にかけてくれるようになった!
JIRAのREST APIを利用してGradleタスクでチケットまで自動作成をしている。

感想
新卒2年目にもかかわらず、大きな会場で発表していてすごいと思いました。2年弱の間主体的に動き、考えてきたからこそ発表できる内容があり、そして発表に至ることができるのかな、などと思いました。私も頑張りたい。


こわくないソースコードリーディング生活 🔰

進藤 遼 さん

いいコードを書くにはいいコードを読むことが近道!

●STEP1 ソースコードを開こう
ex) Apache Commons
IDEでジャンプして読むのは手軽でよし。
git cloneをするとREADMEや、サンプルテストコードが読めることがあるのでこちらもオススメ。

ソースコードリーディングは知識・論理・読解の複合”スキル”のため、トレーニングでできるようになる。適切な負荷をかけていく必要がある。

●STEP2 ライブラリのコードを読もう
ex) Commons DBUtils
1. 目的、目標を設定する
2. 深く掘り下げない
3. クラスの使い方を把握する
4. 名前に注意する
※ コードは読み飛ばしていい

●STEP3 構造を読み解こう
ex) javalin
1. 型を意識する
2. メモする
3. ドキュメント、Javadocをよく読む

●おまけ
sourcetrail: クラスの依存関係、呼び出し階層などをグラフィカルに表示できる!

感想
STEP1はふむふむそうだよね、などと思っていましたが、STEP2・STEP3ではソースコードリーディング、怖いなああ...となりました。初級者レベルも私にはまだ早かったようです。ただ、このセッションを聞いてから、積極的にCtrl+左クリックするようになった気がします。よかった。


おわりに

●今回は出社扱いではなく個人的に参加してみたカンファレンスだったので、途中参加、途中退出となりましたが、大いに刺激になったので、今後も気軽にカンファレンスに参加していきたいなと思いました。
●参加してから2週間以上空いてのレポートになったので、今後はスピーディーにできたらなと思います。
●懇親会では寿司が回るとの噂を聞いたので、次回は懇親会参加もありかな、と少し思っています
●JJUGは毎月ナイトセミナーを開催しているとのことで、興味がある回は参加してみようと思います。
●参加アンケート回答し忘れたので次回はちゃんと書きたい。


Memo
noteで狭い幅の改行をするときは
shift + enter


この記事が気に入ったらサポートをしてみませんか?