ショート(20分)
KMP(Kotlin Multiplatform) 中級者

Kotlin Multiplatformで実現するクリーンアーキテクチャ

horitamon Hori Tamon

エンジニアとしてある程度のキャリアを積んだときに多くの方が出会うであろう、「Clean Architecture 達人に学ぶソフトウェアの構造と設計」で語られる設計手法について、Kotlin Multiplatformを使用してアプリを実装する際にどのように利用できるのかを考えていきます。
MVC、MVVMといったアプリ開発でも用いられる設計手法と比較して語られることが多くありますが、実際は方法の違いはあれど、思想に多くの共通点があります。
本セッションは実際に用いられる手法をベースに、クリーンアーキテクチャとして語られる概念がどのようなものであるのかを、KMPのコードベースでお話ししていきます。

どちらでも
Android 初級者

0からAndroidアプリ&Kotlinにキャッチアップして実務経験を積んだ3年後と振り返り

fumiyasac 酒井文也

2020年に業務を通じてAndroidアプリ開発やKotlinを学ぶ機会を得るまでは、これらの知識は全くのゼロの状態でした。
最初は心配と試行錯誤の連続ではありましたが、効率よく楽しんでキャッチアップをしながら、得られたインプットを実務内で上手に生かしながらコミットをする際のヒントや押さえておくと基本理解からある程度の応用を可能にするための、着眼点や考え方、エッセンスをできるだけ紹介する予定です。

また、始めた当初から約3年経過して、モバイルアプリ開発に向き合う際の考え方に生じたポジティブな変化に関してもお伝えできれば幸いです。

ショート(20分)
Android 初級者

Kotlinで実現するモバイルアプリとサーバーサイドの統合プッシュ通知システム

arus4869 syam

プッシュ通知は、ユーザーとのコミュニケーションを強化し、アプリケーションの価値を高める重要な機能です。
このセッションでは、モバイルアプリとサーバーサイドの両方をKotlinで実装し、プッシュ通知についての基本的なプロセスを紹介します。
Androidでのプッシュ通知の設定方法から始め、Kotlinを用いたシンプルなサーバーサイドの通知送信の例までをステップバイステップで説明します。

またFirebase Cloud Messaging (FCM) の基本的な使用法を解説し、実際の通知の設定、テスト、デバッグ方法についても紹介します。

  • KotlinとFCMを使用したプッシュ通知の基本設定
  • シンプルなサーバーサイドの通知送信ロジックの作成
  • モバイルアプリでの通知のハンドリングとユーザーフィードバックの収集

このセッションは、プッシュ通知をこれから学び始める方に最適です。

ショート(20分)
KMP(Kotlin Multiplatform) 中級者

失敗から考えるKotlin Multiplatform導入 今ならどうする?

horitamon Hori Tamon

株式会社Voicyでは、かつてモバイルアプリの新規機能開発時にKotlin Multiplatform(KMP)を導入することに挑戦しました。
実際にAndroid版で使用するまで開発を進めましたが、最終的にiOS版では導入せず、最終的にAndroid版からもKMPのコードを取り除くに至っています。
本セッションではこの判断の経緯をお話ししながら、今導入するならどうするか?の視点でも考えつつ、お聞きの方がKMPの導入を検討する上で参考にしていただきたい項目をお伝えしていきます。

セッション内要:
・Kotlin Multiplatformの導入に至った経緯
・運用方法とその課題、iOS版への導入見送りの理由
・機能を保ちながら、Android版のKotlin Multiplatformコードを取り除く方法
・これから導入を検討するには何を考えるか?

3
どちらでも
Kotlin言語・プログラミング 初級者

Kotlin in Action, Second Edition との比較から学ぶ Kotlin の進化

omuomugin omuomugin

Kotlin in Action といえば言わずと知れた名著かと思います。
特に日本語訳もされていたため (現在は残念ながら絶版となってしまっていますが)、お世話になった方も多いんじゃないかと想像しています。

実は長い期間を経て、 Second Edition が 2024年 5月に発売される予定となっています。
(現在も MEAP という形で書き途中のものを読むことができます)
https://www.manning.com/books/kotlin-in-action-second-edition

このセッションでは、 当時 Kotlin in Action の初版にお世話になっていたスピーカーが、 初版と Second Edition の比較から Kotlin がどのような進化や思想の変化を遂げたのかを紹介していきます。

2
ショート(20分)
Webバックエンド/サーバサイド 初級者

Kotlinを用いたDSLによる宣言的なサーバーサイド開発

secret_key_base kazuki tanida

Kotlinはドメイン知識をコードとして表現するのに優れた言語だ!

実際そう感じた事例として既存の複雑なコードをKotlinの機能を用いてDSL的に宣言的に表現することができました。

その結果、開発者にコードの意図が伝わりやすくなるだけでなく重複処理を省くことや無駄な処理を省くことによってプロダクトの機能の大幅は速度改善に寄与できました。

このセッションではKotlin DSLを用いたサーバーサイド開発の改善について実例に沿った内容でご紹介していきます。

ショート(20分)
Android 中級者

Jetpack Compose: 効果的なComposable関数のAPI設計

haru067 haru067

Jetpack Compose(以下、Compose)の登場により、AndroidにおけるUIの記述はView/XMLの時代から大きく変化しました。
Composeのような宣言的UIでは、与えられた入力値を元にUIの全てが決定するため、コンポーネントが何のパラメーターをどのように持つのか、といったAPI設計が品質に大きく影響します。
また、Composeは関数をベースにした記述方法であり、Kotlinの言語機能も上手く活用したAPI設計が必要になってきます。

本セッションでは、State hoistsingやState holder class、Slot API、Relaxed APIといったComposable関数のAPI設計にまつわるベストプラクティスについて軽く触れたのち、
それを、いつ、どのように適用していくべきか、是非を含めて実例を元に実践的な議論をしていきます。

ショート(20分)
Native 中級者

Kotlin/NativeでのサーバサイドKotlin開発

u6ec9 かとこう

Kotlin/NativeはKotlinの文法でバイナリが吐き出せるという夢のような技術ですが、実際の実装に当たっては辛く厳しい道のりが待ち受けています。
本セッションでは、Kotlin/JVMを使用してサーバサイド開発を行っている開発者を対象に、Kotlin/Nativeのサーバサイド分野での可能性を以下のような内容から探ります。

・VMが不要になることの利点
・C言語ライブラリとの連携方法
・Kotlin/Nativeにおける制限
・SSL通信の統合

1
どちらでも
ツール/エコシステム 中級者

まだ JUnit を使ってるの? kotest を使って快適にテストを書こう

hktechno 川田裕貴

kotest は、 Kotlin ネイティブなテストフレームワークで、Kotlin で書かれたコードをテストするための強力で便利な機能が多く含まれています。
Kotlin/JVM では、テストに JUnit を使っている方が多いと思いますが、アサーションライブラリが Java しか考えていなかったり、coroutines, 非同期処理への対応が弱かったりと、もっと Kotlin の機能を最大限に活用して快適にテストを書きたいと思われる場面も多い事でしょう。
kotest は、アサーションライブラリだけを JUnit と組み合わせて使うこともできるし、テストフレームワーク全体を kotest へ置き換えることも可能です。
このセッションでは、主に今 JUnit を使ってテストを書いている方を対象に、kotest へ移行するとどんな良いことがあるのか、移行のやり方や具体的な実例を紹介します。

どちらでも
Kotlin言語・プログラミング 初級者

Kotlin Meets Data-Oriented Programming: Kotlinで実践する「データ指向プログラミング」

lagenorhynque lagénorhynque/カマイルカ

書籍『データ指向プログラミング』( https://www.shoeisha.co.jp/book/detail/9784798179797 )は、プログラミング言語Clojureにおいて典型的なプログラミングスタイルの根幹にある考え方を他言語でも応用できる形で抽出し紹介する試みであるということができます。
Clojureを実務や趣味で継続的に利用するとともに比較的最近Kotlinに再入門した立場から、この本で提示されている「データ指向プログラミング」というプログラミングスタイルを概説しながらKotlinらしい実践の可能性について考察します。

データ指向プログラミングの原則:

  • 原則 #1: コードをデータから切り離す
  • 原則 #2: データを汎用的なデータ構造で表す
  • 原則 #3: データはイミュータブルである
  • 原則 #4: データスキーマをデータ表現から切り離す
2
ショート(20分)
ツール/エコシステム 初級者

KotlinのLinterまなびなおし2024

nyafunta9858 nyafunta9858

Linter導入していますか?
Linterはコーディング規約を遵守しているかを検査したり、潜在的なバグのにおいを検知してくれたりと開発をするうえでとても頼りになる存在です。
また非常に多くのルールが標準で用意されているためこれらを利用するだけでも有用ですが、自分たちで適用するルールを選択したりカスタムルールを作成することもでき、柔軟な設定をすることができます。
一方でその柔軟さのあまり、使いこなせていないと感じたり、実は形骸化してしまっていてるといったケースもあるのではないでしょうか。

本セッションでは、ktlintやdetekt、Release1.0間近のKonsistといったKotlin向けのLinterの特徴や活用シーンなどを再履修し、「なんとなく」から「意識的に選択・活用できる」ようになることを目指したいと思います。

どちらでも
Kotlin言語・プログラミング 中級者

Kotlin Coroutinesで共有リソースに正しくアクセスする

at_sushi_at Mori Atsushi

Kotlin Coroutinesを使えば非同期処理を比較的簡単に書けますが、それでも複数のコルーチンから共有リソースにアクセスするときには最大限の注意を払う必要があります。

例えば、あるコルーチンで変数を読み込み、その値を元になにか操作を行い、結果をもとにその変数を上書きするとします。
その間に他のコルーチンによって値が書き換わることはないでしょうか?
その結果、予期せぬ不具合を引き起こしたりしないでしょうか?

正しく共有リソースを扱うためには、MutexやStateFlowのupdate関数など、それが考慮されたAPIをうまく組み合わせる必要があります。
また、1スレッドを使い回すディスパッチャと複数スレッドを使うディスパッチャがありますが、気をつけるべき点は異なります。
このセッションではどのようなコードで注意が必要なのか、また期待通りに動作させるための方法について紹介します。 

1
ショート(20分)
ツール/エコシステム 中級者

Kotlinライブラリの運用を楽にするコツ

at_sushi_at Mori Atsushi

アプリケーション開発をしていて、何か素敵なアイディアが浮かんだら、ぜひそれをライブラリとして公開してみましょう。
一方で、ライブラリの運用には思ったより手間暇がかかります。

デプロイのフローやドキュメントの更新等、自動化できるものはできる限り自動化しましょう。
このセッションでは、私が実際にいくつかのライブラリを公開した経験をもとに、ライブラリを公開する方法から、それを楽に運用するためのコツについて紹介します。

  1. ライブラリ用のモジュールを作る
  2. ローカルにデプロイしてみる
  3. Maven Centralに公開する
  4. READMEを書く
  5. GitHub Actionsでデプロイを自動化する
  6. リリースノートを自動で作成する
  7. 依存関係を自動で更新する
  8. Dokkaでコードからドキュメントを自動生成する
  9. Docusaurusでリッチなドキュメントを作る
2
ショート(20分)
Kotlin言語・プログラミング 中級者

KSPから入るKotlinコンパイラ

kokoakuma

K2コンパイラによりKotlinコンパイラへの注目度が増してきています。しかし、業務を始めたばかりの状態でKotlinコンパイラ全般に対する理解を深めるのは中々に大変な道のりです。
この発表では、KSPのコード生成の仕組みを追いながら、Kotlinコンパイラを理解する入り口に立つことを目標としています。

2
ショート(20分)
KMP(Kotlin Multiplatform) 上級者

2024年に公開するに相応しいKotlin Multiplatformライブラリを構築する

Atsushi Eno

Kotlin Multiplatform (KMP)は新しいKotlin開発のトレンドとなり、日々AndroidやKotlin/JVM専用だったKotlinライブラリがKMPに移行しています。Kotlin生態系を発展させていくには、われわれがKMPに対応したライブラリを公開していく必要があります。

Kotlin 2.0に向けて、wasmJsターゲットが追加されたKotlin本体も、Gradleプラグインやプロジェクト構成も、大きく変わってきていますが、KMPの本格的なライブラリ生態系には不可欠であろうネイティブライブラリの呼び出しや、それらを踏まえたMavenパッケージのビルドや配布など、未整備の部分も多いです。

このセッションでは、2024年にKMPでライブラリを構築して公開するまで、どんな課題をどうやって乗り越える必要があるのかを、自作ライブラリの経験をもとに皆さんに共有します。

ショート(20分)
Webバックエンド/サーバサイド 中級者

LLM を含む機械学習を使用した実際的なソフトウェアにおける Kotlin と Python の分界点

baseballyama_ 山下 裕一朗 (baseballyama)

私は、株式会社フライル (以下弊社) で働いています。弊社はプロダクトマネジメントやVoC分析を効率化するSaaSです。
弊社はバックエンドを全てKotlinで実装しています。
弊社はこれまで、LLMを含む機械学習を使用した機能を10個リリースしました。
これらの機能には、単にLLMを呼び出すだけの機能もあれば、クラスタリングアルゴリズムを使用する機能もあります。

これらの機能を開発する際、技術的な論点として、「Pythonで実装するべきか」があります。
Pythonを選択するメリットとして、クラスタリングなどの機械学習処理が非常に充実している一方、
デメリットとして、PythonとKotlinの連携が必要になったり、そもそもPythonに慣れているエンジニアが少ない、などがあります。

このセッションでは、KotlinとPythonの分界点について、自社での経験を共有します。

ショート(20分)
Kotlin言語・プログラミング 中級者

Kotlin Generics徹底解説

h5mtakada Masatoshi Takada

Kotlinでよりアドバンスな抽象化を記述する際には、ジェネリックスの使い方をしっかりと把握しておく必要があります。
本セッションではジェネリクスの強力な機能を広く深く探求し、型パラメーター、変性、そしてreified genericsを含む、Kotlinの型システムを強化する要素を詳細に説明します。

2
どちらでも
テスト 中級者

Kotlinでテスト駆動開発をはじめよう

hiroaki08181359 Nosho Hiroaki

Kotlinには豊富な言語機能や高い可読性があり、テスト周辺のライブラリも充実していて、テストが書きやすい言語といえます。本セッションではこのKotlinのメリットを活かしてテスト駆動開発(以下TDD)を実践していきます。

TDDとはコードを書く前にテストを書くという、品質と開発効率向上を目指す手法です。Kotlinの機能を使いながら、実際にAndroidアプリのコードを書いていきます。また、FlowのようなKotlin機能のテスト方法についても触れます。

テストを書くことでKotlin特有の概念も理解しやすくなるため、Kotlinを始めたばかりの方も対象です。

キーワード
・Fake、MockK
・コルーチン、Flow、Turbine
・例外、Result
・sealed interface
・拡張関数
・テンプレートやAIによる自動生成、デバッグ
・Kotest
・良いテストとは

ショート(20分)
Android 中級者

初めてみよう!Konsistでコードの標準化

h5mtakada Masatoshi Takada

Konsistは、Kotlin言語用に特化されたstructural linterです。共通のコーディング規約の順守を保証することで、コードの可読性と保守性を向上させることを目的としています。
また、Konsist APIはJUnit4、JUnit5、Kotestなどの主要なテストフレームワークともスムーズな統合ができ、KMPにも対応可能です。

このセッションでは主に

  • Konsistとは?
  • ktlint, detekt, ArchUnitとの比較・違い
  • Konsistを用いたUnitテストやAPI Guidelines for Jetpack Composeルールの作成方法サンプル

の流れでKonsistを一緒に理解していき、Konsistの魅了を紹介していきます!

2
ロング(40分)
その他 中級者

K2のKotlin IDEプラグインの中を覗いてみよう♪

yanewm Yan Zhulanow

この春、K2コンパイラを使った、IntelliJ IDEAのKotlinプラグインのアルファ版が発表されました。見慣れたIDEが軽くなり、さらに、スイスイとコードを書ける感覚を目指したプラグインの開発がどんどん進んでいます。
K2の洗練された仕組みによって、コードの解析がかなり早くなりました。しかも、プラグインに新しいコンパイラが入っただけではありません。早くて安定するために、それぞれの部分をゼロから作り直したり、大幅に改善されたりしています。

Kotlinチームのメンバーとして、その変化について具体的にお話しさせていただきます。
難しそうだと感じる人もいるかもしれませんが、コンパイラやIDEの内部に触れたことがない人でもわかりやすい内容になっています。皆さんがよく知っているKotlinに、違う角度から触れてみましょう!

5