タケハタのブログ

プログラマの生き方、働き方、技術について雑多に書いていくブログです。

KotlinConf 2023 現地参加レポート

KotlinConf2023に現地参戦してきました

去る4/12〜14の3日間、オランダのアムステルダムで行われたKotlinConf 2023に現地参戦してきました!
前回の2019以来3年4ヶ月ぶりのオフライン開催ということで、久しぶりに海外行きたかったのもありチケットを取りました。
(2019のレポートはこちら)

会場の様子だったり、観た中で良かったセッションなど紹介していきます。
(recording公開されて見直してから書こうと思ってたら遅くなってしまった)

会場の様子

入場

会場はBeurs van Berlage(ブールス・ファン・ベルラーへ)。

もともと商品取引所として作られた建物らしく、歴史もありレンガ造りのとても雰囲気のいい会場でした。

https://en.wikipedia.org/wiki/Beurs_van_Berlage

ちなみにKotlinConf2018の時と同じ会場です。

入場時にはパスとボトルがもらえます。

ボトルにはKotlinConfのロゴとともに、メルカリの名前が。

会場はこんな感じの場所で、中もカンファレンス会場とは思えない雰囲気のある建物でした。

ノベルティグッズの売っているストアも。

Breakfast

会期中は毎日Breakfastがあります。
日によってパウンドケーキみたいなものがあったり、ヨーグルトがあったりしました。

フルーツは毎日あります。

Lunch

Lunchも毎日出ます。

鮭のたたきとか日本っぽいものも少しありました。

Party

Day1の夜にはPartyが。

ステージが用意されていて、地元のバンド(多分)がずっとパフォーマンスしてました。
国際カンファレンスなだけあって、BON JOVIとかQUEENとかABBAとか国と世代問わず知ってるような曲を多くやってましたね。

ただ普通にライブの音量でやってるので人と会話するのに大声で話さなきゃいけなくてだいぶ疲れました笑

Workshop Day

ワークショップは「Asynchronous Programming With Kotlin Coroutines」というのに参加してきました。
公開されてないので内容は全然書けないのですが、

  • 用意されたServer、Clientアプリケーションを編集、実行してのハンズオン
  • Kotlin CoroutinesのlaunchやCoroutineScopeなど基礎的な部分から始まり、Flowを使った実装などCoroutinesの機能を一通り学習
  • Kotlin Coroutinesのアーキテクチャについての解説もあり

といった形で1日ひたすらCoroutineを使った実装をしていました。
改めてこういうの集中的にやるとやっぱり勉強になりますね。

Day1

セッションも見たやつでおすすめのを書いていきます。
内容は動画を観てもらうのが一番として、メモも一緒に添えて。

それぞれのセッションの解説記事も気が向いたら別で書こうかなーと思ってます。

OpeningKeynote

www.youtube.com

  • Kotlinの使用されているプラットフォームの割合について(Android、Server-side、その他)
  • Kotlinの満足度について
  • Kotlin2.0、K2コンパイラの概要とリリースまでのロードマップについて
  • Kotlin Notebooksの発表
  • GoogleのKotlinに対するこれまでの取り組み
  • Androidアプリの中でのKotlin、Jetpack Composeの使用状況
  • Android StudioのGradleのデフォルトがKotlin Gradle DSLになった
  • GoogleはJetBrainsと密に連携し、自社のツールにKotlin 2.0を積極に取り込んでいっている
  • Google WorkdspaceのチームはKotlin Multiplatformを積極的に実験している
  • Grants programについて
  • Kotiln Multiplatformの現場について(2024年にStableになるよ)
  • Compose for iOSの発表とマルチプラットフォームでのUIの共有について
  • Kotlin WebAssemblyとCompose for Webについて

今後のKotlinのロードマップなどが、色々な方面で語られているので必見です。
現地だとKotlin NotebooksとCompose for iOSの発表の時が特に盛り上がっていた印象です。

Adopting Kotlin at Google scale

www.youtube.com

  • Kotlin Foundationの設立
  • AndroidでのKotlin採用とFirst Choiceになっていくまでの取り組み
  • AndroidにK2コンパイラを取り込むためのタスクを進めている
  • Kotlin Multiplatformに貢献する取り組みについて
  • GoogleではJavaが広範囲で使われているという話
  • Server-sideでのJavaの使用方法について
  • なぜServer-sideでKotlinを導入したいのか?
    • Kotlinを使用することと生産性が向上するというSurveyの結果
    • GoogleのServer-sideでのKotlinに対する満足度
    • Kotlinを使うことでのクラッシュが減る
  • 静的分析について
  • JavaとKotlinを混合することは負担にならない
  • Kotlin Communityに関わる取り組みについて

Kotlinに取って重要な企業である、GoogleでのKotlinに関する取り組みについて。
事例やSurveyの結果として興味深いものも多いです。

Replacing SQL with Kotlin's 'dataframe' on the Las Vegas Strip

www.youtube.com

  • Dataframeとは?
  • CSVやExcelなどもDataframe
  • pandasがもっともポピュラー(Pythonがデータ分析のスタンダードなので)
  • DataframeをKotlinで扱えることのメリット
  • データ管理に人気なのはSQLだが、それを使うことによるデメリット
  • クライアントのExcel管理のデータをSQLに移行したが、しっくりこなかった
  • プラグラムがKotlinで実装されているので、Kotlin Dataframeを使いたいと思った
  • 当時は初期段階だったが、やりたいことは一通りできるとわかった
  • JupyterのKotlinカーネルは既に洗練されていて素晴らしい
  • ライブコーディング

少し珍しいKotlin Dataframeの話。
JupyterのKotlinカーネルの話と事例、そしてライブコーディングも見れて面白いです。
ちょうどKotlin Notebooksが発表されたタイミングだったのもあり、興味深い話でした。

Day2

K2 Compiler plugins

www.youtube.com

  • KotlinコンパイラコアチームのメンバーによるK2プラグインAPIについての話
  • K2コンパイラによって減らせるボイラープレート
  • 独自のプラグインを作る必要がある状況
  • コンパイラ内部の構成、機能
  • フロントエンドコンパイラ、バックエンドコンパイラの役割、それぞれのStructure
  • コンパイラを拡張する方法について
  • KAPT、KSPそれぞれの仕組みとPros、Cons
  • コンパイラプラグインを作ることはかなり複雑なので、作る時はよく考えるべし
  • 古いコンパイラAPIからの移行について

今後のKotlinにとって重要なファクトであるK2コンパイラの解説。
Kotlin 2.0に向けてぜひとも知っておいた方がいい内容なので、これも必見です。

How we’re improving performance of IntelliJ IDEA Kotlin plugin

www.youtube.com

  • IntelliJ IDEAのKotlinプラグインのパフォーマンス改善への取り組みについて
  • よく上がるパフォーマンスの問題は起動、インデックス作成、ハイライト、入力補完フリーズについて
  • リファクタリング機能でのRenameのパフォーマンス改善
  • Index参照のスコープについて
  • プラグインのパフォーマンステスト
  • パフォーマンスの低下を検知するためのベンチマーク
  • フリーズが起こる原因
  • IntlliJ IDEAのUIはJava Swingで書かれているため、Javaでは問題が起こりづらい
  • Javaの機能を利用するためのKotlinでの変換処理について
  • Kotlin1.5でのセマンティックハイライトのパフォーマンス改善
  • Kotlin2.0では新しいコンパイラでプラグインを0から書き直している(現在の強力な機能を再利用はしている)
  • 今後の対応の最優先事項は、K2への対応
  • パフォーマンステストは継続して行う
  • フリーズへの対処も随時行っていく
  • 現在のプラグイン、将来のプラグイン、IntelliJ IDEA全体の共通の最適化はパフォーマンスの目標に近づくしやっていく

Kotlinを使う誰もが経験しているIntelliJ IDEAのパフォーマンスの話で、かなり興味深かったです。
「あー、これよく起こるな」という話とそれに対する改善についても聴けるので、とても面白いです。

Gilded Rose Refactoring Kata

www.youtube.com

これはひたすらライブコーディングなので観てもらうのが一番。
どんどんコードを綺麗にしていく様子がすごく気持ち良くて楽しいです。

全体通した所感

色んなセッション観た全体感としては、

  • Android、Server-side、データサイエンス等々、やはり話のジャンルが幅広くKotlinの面白さが見えた
  • モバイル勢はCompose for iOSがかなりアツいという印象
  • サーバーサイドネタは斬新なものは前より少なめ?
  • 国際カンファレンスでもやっぱり小ネタとしてChatGPTがよく織り交ぜられてる

といった印象。
Server-sideはGraphQLとかセッション自体はいくつかあったけど、今回はやや少なめだった印象。

あとコロナ前最後にやった、2019年のKotlinConf以来の海外カンファレンスでしたが、やはり現地参戦は得られるものが大きいですね。

  • 現地にいるからこその刺激と、集中力を持って聴くことができる
  • 国内だけでは得られないノウハウがいっぱいあって、やりたいことが増える
  • 海外のエンジニアとコミュニケーション取れて、それ自体も刺激になる
  • 海外を歩くことは楽しい

とか色々とあって、行くと違う世界が見えてくる感じがします。
あと個人的には英語学習のモチベーションも大幅に上がったので、これをキープして続けていきたいと思います笑

ということでコロナでしばらく道が閉ざされていた海外カンファレンスですが、今後はまた機を見て参加したいと考えています。