どちらでも
テスト 中級者

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の魅了を紹介していきます!

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

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

yanewm Yan Zhulanow

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

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

どちらでも
デスクトップ 初級者

Kotlinでデスクトップアプリを作ろう : Compose Multiplatformで広がるデスクトップアプリ開発の未来

kaleidot725 Yusuke Katsuragawa

KotlinではCompose Multiplatformと呼ばれる最新の宣言型UIフレームワークを利用できます。
Compose Multiplatformを利用することで、Kotlinで容易にデスクトップアプリを開発できる環境が整っています。

本セッションはKotlinとCompose Multiplatformを利用したデスクトップアプリ開発を初めてみたい
初学者の方に向けて以下の項目に沿ってアプリ開発の進め方を解説していきます。

  • どのような環境で開発をするか
  • どのようなアーキテクチャにするか
  • どのようなライブラリを利用するか
  • どのように画面(UI)を実装していくか
    • ライトテーマ・ダークモード対応、HTTP通信・DB(SQLight)を利用した画面の作り方など
  • どのようにアプリをリリースするか
どちらでも
Kotlin言語・プログラミング 中級者

Kotlin coroutinesを使ってStructured Concurrencyをマスターしよう

gotlinan George

「structured concurrency」とは日本語にすると「構造化された並行性」と呼ばれ、非同期処理を構造化して管理する概念です。
Kotlin coroutinesを深く理解して、よりパフォーマンスの良いサービス開発を目指してみましょう。

本セッションで話すこと
・Coroutine Contextについて
・structured concurrencyについて
・coroutinesにおけるエラーの扱いと伝搬について
・coroutinesにおけるキャンセルの扱いと伝搬について
・いくつかのユースケースを踏まえた、structured concurrencyの実装の紹介

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

Kotlinを用いたDSL的な設計手法と使用上の注意

kohii00 Kohei Ishikawa

この発表では、Kotlinのコードでドメイン上の意図や意味を表現するテクニックとして、DSL(のような)手法を紹介します。
ビジネスロジックをDSLとして実装することでコードの意図や構造を明確に表現でき、可読性や保守性が向上します。一方で、設計には常にトレードオフがあるため上手に設計判断を行う必要があります。

発表ではKotlinの言語機能を活用したコード例を示しながら、設計の考え方やトレードオフについて話します。
さらに株式会社ヘンリーでの事例も紹介し、DSLを活用する際の留意点を共有することで、聴講者がこのような設計を行う際の指針を得られることを目指します。

どちらでも
Kotlinの活用事例(仕事や学業など) 中級者

Coroutine in Server, モジュール化された LINEマンガの起動タブ API の3倍高速化事例を通して

kazuki_matsuda Kazuki Matsuda, 松田一樹

LINEマンガアプリにおいて、重要な API である起動タブ API について、Kotlin Coroutine を前提とした並列化・最適化を行い3倍の高速化を実現したので、その紹介をさせてください。

Kotlin が提供する Null safety 等の機能のおかげで、エンジニアは設計(やりたいこと)をより明確でミスのない形でコード(実装)として記入できるようになりました。
今回、LINEマンガでは Coroutine を利用して、アプリ起動時に呼び出される重要 API を3倍以上高速化する事に成功しました。

  • Redis (Netty Thread Pool) / JDBC (Blocking IO) との付き合い方・考え方
  • 導入に向けて、どのように画面要素から並行・並列処理可能性を導き出したのか
  • メトリクス・モニタリングの為の取り組み

等について紹介させて下さい。

4
どちらでも
ミドルウェア/フレームワーク 中級者

Kotlin Server Side 時代の OR Mapper 比較 - 越えろ!null safety の地平線

kazuki_matsuda Kazuki Matsuda, 松田一樹

KotlinはJavaを継承した言語処理系で有り、多くのライブラリ資産を利用できます。OR Mapper もその例外ではなく、高品質なLibraryをそのまま利用できます。

ORMが担当する部分は一般的にシステム境界として問題が出やすい部分であり、
この問題の多くは、型の問題として表れます(フィールド名や型とプログラム上の不一致)。

Kotlinで、これをもっと賢く(コードを書かずに、あるいは書いても早期に発見できるように)ならないかという疑問をもって、改めて2024年最新の有名LibraryのKotlin上の挙動を調べて見ました。
Libraryには、Kotlin Nativeを自称するものや、Java時代のものが含まれます。

Keyword

  • SQL を直接(書こうと思えば)書けるか?
  • Null 安全か? 失敗するとしたらいつ?
  • ULong support.
4
ショート(20分)
Kotlin言語・プログラミング 中級者

Detektのカスタムルール作成入門

Yushi Okoda

DetektはKotlinの静的解析ツールであり、コード品質を担保するためのルールを提供しています。
しかし、開発をしていると、既存のルールだけではカバーしきれない場面も出てくるのではないでしょうか?
(例えば、Modifier.Paddingの引数の順番をstart/top/end/bottomに統一するなど)

このセッションでは、Detektのカスタムルールを作成する方法に焦点を当て、具体的な手順を示します。

現状の発表の内容の構想は以下のとおりです

  1. Detektの概要
  2. カスタムルールの作成手順
  3. カスタムルールのテスト方法
  4. カスタムルールの実際の適用方法
4
どちらでも
Kotlin言語・プログラミング 中級者

Kotlin sealed classを用いた、ユーザーターゲティングDSL(専用言語)と実環境で秒間1,000万評価を行う処理系の事例紹介

kazuki_matsuda Kazuki Matsuda, 松田一樹

サービスの体験をパーソナライズし、興味のあるコンテンツを楽しんで貰うためには、
各種クリエイティブ(バナー・ポップアップ等)のターゲティング(by 年代、性別、OS、etc)が欠かせません。

最初は個別に実装する事が多いですが、露出面nとターゲティング条件mが増えた場合、O(n x m) の実装・メンテナンスコストがかかってしまい、共通化が必要となります。

今回の発表は、新規作成された共通化Platform上における課題:『マーケターを初めとする全社員が、ユーザーの条件やその AND/OR/NOT の任意の組み合わせによるターゲティングを可能とする』を、
Kotlin で実装した YAML ベースのユーザーターゲティングDSL(独自言語)とその処理系によって解決した事例の紹介となります。

安定的な拡張を行うためにKotlinの型が果たす役割についても取り上げます。

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

意外な落とし穴? 気をつけるべき日時情報の扱い方

yyh_gl Yusuke Honda

Kotlin(Java)では日時情報を簡単に扱うためのAPIが多く提供されています。
簡単に扱えるがゆえに間違った使い方をすると、思わぬ不具合を引き起こします。

本セッションでは、業務で実際に発生した日時情報に関する不具合を紹介し、
その不具合を通して弊チーム内でどのような対策をしているのか話します。

トピックは以下のとおりです。

・Kotlinの日時に関する機能を紹介
→ kotlinx-datetimeの紹介
→ Javaとの違いはある?
・業務で実際に起きた不具合の紹介
・日時情報に関するチーム内ルール
→ 日時情報の表現方法
→ 期間の扱い方

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

Kotlin Language Specificationを読もう ~ Keywordから入門する言語仕様の世界~

yyh_gl Yusuke Honda

多くのプログラミング言語は、Language Specification(言語仕様)がドキュメント化されており、だれでも閲覧できます。
Kotlinも例外ではありません。
言語仕様を読むことで、その言語に対する理解が深まり、知らなかった機能を発見することもあります。
しかし、言語仕様=とっつきにくいものと感じている人も多いのではないでしょうか。

本発表では、Kotlin Language Specificationで定義されているKeyword(予約語)を取り上げます。
いっしょにKeywordを見ていく中で言語仕様を読み解く楽しさを共有できればと思います。

トピック
・Language Specification とは
・KotlinのKeyword(予約後)を見てみる
→ Keywordをいくつか取り上げて深堀り
・Keywordについて読み、言語仕様を学ぶ意義(=楽しさ)を考える

6
どちらでも
Kotlinの活用事例(仕事や学業など) 中級者

Road to Kotlin 〜10年間続くPerl運用からの脱却〜

hiroshinagai

LINEマンガは2013年4月に公開されました。当初サーバーサイドはPerl言語で開発していましたが、今ではPerlを採用するメリットが少なくなりました。そこで2018年にJava言語への移管プロジェクトが立ち上がりました。

本発表ではLINEマンガのPerl to Java移行プロジェクトを中心に、移行中に見つかった課題や解決方法を紹介します。

なぜKotlinを選んだのか

  • 移行先の言語をJavaからKotlinに変更した経緯

LINEマンガはどうやってメンテナンス無しでPerlからKotlinに移行しているのか

  • gatewayサーバーを通したPerl/Javaサーバーの割り振り
  • 同時進行するプロジェクトとの調整
  • PerlとKotlinのレスポンス比較
  • AIの活用

実際のAPIの移行例の紹介

  • 本棚タブ
  • 単行本タブ
7
どちらでも
Webバックエンド/サーバサイド 中級者

50人規模の並列開発を支えるKotlinとリアルタイムなconfiguration deliveryによるfeature flag

omelette_alpaca Akito Ono

キーワード: 「backend」 「feature flag」 「Spring Boot」 「Central Dogma」

対象者:

  • 日々ビルド時間に悩まされている人
  • 並行開発のコンフリクトがつらい人 
  • feature flagの導入を検討 or 上手くいかなかった人

2024年現在、KotlinとSpring Bootは、backend開発で最も優れた選択肢の1つです。
しかし、JVMのビルドは、Opsでしばしばボトルネックになります。
また、そこにチームの拡大が加わると、並行開発のコンフリクトは指数関数的に増大します。

そこで、本セッションでは、これらを一挙に解決する

  • Kotlin/Central Dogmaによるfeature flagの実現
  • 50人規模のチームでの実運用
  • 遭遇した問題とその解決

について、 LINEマンガの実例を交えて発表します。

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

ReduxKotlinで始めるAndroidアプリ開発におけるReduxアーキテクチャ

kako_351 kako

Reduxはアプリケーションの状態管理のためのライブラリであり、主にJavaScriptで使用されるアーキテクチャパターンです。しかし、JavaScript以外の言語やプラットフォームでもReduxは有用です。本セッションでは、Androidアプリ開発においてKotlinのReduxライブラリであるReduxKotlinを活用したRedux導入アプローチを紹介します。

トピック
・Reduxアーキテクチャについて
・MVVMとの比較
・ReduxKotlinを用いたRedux導入アプローチ

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

Androidアプリのためのkotlinx

urotarou urotarou

Androidアプリ開発ではKotlinが使われるようになって久しいです。
Kotlinを使って開発を行っているならばKotlinが公式に用意してくれているkotlinxを使うと開発体験をより良くしていけると思います。
このセッションではAndroidアプリ開発で使えるkotlinxの紹介を行います。

どちらでも
Android 中級者

弊社が Flutter を捨ててネイティブ化(Swift / Kotlin)にコミット完了した話

experopero 北村 涼

弊社では既存の Flutter アプリケーションから、Android(Kotlin) / iOS(Swift) ネイティブアプリケーションへの移行を完了させました。
Flutter は内製アプリではなかったため、外注アプリケーションをネイティブアプリケーションとして内製化した形になります。
この内製化にはさまざまな問題が発生し、その対処にかなりの労力を要しました。
ここでは Android(Kotlin) 移行プロジェクトによって発生した問題と、その対処について発表します。

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

Kotlin compiler のコードを探検しよう!

eduraaa ezura

Kotlinはオープンソースソフトウェアとして公開されており、誰もが自由に閲覧し、貢献することが可能です。その心臓部であるコンパイラも例外ではありません。

多くの開発者が日常的に使用しているにもかかわらず、その内部実装を詳しく知る機会はそれほど多くありません。
しかし、ちょっとした好奇心でコンパイラのコードを覗いてみるだけで、新しい発見がありとても楽しいです!

このセッションでは、私たちの身近なもの、例えば予約語を起点として、Kotlinコンパイラのコードを読み進めてみます。
私たちが書いたコードがどのようなプロセスを経て変換されるのか、コンパイラのコードを追いかけながら一緒に探求してみましょう。
この旅を通じて、コンパイラのコードの読み方、そしてKotlinの魅力をさらに深く掘り下げます。

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

大規模コードベースを一気に書き換え ー Kotlinコード変換ツールktcodeshiftの活用

orangain Kota Kato

Sansan株式会社のインボイス管理サービス「Bill One」では、サーバーサイドKotlinをフル活用しています。数年に渡って開発を継続する中で、コードの書き方をより良いものに変更したくなったり、大きく依存しているライブラリを別のものに変更したくなったりすることがあります。そんなとき、大規模かつ安全にコードを書き換えられるツールがあると、チームの開発を止めることなくスムーズにコードベースを改善できます。

本セッションでは、発表者が開発したコード変換ツールktcodeshiftと、Bill One開発におけるその活用例をご紹介します。変換スクリプトを書く際に必要なKotlinの抽象構文木(AST)の知識についても解説します。

本セッションを聴講することで、Kotlinのコードを大規模に書き換えるために使えるツールを知り、具体的な変換イメージを描くことができるようになります。

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

振り返る Kotlin Coroutines の歴史とこれから

OK4D4 岡田 慶吾

Kotlin Coroutines は2017年の実験的導入から始まり、2018年にはKotlin 1.3で安定版としてリリースされました。それ以来、コルーチンは多くの改善を経て、多様なプラットフォームとアプリケーションにおいて中心的な役割を果たしています。
Kotlin 2.0 が来る前に一度立ち止まって、これまでのKotlin Coroutines の歴史を振り返ります。

トピック

  • 最初期の Coroutines について
  • 安定版での変化について
  • StateFlowとSharedFlowの登場
  • Flowを使用したステートレスなUI
2