JJUG CCC 2019 Springに参加してきました
前回に続いて参加。
参加したセッションについて、印象に残った点や自分の思ったことを書き留めました。
基調講演:現代に求められるJavaコミュニティとは
全体的に強く共感した、谷本さんの基調講演。 特に印象に残った2点について書きます。
初級者〜中級者と、中級者〜上級者の壁
初級者〜中級者には技術の選択肢を減らす、中級者〜上級者には技術の選択肢を増やす、というお話。
確かに経験の少ない人は技術がフィットするかどうかを自身で見極めることが難しいため、汎用性が高い技術や、定石のようなものを学ぶのが良さそうです。
一方、中級者〜上級者は自身で技術を見極めれば良いので、癖の強い技術でも必要な場面で使えるようにしておくのが重要になります。
これまで感覚的には理解していましたが、うまく言語化されていて素晴らしいと感じました。
また初級者向けのセッションはそれだけで貴重なので、ぜひ登壇してほしいとのこと。
これは登壇者は現在の関心事を話すことが多いが、登壇できる人はそもそもレベルが高いため、セッションのレベルが高くなってしまうというお話でした。
とはいえ、自分が登壇できるかと言われると相当ハードルが高いと感じてしまう事もあり、うまく背中を押してあげるような仕組みは必要なんだろうなーと思いました。
多様な価値観を尊重すること
ITエンジニアは世の中からズレていることを理解すべきであるというお話。
- ITエンジニアの誤謬:自分にできることは誰でもできると思ってしまいがち。だが、実際には誰もがスマホやIT機器を使いこなせるわけではない。
- ITエンジニアは未来に生きている:先進的な考え方かもしれないが、それは世間一般から見ればむしろズレている
また道徳的な考え方や働き方のルールなどにより、逆に生きづらさを感じてしまう人もいる。このような社会において、そういった人も生きやすくなるようなコミュニティにしたいという話も印象的でした。
自身としても、日本の多様性の低さと同質性社会は、マジョリティから外れた人には生きづらい雰囲気を作っていると思います。
もっと多様な考え方を受け入れ、多様性の高い社会になってほしいと思っていますし、多様性の高さはイノベーションを生み出していく上で必要不可欠だと思います。
そのため、このコミュニティの目指す方向性は全面的に応援したいと強く感じました。
大企業運営の法人向けサービスにおけるOpenJDK移行事例
OpenJDK移行事例の話。
マイナーバージョンアップで互換性のない修正によるバグを踏んだり、
OpenJDKにしたらPostgreSQLやOSをアップグレードすることになったり、
AdoptOpenJDKやRedhatOpenJDKなどでの差異による不具合など、
恐ろしくリアルな話を聞くことができました。
ライブラリやDB、OSなどの依存関係は見落とされがちな気がしますが、事前に検証しておかないとシャレにならなくなりそうだ…と強く認識しました。
開発リーダー1年目。メンバーのスキルアップのためにやっていること
やっていることとしては以下の3つとのこと。
- 輪読会
- ランチ
- 夕会、雑談
輪読会の効果は「開発に対する認識を合わせたり、問題意識を高めるきっかけ作りである」と感じました。
なお輪読会の資料作成は業務時間を使っているようでしたが、本を読む時間は業務時間内なのか分かりませんでした。
この辺りは職場の雰囲気や方針、メンバーに左右されるところもありそうですね。
夕会や雑談は、「定期的に集まって話すきっかけ作り」が重要なんだろうなーと感じました。
こうした場を用意することでちょっとした相談事も表に出てきやすくなるので、効果は高いと思います。
またランチや雑談は一見不要そうに見えながらも重要だと思っていて、こうしたきっかけからその人の考え方や関心事がわかるようになったりします。
するとどういったタスクが向いているかとか、どういったお願いの仕方をすると良さそうかとか、だんだんと見えてくるものがあります。
ランチは断れる雰囲気も作れているようで、素晴らしいと感じました。
ドメイン駆動設計
あまり綺麗にまとめられなかったので、とりあえず気になったフレーズだけ箇条書き。
- 業務知識(なぜ?)がコードから抜け落ちていく
- 一気に作って終わりなものではない。どんどん更新し続けるもの
- ヘキサゴナルアーキテクチャを採用
- メリット
- 開発速度向上、不具合の抑制、お互いの言葉や考え方が理解できる
- マージリクエストで、なぜそのような作業をしたのかがわかるようになった
- 変更要求に対して、まず業務モデルの変化への影響を考えるようになるなどの効果
DDDは課題であると感じながらもまだ実践できていませんが、改めて学ぶ必要性を感じました。
また、ヘキサゴナルアーキテクチャのドキュメントは思った以上に色々と書かれていたので、こちらも後で読まねばと思いました。
WebAuthn
生体情報をサーバ上に保管することなく、パスワードなしで認証できる技術のお話でした。
これまで全然ノーマークだったので詳細はあまりついていけませんでしたが、今後普及していくのかどうか注視していきたいと思います。
SI現場のテスト自動化挑戦〜フルコンテナ構成のCI/CD環境〜
静的コード解析にはCheckstyleやSpotBugsなどを使っているそうです。
静的コード解析は重要だと思いながらもこれまで先送りにしてしまったので、これを参考にして導入したいなーと思います。
Controller, Service, RepositoryのUnitTestについて、C1は100%を目指しているそうです。
個人的にはかなり高い水準だと感じましたが、この辺りは企業や案件によって色々という事でしょうか。
質疑応答にて、開発者は9名、CI/CDは専任2名とのこと。
現在自分の関わっている案件ではCI/CDの整備にあまり手がかけられない状況になっていますが、明らかにリソース不足なんだなと実感。
この事例が絶対というわけではありませんが、CI/CDに専任させる場合は、全体の20%程度を一つの目安にしようと思いました。
その他、ツールをOSSで揃えている点に関してはクラウドへのポータビリティが高くて良いと感じました。
マイクロサービス 4つの分割アプローチ
最後の方は(やはり?)時間が足りませんでしたが、全体的に興味深く聞いていました。
増田さんとしてもまだマイクロサービスについては明確な答えは出ていないようですが、以下の辺りが印象に残りました。
- 増田さんは開発に関してはレイトマジョリティのスタンス。枯れた技術しか使わない
- モノリスから、部分的にマイクロサービスへの分割を検討する
- メッセージングはクラウドのおかげでかなり使いやすくなった。以前は運用なども含めると結構大変だった
- サブドメインはどんどん変わって行くから、その単位をマイクロサービスにするのは危険
また、ネットワークに関する8つの勘違いについては、ついついやってしまいそうなので今後の戒めにしたいと思いました。 インフラエンジニアだと意識している人が多そうですが、アプリケーション開発のエンジニアから見るとついつい目を背けてしまうというか、うっかりこのような前提を置いてしまうことがあるように感じました。
これまで自身の理解としては「マイクロサービスは組織論」という考え方に影響を受けてきましたが、今回の発表を見てそれだけに留まらない部分を感じました。
今後増田さんの資料を読み返し、マイクロサービスについて更に理解を深めていきたいと思います。
所感
その場では色々と感銘を受け、大きな刺激となったのですが、後でまとめてみると理解度が相当バラバラだなーと感じました。
特に中級上級向けのセッションや普段関わりの薄い技術は、話に付いていけたとしても自分の言葉でうまくまとめられなかったりして、「言語化できないってことはまだ理解不十分なんだな」と痛感しました。
今回のメモはうまくまとめられていない気もしますが、アウトプットの練習だと思って書きました。
未来の自分がこのメモを見たときに成長を実感できるよう、頑張っていきます。