Kotlin Fest 2024へ参加してきました
はじめに
株式会社フィノバレーでAndroidアプリ開発兼モバイルアプリチームのリーダーを担当している照井です。
6/22(土)にベルサール渋谷ファーストで開催されたKotlin Fest 2024に参加してきました。
Kotlin Festは2018年から始まり、2019年、2022年(オンライン)そして今回の2024年で全4回開催しているそうです。
段々と規模が大きくなり、今回はプロポーザル、スタッフ、参加者全て過去最大とのことでした。
冒頭の長澤太郎さんの挨拶セッションにて、参加者全員に配られた名札に「Contributor」と書いてありました。これは参加者も含めて全員でKotlin Festを作り上げていこうという想いを込めているそうです。めっちゃ良いですね。
それでは私は1コントリビューターとして感想メモを書いていこうと思います。
※ なお、この記事は私の個人的な感想メモですのでご了承ください。
本イベントの参加目的
昔はなんとなくでイベントに参加することも多かったのですが、目的があると満足感がだいぶ違うので立てることにしました。以下の3つです。
オフラインイベントに参加して刺激を得る
Kotlin Multiplatform(KMP)の現状を知る
イベントにPCを持参せずこれまで通りの体験ができるか試す
1と2は言葉の通りなので3について補足します。これまで参加してきたオフラインイベントでは毎回PCを持参し、スピーカーの方がアップしてくれたスライドを手元で見たり、セッション中にメモをとったり、気になった点をChromeで検索していました。
PCを持参する理由としなくていいなら持って行きたくない理由を以下に挙げます。
持参していた理由
スライドが見づらい位置に座った場合でも手元で確認できる
セッション聴講中のメモがスマホより楽
気になった事柄の調べものが楽
バッテリーが最後まで持つ(会場に電源があるケースはほぼないので基本家でフル充電して行きます)
持参しなくていいならしたくないと思っている理由
PCが重くて荷物がかさばる
机がない席だと膝の上で操作するのが面倒
私の中で「荷物がかさばる」が最も比重が大きく、スマホで済むならそうしたかったのです。以前はスマホはバッテリーの減りが激しくフリック入力も誤字が多くて検索したりメモを取ったりがなかなか困難だったので、PCを使っていました。過去メモも簡単に閲覧できるのもメリットでした。
ただ、2024年現在ではスマホのバッテリーが大きく改善され画面サイズも大きくなっていき、操作感も良くなったと感じます。
私はNexusやPixelを使ってきたのですが、今のスマホなら横向きにすればスライドも快適に閲覧できるサイズになったと感じます。
また、個人的に今回この目的を考える上で一番ワクワクしたのは「LLMが活用できるのでは」という点でした。特にちょっとした情報や過去メモを引き出すのであれば最近登場したNotebookLMで事足りるではと考えました。
聴講予定のセッションに関連する情報を公式サイトや技術ブログなどから取得してNotebookLMに入れておき、知りたい時に即情報を引き出せて手軽に閲覧できたら素敵だなと思い、今回検証してみることにしました。
メモは気になった点をGPT-4oに聞いたりNotebookLMの回答内容をピン留めして解消できないかなと考えていました。
そのため今回は PCを持参せず、スマホ(Pixel 5a)と直前に購入したモバイルバッテリーでのぞんでみました。
この目的が達成されたかは記事の最後に書こうと思います。
Kotlin Conf 2024を後から256倍楽しむためのヒント
スピーカーはJetBrains社の方で、5月に海外で開催されたKotlin Conf 2024の話をしてくれました。
Kotlin Conf 2024のセッションはYouTubeにアップされているものの、全部で70以上あり、しかも英語なので視聴すること自体ハードルが高いというのはその通りだなと思いました。
そのため、AIでセッションのタイトルと概要を日本語で一覧にしたスプレッドシートを作成し、なんと公開までしてくれました。
また、JetBrainのコミュニティー支援プログラムの話もしていたのですがかなり手厚い支援だなと思いました。
余談ですが、スピーカーの方は元エンジニアで今は違うようなのですが、lintの話のところでサラッとASTって単語が出てきたのはすごいなと思いました。
今こそ始めたい!Compose Multiplatform
最後にKMPを触ったのが5年前だったので、その後KMPがどのように変わったのかを知るという目的をこのセッションで概ね達成できました。
一応巷で片耳に情報が入ってきていたものの、このセッションで以下の2つを知れたのは大きかったです。
以前のKMPはUIレイヤーは各プラットフォームに任せ、ビジネスロジックを共通化するという割り切りをしていたが、Composeの成熟に伴いiOSのUIレイヤーにも入り込んできた。
開発時のディレクトリ構成(commonMain、xxxMainに分ける)やexpect/actualで各OS固有の実装をする、など基本的な部分は変わらなかった。
OS間のUI差異や表示分けは基本実装分ければ良いという点は当時と同様、柔軟性は高いかなと思います。
また「Kotlin Conf2024を後から256倍楽しむためのヒント」でも紹介されていましたが、JetBrains社のFleetというIDEはKMPのツールを備えておりXCode/Swiftとの相性も良いとのことでかなり気になりました。
iOSはまだベータ版ですが、近いうちにKotlinでUIまで書けそうなのでかなり胸熱ですね。
Okioに愛を込めて
Okioというライブラリ、あの有名なOkHttpに使われてることは知っていたのですが自分で使う機会がなかったのでほとんど無知の状態でこのセッションを聴講しました。
KMP開発では、common実装の際にJVMのライブラリを使うことができないのでjavaパッケージが使えません。そのため日時データの操作やFile IOなどの実装がつらい問題があるようです。
そんなときに重宝するライブラリの一つがOkioで、バイト配列を楽に使えるByteStringやFile IO周りのAPIを提供してくれているようです。
認証でよく使うJWSの例が非常に分かりやすく、便利なライブラリであることがよく理解できました。業務ではOIDCでJWTを使うケースがよくあると思うので、KMPを採用する場合は本当に重宝するライブラリなのではと感じました。
余談ですが、最後の「Okioにioを込めて」は個人的にとても好印象でした。
スポンサーブース
運営とスポンサーの双方がいろいろな工夫をしていて、とても関心しました。
まずスポンサーブースを回ってシールを集めるスタンプラリーはかなり良い案だと思いました。スポンサーブースでは、話したいけどどう話を切り出せばいいか悩んで目の前を素通りするという(昔の私なのですが・・・)方も多いと勝手に思っています。そこで会話の切り口として「スタンプラリー集めてます」と入り込むのはだいぶ良い施策だなと思いました。
また、各スポンサーのブースについては「ボードにシールを貼る形式のアンケート」は昔も多かった印象ですが、クイズをやっている企業さんが多かったり、性格診断や不採用プロポーザルの紹介、自社製品のAndroid開発環境やライブラリの大きなボードを設置したりと、スポンサーごとに色が違ってとても面白かったです。
あとKotlin Fest 2024の懇親会後に企業個別の懇親会を予定しているスポンサーさんも多く、最近はそういう施策もしているのかと感心していました。
私は午後からスポンサーブース回っていましたが、ブースで話し込んでいたら聴講予定だったセッションをいくつか見逃してしまったくらいに楽しかったです。
目的はどうだったか?
午後もいくかセッションを聴講したのですが、思ったより長くなってしまったので一旦ここで締めます。
最後に私の参加目的が達成できたのかをお伝えします。
オフラインイベントに参加して刺激をもらう
素晴らしく良い刺激になりました。各セッションも面白い内容ばかりでしたがスポンサーブースでの話もとても興味深かったです。
会話したほとんどの企業さんでComposeを導入しているのも驚きでした。
サーバーサイドでKotlinを採用している企業さんもいて(フロントはWebアプリ)そのケースではCompose導入無理ですが、ネイティブAndroid開発している企業さん全部Composeを導入しているのでは、という勢いでした。
KMPの現状を知る
これも一番知りたい部分が知れたので満足でした。当然考え方や概要レベルの理解なのであとは実際に手を動かして理解を深めるのが良いので、まずは趣味プログラミングで試してみたいなと思っています。
イベントにPCを持参せずこれまで通りの体験ができるか
あくまで私個人の感想であることを念押ししますが、これはスマホでいけるのではと感じました。
NotebookLMの使い方についてはもっと検討の余地がありそうです。以下、感じたことを挙げます。
スマホでNotebookLMのWebサイトを操作する際、入力欄が小さすぎてつらい(後半はPC版で操作していましたが今度は小さすぎて辛かったです)
わからないところは大体スピーカーの方が説明してくれるので話を聴いていた方が早い
不明点はChatGPTを使った方が早い
わかりやすい例だと「パフォーマンスと可読性を両立:KotlinのCollection関数をマスター」のセッションを聴講した時、mapやfilter系の関数はスピーカーの方も紹介程度にサッと流していましたが、私もそこは特に調べる必要はないので聴いてるだけでOKで、後半に出てきたchunkedやwindowedといった関数はさっぱり分からないのでNotebookLMの登場ですが、この2つはスピーカーの方が詳しく利用方法まで話してくださったので聴いた方が早いという感じでした。
今回はセッションに関係ありそうな知識を公式サイトのページや手元のテキストファイルから見つけ、手動でNotebookLMに入れていったのですが、聴講中に気になったことが「SkiaはFlutterで聞いたな、レンダリングエンジンだっけ?」とか「Slot APIってなんだっけ」とか入れた情報とは異なるものばかりで、GPT-4oに聞いた方が手っ取り早いと感じることが多かったです。
使い方はもっと模索の余地がありそうで、この検証ができたのはとても有益でした。昨今LLMの進化が目覚しいので、個人的にこういった目的を立てて検証してみるのはとても面白いしイベントの楽しみもより上がるのではないかと思いました。
まとめ
オフラインイベントに参加したのは多分5年ぶりくらいだと思います。ここ数年はせっかくオンライン時代になったのだからオンラインでいいのではと思っていたのですが、現地に赴いて空気を感じた方が何倍も刺激になることを改めて実感しました。
運営の方々やスポンサー、スピーカーの方々本当にお疲れ様でした。とても楽しいイベントでした。