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

JetpackComposeでWebアプリを作る

r_wadada 和田陵佑

JetpackComposeを使ったアプリケーション開発はAndroidは勿論のこと、iOSやデスクトップアプリ、Webアプリも開発可能となっています。
その中唯一Web向けのものは以前はDom操作を行う形で実現されていました。
2022年頃に新しくskiaを利用した描画方式が登場し、Webでも他のプラットフォームと同様の仕組みでのUI描画が可能になりました。

このセッションではそんなCompose for Webがどんな仕組みで動いているかを簡単に見つつ、小規模なWebアプリ構築のTipsを段階を追って紹介します。

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

明日から使えるKotlin Scripting

tomorrowkey tomorrowkey

コマンドライン環境を便利にするためにシェルスクリプトを書きますが、慣れ親しんだ言語ではないので毎回検索しながら試行錯誤を経て実装していませんか?また、時間が経過したあとにスクリプトを修正しようと思ったときに、「あれ…これなにしてるんだっけ」と途方に暮れた経験はありませんか?もしKotlinでスクリプトを書くことができれば、もっとスピーディかつ保守性も高くやりたいことを実現できるのではないでしょうか。
そんな望みをKotlin Scriptingが解決します。Kotlin Scriptingを使えば、Kotlinをあたかもスクリプト言語のように扱うことができます。このセッションでは、そんなKotlin Scriptingの1からの使い方から、日常で使うために立ちはだかるハードルのクリアを仕方を解説し、誰しも明日からKotlin Scriptingを使っていけるような解説をします。

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

KMPでモバイル開発の課題を解決〜新規サービス開発での実践と考察〜

YuQinta 福島貴幸

モバイルアプリ開発は日々進化している状況ですが、Android/iOSの仕様差異、いつまでも定まらないバックエンドなど未だ現場には課題が山積みです。

私はKotlinFest2019でKMPと出会い、その可能性に衝撃を受けました。これまで抱えてきた様々な課題を解決できるのではないか、と。

その後、社内でKMP導入に向けた共有会や技術調査を実施して、新規サービスの開発にてKMPの導入を実現化し、無事リリースまで成し遂げることができました。

本セッションでは、そんな私の体験談を交えながら、

  • KMPとは何か
  • なぜモバイル開発にKMPを推すのか
  • 実際にKMPでどんな開発が実現できたのか
    をお話しします。

こんな人にオススメ!

  • モバイル開発で課題を抱えている人
  • KMPに興味がある人
  • KMPの導入を検討している人
1
ショート(20分)
テスト 中級者

KotestではじめるProperty Based Testing

jsoizo せきね じゅん

Property Based Testing(PBT)は、関数のテストにランダムに生成された入力値を用いることで、エッジケースの見落としを発見しやすくするテスト手法です。
そして、KotlinでPBTを行うための強力なツールとしてKotestがあります。KotestのPBT機能はKotest本体のテストフレームワークの機能とは独立しているため、JUnitなど他のフレームワークを利用していても簡単に導入が可能です。

このセッションでは、PBTのメリットについてJUnit + Kotestを利用したテストコードの例を用いて説明しつつ、独自型のランダム値生成などの利用機会が多そうな機能も紹介します。
また、私はPBTを行うことがクラスや関数の設計の堅牢さに対して良いフィードバックがあると実感しており、それを示す例ついても触れたいと考えています。

よろしくお願いします。

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

withContextってスレッド切り替え以外にも使えるって知ってた?

getupmax T45K

KotlinではCoroutineを用いることで、非同期処理を手続き的に記述できます。
Coroutineの利用例として「ネットワークアクセスをwithContext(Dispatchers.IO)でラップすることでIOスレッドで行う」という例が紹介されることが多いです。
そのため、「withContextはスレッド切り替え時に使う」という理解をされている方は多いと思います。
しかし、実際にはwithContextはCoroutineContextを切り替えるために利用するものであり、スレッド切り替え以外にもさまざまな活用法があります。
本セッションでは、CoroutineContextについて触れたうえで、筆者のチームがwithContextをどのような場面で活用しているかを紹介したいと思います。

4
どちらでも
その他 中級者

よりよい Kotlin コードを書くためのライブコードレビュー

munetoshi

皆さんは、Kotlin のコードをレビューするとき、どのような点に気をつけていますか?このセッションでは、レビュー依頼を受けたことを想定し、どのようなコメントを書くべきかについて、リアルタイムデモを交えて説明します。

レビューでは、以下の内容に触れる予定です。

  • つい書きたくなるけれど、実は読みづらくする Kotlin の機能・イディオムの使い方
  • コルーチンにおける落とし穴
  • 頑健性を高めるような、正しい標準クラス・関数の選び方

また、Kotlin Fest 2022 の "可読性から見たKotlinの言語機能 -「使いたい」の、その先へ。" のプレゼンテーションや "読みやすいコードの書き方" の資料 (https://gist.github.com/munetoshi/65a1b563fb2c271f328c121a4ac63571) をレビューに活用する例も取り上げます。

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

runCatchingの依存から脱却しよう!

akkiee76 Akihiko Sato

runCatching は、ブロックに定義された関数の実行が成功したかどうかを簡単にチェックし、例外をより安全に扱うことができる Kotlin の関数です。それゆえ、全ての Throwable を catch することが可能です。

一方、Kotlin では全ての例外クラスが Throwable を継承しており、チェックされる例外(checked exceptions)を持たない設計思想になっています。この思想の背景には、主に大規模なソフトウェアプロジェクトでの例外をチェックすることが生産性の低下やコード品質の向上に寄与しないといったことがあります。

では、どのようなケースでは例外をチェックするべきでしょうか?

このセッションでは様々な例外の具体的ケースをもとに、実践的な例外の扱い方を紹介します。是非この機会に runCatching の依存から脱却しましょう!

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

Konsistで始めるアーキテクチャテスト

どんなプロジェクトも、コード量の増加や関わるメンバーの増加により、設計のルールが守りにくくなり、アーキテクチャ上の「無謀な負債」が懸念事項となります。
Javaの土地勘がある方なら、ArchUnitというツールが思い浮かぶかもしれません。実は、ArchUnitの思想を汲んだKotlinネイティブのツール、Konsistというライブラリが存在します。

本セッションでは以下の内容を掘り下げ、Konsistの価値を理解していただき、技術選定の際の重要な参考材料として提供できればと思います。

  • Architectural linterの必要性
  • KonsistとArchUnitの異同
  • Konsist利用時の注意事項
4
どちらでも
KMP(Kotlin Multiplatform) 中級者

Kotlin Multiplatform開発の世界

kigawa20 kigawa

Kotlin Multiplatform(KMP)を使うとjvmやAndroid Runtime上だけでなく、IOS上や、javascript、PCのバイナリとしてもコードを実行することができます。
これによって各プラットフォームでKotlinの言語機能の恩恵を受けることができ、プラットフォーム間のソースコードの共通化や、クロスプラットフォームのアプリケーションの開発をすることができます。

このセッションではKMPとそうでないアプリケーションとの違いや、KMPならではの特徴、実際に開発して得たノウハウについて、技術選定からKMPならではのアーキテクチャ事情、実装パターンまでを含めて紹介します。
KMPでの開発を始めたい人、始めたての人がKMPのことをより深く知り、KMPでの開発をしていく手助けになるセッションにしたいと思います。

5
ロング(40分)
Webバックエンド/サーバサイド 中級者

もう検査例外を求めない!KotlinのRailway Oriented Programming by kotlin-result

Yuiiitoto Yuito Sato

Kotlinによる開発の難しさの一つにエラーハンドリングの難しさが挙げられます。
KotlinではJavaと違い検査例外がないため関数の呼び元でエラーハンドリングを強制できません。また、どのエラーに対応するべきかは中身の実装を見る必要があります。

この問題の解決策として、Railway Oriented Programmingとその実装としてOSS kotlin-resultを紹介します。

Railway Oriented Programmingでは正常ケースと異常ケースの2つのレールを型で表現しながら開発する手法です。
異常ケースが型で表現されるためエラーハンドリングのミスがコンパイラーフェーズで気付けるようになります。
具体的には関数型プログラミングにおけるResultやEitherという成功値かエラー値かのどちらか一方の値を持ったデータ構造を使ってエラーハンドリングを行います。

5
ロング(40分)
Kotlin言語・プログラミング 中級者

コードレビューで学ぶ!Kotlinオブジェクト指向デザインパターン

akkiee76 Akihiko Sato

このセッションでは、オブジェクト指向をベースにした設計、理解容易性、命名、コードスタイル、機能要件、ドキュメント、テストといった7つの観点で行うコードレビューの手法を紹介します。

特に設計と理解容易性は、プロダクトの品質や保守性に関連する重要な観点です。そのため、コードレビューの観点で以下のデザインパターンをアンチパターンから堅牢なKotlinコードに改善する手法を紹介します。

・完全コンストラクタ
・バリューオブジェクト
・ストラテジパターン
・ポリシー
・ファーストクラスコレクション
・スプラウトクラス

また、コードレビューを支援するツールであるPR-AgentやCodeRabbitを活用したAIコードレビューの手法やレビューを効率化するプロンプト戦術を紹介します。参加者は、効果的なコードレビュー戦略を学び、チームの技術力向上に効果的かつ実践的な手法を得ることができるでしょう。

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

detektを使ってコードを健全に保つ

STAR_ZERO Kenji Abe

Kotlinの静的コード解析ツールのdetektについて紹介します。

detektは強力な解析ツールとなっており、コードスタイル・パフォーマンス・複雑性・潜在的なバグなどを検知してくれます。
コードを健全に保つのに非常に役に立つツールになっています。

検知してくれるルールを紹介しつつ、基本的な設定方法や使い方などを説明していきます。
また、ルールのカスタマイズ方法や、既存プロジェクトへの導入方法なども説明します。

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

Kotlinでの単体テストのベストプラクティスを考えてみる

kaonash_ 清水顕

「単体テストの考え方/使い方」(原題: Unit Testing Principles, Practices, and Patterns)という本があります。
単なるテストの書き方にとどまらず、価値の高いソフトウェアを構築するためのエッセンスが凝縮された名著です。

本セッションでは本書の内容をかいつまんで紹介しつつ、Kotlinにおいてどのようにそれを実践していけばいいのか、具体的な事例を交えながらそのベストプラクティスを探っていきます。
・単体テストは書いたことある or 日常的に書いてるけど、結局「いいテスト」ってなんなのかよくわからない
・単体テスト・統合テスト・E2Eテストってどう組み合わせればいいの?
・なんか気づいたらいつもテストコードの修正してる
という方々、ぜひご参加ください。

1
ロング(40分)
Android 中級者

iOS(Swift)での実装方針を参考にしながらAndroid(Kotlin)での実装効率を上げるための考え方とテクニック事例紹介

fumiyasac 酒井文也

iOS/Androidのネイティブアプリを並行して開発する場合は、SwiftとKotlinの様な言語の違いをはじめ、様々な違いを理解し、見極めながら進めていく必要があります。そして、双方を効率良く理解するために、違いをネガティブに捉えず、共通点や相違点等を上手に紐解く姿勢も重要です。

本発表ではKotlinでの実装を中心に据える前提で、Swift(iOS)と比較した際における、「1. UI実装・Layout処理の違いを見極める / 2. Swift・Kotlinを用いた実装における共通点や類似点を探し出す / 3. iOS・Androidで明確に異なるポイントを知る」ためのヒントを事例を含めて解説します。

開発を通して得られた過程や着眼点に加え、同様または似た形の機能やUI実装を要件〜具体へブレイクダウンする際のプロセスや解法アプローチについても、具体例を交え紹介する予定です。

2
採択
ショート(20分)
その他 初級者

Kotlinで愉しむクリエイティブコーディング

chooblarin 畠山 創太

クリエイティブコーディングを行うソフトウェアにおいてはProcessingが広く知られています。 OPENRNDR ( https://openrndr.org/ ) はKotlinで書かれたクリエイティブコーディングのライブラリです。
私はこれまでに、中高生や大学生にプログラミングの講義をする機会に恵まれてきましたが、その経験からKotlinとOPENRNDRがたのしくコーディングするために優れたものであると感じています。

本セッションのトークでは、皆さんが今すぐOPENRNDRを使ってクリエイティブコーディングを始めたくなるような紹介を試みたいと思います。

ロング(40分)
Kotlin言語・プログラミング 中級者

明日使える?バリデーションにまつわるテクニック

jsoizo せきね じゅん

多くのKotlinプログラマが、バリデーションに関する安全性と保守性を高くするためのより良い方法を模索していらっしゃるのではないでしょうか。
そのような方向けに、Kotlinの言語の持つ機能やライブラリを用いたテクニックを紹介しつつ、どのような目的で使うのが良いかについて、コード例を示しながらお話していきます。
また、Kotlin 2.0で正式リリースされるContext Receiver機能によって可能になることについても触れたいと考えています。

おおよそこのようなことを目次として話すことになる予定でいます。
※ ショートセッションとなった場合は③または④の内容が中心になります

① コンストラクタについておさらい
② スマートコンストラクタとResult/Either型
③ バリデーションDSLの実装
④ Context Receiverの解説と使い所

よろしくお願いします。

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

Kotlin meets GitHub Copilot: 基礎から理解してあなたも爆速開発

GitHub Copilotにより、世の中のプログラミングは劇的に進化しました。 LLMの力を使いコード生成、爆速開発できます。
より使いこなすには、LLMの技術的な制約・Kotlinの言語仕様を理解する必要があります。

・Kotlin 言語仕様を活用して可読性を維持しつつ意図したコード生成
・Single fileコーディングで十分なコンテキストを与えて、IDEの機能を使ってリファクタリング!
・Copilot Chatをコードリーディングに活用、実用的にするための一捻り

プレゼンテーションの構成
・LLMの原理原則から、できること・できないことの説明
・開発の流れに沿って活用のデモ
・Copilot Chatを活用して実用的なライブラリのコードリーディング

KotlinとGitHub Copilotを使った、未来のプログラミングスタイルを今日から始めましょう!

7
ロング(40分)
Webバックエンド/サーバサイド 中級者

Kotlinを用いたCQRS+ESマイクロサービスの実践

nrslib 成瀬允宣

これまでKotlinに触れてこなかったチームが、新規プロジェクトの言語選定でKotlinを採用し、SpringとAxonを用いて、疎結合でスケーラブルなマイクロサービスの構築を行った知見を共有します。

本セッションではプロジェクトで得られた知見をもとに、Kotlinを用いたCQRS+ESマイクロサービスを設計・実装する際のベストプラクティスを共有します。
また、マイクロサービスアーキテクチャを採用する利点や注意点などについてもお話します。

本セッションのトピックは次の通りです。
1.CQRS+ESアーキテクチャの概要と採用の背景
2.Spring BootとAxon Frameworkを用いたマイクロサービスの設計
3.Kotlinの言語特性を活かした実装
4.マイクロサービス間の連携とデータの整合性の確保
5.開発における課題と解決策
6.実際のプロジェクトでの応用事例と得られた知見

5
ロング(40分)
Webバックエンド/サーバサイド 中級者

徹底解説!Kotlin CoroutinesとSpring WebFluxを使ったサーバーサイドアプリケーション開発

be_hasee Hasebe

Spring 5.0にて登場したSpring WebFluxですが、Reactive Programmingが難しいためか実際の現場では採用が見送られるケースが多かったように思います。
現在はCoroutinesがサポートがされ、以前よりも採用しやすくなりました。しかし、国内ではまだまだ情報が少ないため、採用に至っていない人もいると思います。

そんな人の背中を後押しするような情報をご紹介しようと思います。
2017年から大規模な環境でSpring WebFluxを使っているため、運用観点のお話も交えてご紹介致します。

Spring WebFlux/Coroutinesの概要
Observabilityはどうするか
ThreadLocal(MDC等)との付き合い方
Micrometer Context Propagation
BlockHound
Virtual Threadsとの比較

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

Flow Quiz N問N答

清水大夢

皆さんFlowを理解しながら使っていますか? 私はかつてはずっと雰囲気で使っていました。

数あるオペレータを使いこなしていますか? 私はcollectLatestくらいしか使っていませんでした。

このセッションではFlowに関する短いクイズの出題とその解答、解説を行い、その中でFlowの重要な概念に関して説明していきます。

クイズは実際の開発現場でのユースケースを想定した内容となっています。

一緒にFlowと仲良くなりましょう。

6