エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

JJUG CCC 2018 Spring 参加報告

JJUG CCC 2018 Spring

今回

今回は、登壇者としても参加しました。
OCJP SE 8 Gold合格までに取り組んだこと というやつ。

大勢の人前で話すのは、小学校以来かな?
やっぱり、人前で話すのは難しい。。。

なお、ツイッターの視聴者の感想は、怖くて見てない。

参加セッション

  • JavaWebサービスを作り続けるための戦略と戦術
  • Pivotal認定講師が解説!ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
  • Spring Boot と一般ライブラリの折り合いのつけかた
  • JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜
  • アンカンファレンス3
  • JDBC APIもそろそろ非同期の波に乗りたいらしい

メモ

JavaWebサービスを作り続けるための戦略と戦術

  • 開発環境とは、動くソフトウェアで進捗を測る場所
  • やったこと
    • 開発環境の構築手順書は廃止して、スクリプトで作成できるようにした。
    • サーバー郡は、仮想OSの中に仮想OS作るようにした。
    • docker使わなかったのは、当時のmacのdockerが不安定だったから
  • dockerfileを書くのは、アプリエンジニアの担当。知見は集めておいたほうがいい。
  • eclipse -> intellij に移行
    • プロジェクトが増えると、eclipseでの表示はキツイ。。。
  • maven -> gradle に移行
    • 数が増えると、カスタマイズしたいことが発生するので、柔軟なgradleへ
    • xmlよりソースを見たほうが、理解しやすかった。
  • jenkins 1 -> 2 にバージョンアップ
    • mavenよりこっちを先に実施。
    • jenkinsfileにスクリプト書いて、両方に即時対応できるようにして、移行がすぐできるようにした。

最終的な目標として、プルリクエストに1つに対して開発環境が自動生成されるようにしたいらしい。
環境による制約で、時間を無駄にすることをなくしたいとのこと。

  • 老朽化した技術からの脱却
    • インストール型のTomcatはオワコン。newするもの
    • jasperreportはオワコン
      • java8化を阻害するボトルネックになっていた
      • 現場なりの地雷がある。
    • jsessionidはオワコン
      • 開発環境を複数起動すると、jsessionidがバッティングする
      • 開発者にとっては、非常にネック
    • sticky-session-id
      • sticky-session-idを使っているとawsのLBが片方にしか振り分けなくなる。。。
      • だからやめて、spring-sessionに変えた
    • jspはオワコン
      • ゴミが溜まる。
      • webapp下の配置は、おく意味がないので、resources配下においたほうがいい
  • フロントエンジニアと仲良く
    • swagger
      • 見やすいドキュメントがすぐにできる
  • テストコード
    • プルリクエストで自動テスト実行
    • 自動テストが通らなければ、マージできないようにしたいらしい。
  • 脆弱性を無視していると、どこかのタイミングで地雷を踏む
    • ちょっとずつバージョンアップするしかない
  • ビックリライトは難しい
  • やるならリファクタリング
    • リファクタリングを支えるのは、テストコード、環境の自動構築
    • こまめなバージョンアップがセキュリティリスクを低下させる

感想

dockerは、アプリエンジニアの担当。。。
概要把握で満足していたが、きちんと内容を把握しないと。。。
3万行のソース削除のプルリクは、初めて見た。たぶん、もう2度と見ることはないだろう。

ビックリライトは、難しいというのは同意。
ビジネス的にも、その判断を下すのは難しいと思う。
リライトは、ハガレンのOPで十分である。

Pivotal認定講師が解説!ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説

  • core
    • jdk8ベース
    • JDK9/10対応
      • 対応しているが、しばらくの間は、jdk8で使うのが無難
    • ロギング
    • ビルド時のコンポーネントインデックス作成
    • 新規アノテーション @NunNull @Nullable
      • nullの可能性を示すためのもの
      • IDE上で検知できるようになる
        • 検知できるもので、代入できなくなるものではない
  • web
    • https/2対応
      • pushBuilderを引数で貰える
      • サーバーがhttp2に対応している必要がある
    • bean validation2対応
    • webMvcConfigurerAdapterの非推奨
    • イミュータブルなフォーム
      • 変更はしてはいけないので、本来はイミュータブルであるべき
      • Boot2+mavenで、デフォルト有効
      • まだバグあり。。。
    • 例外処理の便利機能
  • data
    • 破壊的変更あり。互換性なし
    • Spring data jdbc
      • IFを定義するだけで、追加・更新・削除ができる
      • 実装は、起動時に動的に生成される
  • securty
    • oauth2.0対応
    • delegatingPasswordEncoder
      • DBに保存する際、ハッシュをかけて保存する
  • test
    • junit5対応
  • Boot
    • spring5対応
    • jdk8対応
    • セキュリティ簡素化
      • java configに一本化
    • Actuator
      • /info, /health以外は公開されなくなった。
      • 公開するには、設定が必要
    • プロパティ名
      • リアクティブ対応で変わった
      • 移植用のツールが用意されている。

感想

Spring data jdbcが気になった。
そういえば、Javaやってた頃は、1リクエストで、検索か更新か削除のどれかをやる感じだから、毎回アクセス用の実装を作るのは、不便だと思っていた。
気になるのは、自動生成で意図せぬバグが入り込まないか。ソースの自動生成は、内容を分かってないと、ハマるポイントになったりするから、それだけが気になった。

SpringBootの進化が早い。。。
JDK9ベースになったら、さらに進化が加速しそうな気がする。

Spring Boot と一般ライブラリの折り合いのつけかた

  • DIはなるべく使う
    • 使えない場合は、factoryクラスを作って対応する
  • プロパティファイル
    • getter/setterは。@ConfigrationPropertiesで解決可能

途中でついていけなくなってしまったのです。。

JavaエンジニアのためのDocker入門 〜 仮想開発・テスト環境構築 〜

dockerは、アプリエンジニアの担当 ってワードが耳に残って拝聴

  • docker特徴
    • 起動が早い
    • リソースを共有しているのでリソースが節約されている
  • dockerのメリット
    • 環境を使い捨てできるので、サーバー設定関連が必要なテストがやりやすい
    • どこでもビルド環境ができるかもしれない
    • 環境を配布・構築が楽になる
    • だれか一人が苦労してくれれば、すべて楽になる

まずは、自分の開発環境から試してみる。

  • 適用について
    • 無理に利用する必要はない
    • 手短なところや、利用したら便利そうなところ
    • 使い捨て前提やる(データとか残したい場合は考える)

感想

誰か一人が苦労するのが、俺なのは嫌だな~という感覚をもってしまうのは、僕だけではないはず。
環境構築が楽なのは、なんとなく分かっているが、実際にやってみないと、真に理解しているかは怪しいかも。。。

環境を使い捨てる感覚を持つってのは、意外と難しい。
せっかく作った環境を、役立てようとする意識があるから。。。
環境が楽になれば、その感覚は消えると思う。
まずは、dockerの便利さを味わうことが大事かもしれない。

アンカンファレンス3

情報収集・欲しい記事・教育について討論。

情報収集

  • webでの情報収集が多い
  • rss使う人は、思ったより少ない

流行の抑え方

  • 勉強会で流行を抑える
  • カンファレンスの動画
    • youtubeで英語の字幕を見て、単語から流行を探る
  • Safari Books Online(オライリー
    • 本・動画が引っかかる
    • 有料サービス
    • 障害調査とかでも使える(横断検索)

思うこと

動画の情報収集が発展しそうとあったけど、個人的には無理な気がする。
なぜなら、動画は情報にアクセスするまで時間がかかると思うから。
あと、繰り返して情報を読み取るのに適していない。
わかった気になりやすいと感じている。

情報を引き出すなら、たぶん、直接あったほうが楽だと思う。

Safari Booksってのに興味を持ったけど、$399は、さすがに、キツイ。。。

あと、以外だったのは、RSSを利用している人が少ないこと。
全員RSSだと思っていた。。。
僕は、feedlyRSSを突っ込みまくって、外出先で、スマホを使ってニュースをフィルタして、pocketに一時保存する。価値ある情報であれば、さらにそこから深掘り調査って感じ。
ただ、問題があって、登録したサイトが馬鹿みたいに多いと、情報をさばけず、フィルタリング作業がパンクするという。。。
情報をサマリできないか、手探り状態。
誰か、いい方法を知っていたら教えて欲しい。

教育

大学の方が、学生に何を期待しているのかを聞いていた。

結論的には、言語問わず、汎用的な知識が必要って意見に落ちた認識。

思うこと

話を聞いていたが、業務知識を学生が覚えるべきだと聞こてた。
それは、少し酷な話のような気がする。
現場によってマチマチなので、学生としてやって欲しいことではない気がする。
むしろ、それは現場が教えるべきことだし、それができないってのは、何を考えて仕事しているの?って感じた。
学生は、専門用語でも意思疎通が取れるレベルになっているくらいでいいと思う。
後は、トレース能力とか。

個人的には、謙虚さがあれば、問題ないと思う。
結局のところ、素直に学ぶ姿勢を示せることができれば、案外、この業界の人は協力的なので、勝手に成長していくと思う。
その方が、たぶん、現場の受けもいいと思う。

懇親会

speakerだと、風船をつけるのだが、風船をつけると特別視されて、話しかけてくれる人が多いんだな~って感じました。
有料なのに、人が意外と多い。。。
人混みは、苦手なのです。。。
寿司とか、人が密集していて、なかなか取りに行けなかった。。。

人混みで思い出したが、満員電車に乗ろうとした時、中の男が「無理無理」ってDIO並に連呼してきたから、乗るのを辞めたのだけれど、後ろから若そうな女性が乗り込もうとした。
その時、中の男は何も言わないんだな。死ねばいいのに。
この恨み、まだ覚えてる。

登壇について

登壇してみての反省・感想

  • 時間を余らせててしまった。。。練習のときは20分オーバーだったんだが。。。
  • 開発者ノートが見えれていれば、もっと時間をかけてできたかも
  • 他の人のセッションを見てわかったが、最後にまとめを持ってくることで、時間調整を可能にしている?時間がなければハショるし、あれば、話を盛って話して延命処置をすればいい。
  • 試験対策資料が公開されているらしいが、知らなかった。。。オラクルのサイト見ず、ピアソン経由で試験受講は終わるので、目につかずに終わってしまう気がする。

思い通りにやれなかった。。。。
練習不足か、資料の作り方が悪いかのどちらかだろう。。。
あんまり文字は入れたくない派だけど、喋らなきゃいけない内容が覚えられないということがわかった。
やっぱり、人前に出ると、頭がホワイトアウトします。

全然時間が経たないのだな。。。
心拍数が上がっていたから、体感時間が早かったのかもしれない。

登壇して良かったこと

  • オラクルの認定試験作っている人に会えた
    • java8の次はどうするか、検討中らしい
    • 個人的な予想だと、次は、Java9かLTSのバージョン(java11)になりそうな気がする。