はじめに
こんにちは。サーバーサイドエンジニアの齋藤です。
「Server-Side Kotlin LT大会 vol.14」を聞きに行きましたので、そのレポートを書きます。
「Server-Side Kotlin LT大会 vol.14」についてはこちらをご覧ください。
server-side-kotlin-meetup.connpass.com
各発表について書いていきます。
会場LT (株式会社タイミー様)
今回の会場はタイミー様の提供でした。会場は広くてとてもきれいな上に、音響や配信設備もしっかりしていてすごかったです。
コロナ禍により狭いオフィスに引っ越しした会社も多い中、タイミー様は勉強会に積極的に会場提供をされているとのことです。ありがとうございます。
JavaにおけるNull非許容
日本で1人目のJava Championの櫻庭さんによる、Javaにもついにnull非許容型が導入されそう!というお話でした。(現在Draft JEP (JEP: JDK Enhance Proposal) 段階で今後変更の可能性はあるとのこと。)
Javaも今まで Optional
や @NonNull
のような対処を行なってきていましたが、成功しているとはいいがたい状況でした。この度null非許容型のプロポーサルが出たと言うことでした。
このきっかけになったのは、 Value Class
という参照を持たずに直接データを持つクラスの仕組みを作ろうとしていることだそうです。このときにデータがnullの可能性があると、ヒープ使用効率の最適化の効果が薄れるために、null非許容型が生まれようとしているそうです。
今まで問題視されつつも、他の施策の副次的な効果としてこの変更がなされようとしていると伺い、Javaって人間が作っているのだよな、というのを改めて感じました。
Value Classについては、まだ理解しきれていないのですが、こちらに詳しい説明を記載いただいていましたので、気になる方はご覧ください。
KotlinでRefinement types
ザネリさんによるKotlinでRefinement types的なことを実現するにはどうしたらよいかというお話でした。
Refinement types (篩型) とは、制約を満たさないと生成できない型のことで、Rustやscalaではこれを実現するライブラリがあるそうです。
init
や、コンストラクタをprivateにしてcompanion object
に生成メソッドを作る方法は弊社のプログラムでも採用されているのですが、改めてこの方式にすることでどのようなメリットがあるのかを確認できました。また不勉強でRefinement typesというものがあることを知らなかったので、このような考えがベースとなっていることも勉強になりました。
スポンサーLT(株式会社ヘンリー様)
クラウドネイティブの電子カルテを開発されているヘンリー様が今回スポンサーをしてくださったとのことです。この後LTをされたkohiiさんもヘンリーの方でした。
Kotlinの開発でもAIをいい感じに使いたい
kohiiさんによる、Kotlinの開発でAIを使って効率的に開発するにはどの環境・ツールがよいのかというお話でした。
ちょうどこの前の週に弊社でもRooCodeの試験運用が始まり、Kotlinの実装時もVSCodeメインで使えるようにがんばるべきか、IntelliJと行き来しながら使うのがいいのか?というのはちょうど悩んでいたところで、自分にとって非常にタイムリーな話題でした。
まず 、IntelliJでAI支援を最大化する or VSCodeでKotlinの開発できるようにするの2つの選択肢に分けてそれぞれの選択肢の中で比較をされていたので、非常に整理されていて大変わかりやすかったです。
結論、IntelliJとVSCode (AI支援あり) を切り替えて使いつつ、JetBrainsに期待するとお話されていて、やはり現時点だと切り替えて使うのが1番よさそうなのだなと、うっすら思っていたことと同じ結論でモヤモヤが晴れました。
From Scala/Clojure to Kotlin
カマイルカさんによる、Kotlinを他のJVM言語と相対化することで理解が深まるというお話でした。
序盤のザネリさんもでしたが、複数言語を扱えると各言語の良いところを擬似的に取り入れたり、比較により理解を深めたりすることができてすごいなと思いました。
detektで学ぶKotlin
最後は井上 洋樹さんによる、detektを読んだりcontributeすることにより、Kotlinの書き方を学ばれたというお話でした。
「静的解析ツールはKotlinに詳しいのでは?ならばKotlinを教われるのではないか」と思われたとのこと。弊社のプロジェクトでもdetektが入っているのですが、そのようなことを考えたことがなく目から鱗でした。
学びの経路として、「detektのルール」(ベストプラクティスを学べる)、「detektそのもの」、「issue」をあげられていました。
私もまずはルールだけでも見てみようと思いました。
おわりに
久しぶりにオフラインの勉強会に参加しましたが、発表直後に登壇者の方に質問に来ている方などもいらっしゃり、とても刺激を受けました。アンテナが足りずこの勉強会のことを社内の方に教えてもらって知ったのですが、オンライン配信もされているようだったので、今後も参加させていただきたいと思います。
askenもサーバーサイドKotlinの会社として、サーバーサイドAPIのPHP→Kotlinへのリアーキテクチャを進めています。またアプリからAPIの結合部分もKMP(Kotlin Multiplatform)化を進めています。
ご興味を持っていただける方はぜひこちらをご覧ください。