11/1にKotlin Fest 2025というイベントでスピーカーをしました!9月のiOSDCに引き続き連荘。
Inside of Swift Export - KotlinとSwiftを繋ぐ新しい仕組み
このトークでは、Kotlin 2.1から実装された、新しいKotlin-Swift間のinteroperability、Swift Exportの内部動作について解説した。ちょうど今年9月に出たKotlin 2.2.20でデフォルト有効化されたのも相まって時事的にも良い話題だった。
あまり長いトークは準備が厳しいなと思い20分枠で応募したが、結果的に当然20分で話せるわけもなく、話題の取捨選択にかなり苦心した。特にビルドシステム全体を解説する上でKotlin Native自体のビルドシステムやLLVMに触れずに話すことは難しかったのだが、さすがに収まりきらず。SKIEとの比較やメモリマネジメントの互換などの話もしたかったが、泣く泣く削った。
また、勝手知ったる界隈と違い、普段関わりのないコミュニティ向けのトークを作るときに聴衆のペルソナを設定するのがとても難しかった。多くのKotlinエンジニアはJVMにしか馴染みが薄いだろうから、Kotlin/Nativeの話をする場合どれぐらいの知識を期待すべきかという設計に最後まで悩んだ。 試行錯誤の末、ビルドシステムの話よりも言語間の文法の変換がどのように行われるかという点の方が聴衆が入りやすそうだったので、その辺りに重点を置いて話した。
肝心のコンパイラ内部の話は理解しやすいような工夫はしているが、結果的に公式リポジトリのドキュメントや、Kotlin Confなどの一次ソースをまとめただけの内容にすぎず、あまり血の通ったトークができなかったなという反省もある。*1
ちなみに、このトークはカンファレンス全体で唯一のKotlin/Native枠、かつ上級者向けのトークだったようだ。僕が一番初心者なのに!

皆さまの声
ビルド後の生成物がCヘッダーとバイナリのセットだから、
— にしこりさぶろ〜 【🪷11/08-09@愛知・Aich Sky Expo】 (@subroh_0508) 2025年11月1日
- Swift側のIDEから取り回ししづらい
- Kotlin Nativeコンパイラが複雑で密結合になってしまう
なるほどみ #KotlinFest #fun
今まで自前で描いてた Obj-C Wrapper みたいなのを自動で出力してくれるんだ
— まつも@趣味アカ (@matsumo0922) 2025年11月1日
これによって自然にアクセスできる
Swift IR と Obj-C Wrapper があるおかげで、Kotlin, Swift 両方で書きやすいようになってる#KotlinFest #fun
わかりやすくてよいセッションだった🤭#KotlinFest #fun
— りうねん (@RyuNen344) 2025年11月1日
iOSあまり詳しくないけど何がいいのか辛いのかわかりやすかった #KotlinFest #fun
— Tsuyoshi UEHARA (@uecchi) 2025年11月1日
かなり暖かい反応をいただけてなにより😊
また、Ask the Speakerがかなり盛り上がり、JetBrainsのエンジニアも含めて直接話す機会が得られて良かった。来てくれた方ありがとうございます。
Kotlinコンパイラおもしろそう
昨年のKotlin Fest 2024に初めて参加して、昨年ちょうどリリースされたK2コンパイラに興味を持ったのがこの登壇のきっかけだった。特にコンパイラをセルフホスティング化してKotlinで再実装していることと、コンパイラバックエンドを含むCompiler Pluginの文化はSwiftにはないもので大変興味深かった。
また、昨年、JetBrainsの方がIDEプラグインのトークで「コンパイラの作りは型が決まっているのでIDEの設計に比べれば簡単」と話していたのも印象的だった。
Swiftのエコシステムにもマクロやビルドプラグインのような仕組みはあるが、Kotlinと比べると非常に限定的なので、この辺が拡張可能かつ、近代的に設計されているKotlinのビルドシステムはとても羨ましく映る。
馴染みのないコミュニティに参加する
普段業務でサーバーサイドKotlinを書くことは増えてきたが、Kotlinをメインで扱っているわけではないし、Androidアプリを開発しているわけでもない。そんな中なぜわざわざ参加・登壇したのか。
理由の1つに純粋なキャッチアップはもちろんある。普段、開発基盤エンジニアをしているので、様々な言語のエコシステムやトレンドに触れることは、仕事の幅を増やす上で重要に思う。
それに加え、裏テーマとして、登壇を通してKotlinコミュニティとの距離を一気に縮めたいという打算的な思いも大きかった。
Kotlin Festには昨年も参加者として出てみたが、やはり外様がいきなりカンファレンスに入っていくのはかなり難しいなという感想があった。あまり存在が知られていないとなかなか話しかけてもらえないし。
今回は、その反省を生かしてスピーカーをした上に、自社ブースの運営の手伝いもやってみた。なるべく知らない界隈で接点を増やすような動き方をしたつもり。 結果、懇親会などで声をかけてもらいやすくなったり、自分もアウェイ感を感じずに済んだという効果は感じられた。1度登壇しておくと、狭い業界、どこかで覚えてもらえていることがあるかもしれない。
わざわざここまでしてコミュニティに入っていこうとしているのは、昨年書いた記事でも述べたが、今後のキャリアのためにもう少し守備範囲を増やした方が良いなと思ったのもある。
Kotlinを愛でる
昨年に比べてかなりコミュニティに入り込めたので充実感があった。今後もKotlin自体は使う機会がありそうなので引き続きやっていくつもり。
またSwift Exportについてはかなり詳しくなれたので、トークでも触れたが今後のロードマップは追い続けていきたい。普及にはまだ時間がかかりそうだけど・・・・・・。
*1:自分がやった仕事じゃないなら一次ソース見れば良いじゃんという思考になる