メドピア開発者ブログ

集合知により医療を再発明しようと邁進しているヘルステックカンパニーのエンジニアブログです。読者に有用な情報発信ができるよう心がけたいので応援のほどよろしくお願いします。

Kotlin Fest 2022 参加レポート

どうも、Androidエンジニアのティフェン(@tahia910)です。

12月10日に「Kotlinを愛でる」をビジョンにしたテックカンファレンス「Kotlin Fest」がオンラインで開催されました。 1日2 trackで、Kotlinへの愛を感じるセッションを見ながら、Kotlinファン同士で交流や知見の共有が出来る楽しいイベントです。

弊社は今年もひよこスポンサーとして協賛しました!

そして私含めて弊社Androidエンジニア数人も参加させていただきましたので、 今回は皆さんの注目したセッションをご紹介出来ればと思います。

ノベルティがたくさん床に置いてある。メドぴあ株式会社からの物(マスク、綿棒、ウェットティッシュ、ステッカー)とチラシは上に置いてある。
参加者はノベルティをたくさんいただけます!

みんなの推し

新しいKotlinのコンパイラK2についてや、どうして作り直すことに至ったのか、などについて紹介いただきました。
K2はパフォーマンスの改善に力を入れているようで、FrontendでもIR(Intermediate Representation)を使用することでこれを実現しているみたいです。 現段階でシングルスレッドでもおよそ2倍程度はやくなるようです。すごいですね!
作り直すに至った経緯としては、既存のFrontendのコードに対してコンパイラ・IDE・third partyのIDEが依存しており、リファクタリングが困難であったことが背景としてあるようでした。
一方で今の状態が完全に悪いわけではなく、この状態でやってきたからこそ無事にKotlin1.7までリリースすることができた、とも話されていました。

普段はあまり知ることができないコンパイラの内部について丁寧に説明いただける貴重なセッションでした。
私自身コンパイラについてはあまり理解できていなかったのですが、今回のセッションをきっかけにもう少し踏み込んで理解してみようと思うようになりました!
ちなみにK2はまだAlphaですが、-Xuse-k2 で有効にすることができますので、みなさんも試してみてはいかがでしょうか!?


  • 伊藤さん(@y2kit_1127)にはなんと3つのセッションも選んでいただきました!

1.「Kotlin/NativeのNew Memory Managerに移行しよう

Kotlin Multiplatform Mobileの Old Memory ManagerのKotlin/NativeにおけるKotlin coroutinesや並列、非同期処理の課題やNew Memory Managerでの改善点について、ご紹介いただけました。
Kotlin Multiplatfrom Mobileは個人的にとても興味があり試聴してみました。以前C++言語を用いたアプリケーション開発を経験したことがありますが、MulchThreadな処理上でもstd::atomicなどあり、Old Memory Managerではその方式に似たようなライブラリがあるなっと思いました。New Memory Managerではメモリーリークを起こしづらい点やfreeze()による開発者体験を下げるようなコードが排除されているなど、メリットが大きいですね。
今後なにかしらでKotlin Multiplatformにふれていけたらと思います!

2.「型だけでバグを減らそう!Kotlinの型パワーをつかった実践タイプセーフエンジニアリング

Kotlinの型機能を使ってコンパイルで検出できる実装ミスを増やしアプリケーションの品質を高める方法を説明しております。
色々なパターンで実装ミスやバグなどを紹介していただけました。
コンパイル時の実装のミスに気づきバグ減らせるのは品質面など良くなりそうですし、開発者体験が良くなりそうだと思いました。
個人的には「sealed class を使ってデータの不整合型が起こり得ない型を定義する」はよく使う実装の一つで、 AndroidでもJetpack Composeに渡すUIの状態などもsealed classを使って定義していました。
改めてなぜsealed classを使うのか?というのが意識していけそうだと思いました!

3.「もう迷わないCoroutines〜suspend funとChannelとFlow〜

kotlin Coroutinesについて、suspend function、Flow、Channel、の使い分けなど?BroadcastChannelとMutableSharedFlowのどちらを使ったらいいかなどご紹介いただけました。
普段CoroutinesをAndroid開発でも、Flowやsuspend functionを主に使用しておりますが、使用箇所含めChannelの使い所など改めて勉強になりました。
絶賛プロダクトでもRxとCoroutinesが混同しているため、同じようにRxからCoroutinesの置き換えていきたい気持ちが強まりました!


言語機能の良くない使い方をご紹介いただき、とても考えさせられるセッションでした。
個人的に一番刺さったところは、スコープ関数の深いネストを避けるためのコツです。 一部を別途プライベート関数か拡張に書き換えたことだけで、処理が圧倒的に読みやすくなりました。。!よく見かける問題ですし、もう衝撃的でした。
他にもデフォルト値の必要性や決め方、data classやsealed classを書く時の罠などもご説明いただき、とても参考になりました。
是非もう一度チームメンバーと一緒に見たいセッションです。

おわりに

様々な方面でKotlinの面白さが伝わる一日でした。 おかげさまで同僚と共に楽しく勉強させていただきました。

もし来年オフライン開催となりましたら是非現地でまた参加してみたいと思いました。

それまではKotlinの成長を温かく見守りましょう。


是非読者になってください


メドピアでは一緒に働く仲間を募集しています。 ご応募をお待ちしております!

■募集ポジションはこちら

https://medpeer.co.jp/recruit/entry/

■開発環境はこちら

https://medpeer.co.jp/recruit/workplace/development.html