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

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

yyh_gl Yusuke Honda

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

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

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

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

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

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

yyh_gl Yusuke Honda

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

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

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

8
どちらでも
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の移行例の紹介

  • 本棚タブ
  • 単行本タブ
9
どちらでも
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マンガの実例を交えて発表します。

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

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

kako_351 kako

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

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

2
ショート(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の魅力をさらに深く掘り下げます。

13
ショート(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
ショート(20分)
Kotlin言語・プログラミング 初級者

FlowからStateFlowへの変換:戦略と最適な活用法

Hand-Tomi

このセッションでは、KotlinのFlowデータをStateFlowに変換する戦略と方法を紹介します。
特に、この変換において重要な役割を果たす「SharingStarted」コンポーネントに焦点を当てて詳しく解説します。

セッションのハイライト

  • FlowとStateFlowの違いと基本的な理解
  • StateFlowへの変換の理由
  • FlowからStateFlowへの具体的な変換戦略
  • SharingStartedの詳細な分析
  • ケーススタディと問題解決

このセッションを通じて、参加者はFlowデータをStateFlowに変換する技術を効果的に習得し、活用するための知識を深めることができます。

2
ショート(20分)
Kotlinの活用事例(仕事や学業など) 初級者

WebブラウザのレンダリングエンジンをKotlinで再実装する

yasuaki640 yasuaki640

昨今のWebアプリ開発において、Webブラウザは切っても切れない存在です。
このWebブラウザには、HTMLとCSSからテキストや画像を描画する「レンダリングエンジン」が含まれています。

これがどのような仕組みで動いているのか、その裏側についてはご存知でしょうか?

このトークでは、RobinsonというRust製簡易レンダリングエンジンをKotlinで実装することで、レンダリングエンジンの大まかな仕組みの理解を目指します。
また今回のトークで用いた、サンプルコードを他言語で再実装する勉強法も合わせてご紹介します。

このトークを聞き、レンダリングエンジンの裏側を垣間見ることで、Webアプリ開発におけるブラウザからの新たな視点を獲得できるでしょう。

  • 対象の方
    • Webブラウザの仕組みに興味がある方
    • Kotlinでなにか書きたいけど作りたいものがない方
1
ショート(20分)
KMP(Kotlin Multiplatform) 初級者

AndroidエンジニアとiOSエンジニアがペアプロでKMP導入して得た気づき

ikeda

初めてKMPに触れるAndroidエンジニアとiOSエンジニアがペアプロして既存プロジェクトの一機能をKMPで作り直してみました。
本セッションではその過程で気付いたメリットとデメリットや知見などを紹介したいと思います。

以下、トピックです。

  • Androidエンジニア視点でのKMPのメリットデメリット
  • iOSエンジニア視点でのKMPのメリットデメリット
  • 共通化が難しいポイント
  • KMP導入にあたり、つまずきやすいポイント
ショート(20分)
Webバックエンド/サーバサイド 中級者

Kotlinバックエンドによる認証システムのフルリニューアル: 5年間のあゆみ

yu_rano Yuya Urano

このセッションでは、5年間にわたりKotlinで認証システムのバックエンドを開発・運用してきた経験を振り返ります。2019年からこのプロジェクトを開始し、段階的に実装と運用のステージに進んできた私たちの旅を共有したいと思います。

特に以下の点について深く掘り下げます:

  • バックエンド開発でKotlinを採用するにあたり、初期段階で実施したこと
  • Kotlinのバックエンド採用による成功事例と有益な点
  • Kotlinを採用して期待外れだったこと、解決されていない問題や改善点
  • チームの成長に伴うKotlinの特徴を活かした実装への変遷

セッションを通し、Kotlinのバックエンド開発に興味がある、あるいはKotlinのバックエンド開発プロジェクトを始めたばかりでまだ運用の知見がそれほど溜まっていないといった開発者の方々にとって有益な情報をお伝えしたいと思います。

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

元組み込みエンジニアがKotlinのビット演算を使ってみた

kharada_bt Kenta Harada

Kotlinのビット演算使っていますか?
おそらく多くの方はKotlinの入門書で見かけた程度で、実際のプログラミングで使っている方は少ないかもしれません。
実際何に使うものなのか?使ったことが無い方にとっては想像しにくいものです。このセッションでは、元組み込みエンジニアで現Androidエンジニアの私がデバイスとの通信でビット演算を使ってみた経験についてお話します。

対象者

  • Kotlinでバイナリを扱ってみたい方
  • BLE/USB/NFCなどでデバイスと通信するコードを書く方

お話する内容

  • 通信プロトコルの基本。デバイスとバイナリで通信する方法
  • ビット演算でデータを作る、値を取り出す方法
  • Kotlinでビット演算する時に使うテクニック
  • C言語のビット演算とKotlinのビット演算の違い
3
ショート(20分)
Android 中級者

Android Lintの理解を深め、Custom Lintでプロジェクトの保守性を高めよう!

yanmar_y2mtk yanmar

Android LintはAndroidプロジェクトの静的分析ツールとして登場しましたが、JavaとKotlin両方の分析を行えることから、GoogleではサーバサイドJavaとKotlinプロジェクトでも使用されています。

そんなAndroid Lintですが、その内部ではどのファイルが読み込まれていて、何がチェックがされているのかを本セッションで紹介します。
また、Lintをカスタムすることでコードの一貫性を保ち、プロジェクトでの人員の入れ替わりなどにも耐えうる実装例も併せて取り上げていきます。

  • Android Lintを詳しく知る
  • Lintがチェックしているファイルタイプと処理
  • Custom Lintの実装とテスト

このような内容で話を進めていきます。
すべてのKotlinプロジェクトで使用できるので、この機会に改めてAndroid Lintの理解を深めましょう。

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

ARアプリをKotlin+JetpackComposeで作ってみよう!

shiosioco40 ichimura

直近のGoogle I/O でも注目されているARCoreと、それを支えるSceneViewを活用したAR実装について話したいと思います。

現状の構想

  • 今ARを作るとしたら、どのツールが使えるか
  • ARCoreとSceneViewについて
  • 実装しよう
1
ショート(20分)
Kotlinの活用事例(仕事や学業など) 中級者

サーバサイド Kotlin によるプロダクトフルリニューアル

高橋明生

自社プロダクトのバックエンドを100% Kotlinでリニューアルしました。
プロダクトは、IOTデータ収集、ビッグデータ処理、SaaS Webシステムからなる中規模のものです。
PoCや新規テーマでの限定的活用ではなく、業務システムをフルスクラッチで開発した例として、
Kotlin採用でよかったことと苦労したことを中心に、実システム開発事例の共有としてお話しします。

・よかったこと、うまくいったこと
 ・基礎品質の向上 ケアレスミスの予防 実行時エラー起因の手戻りの少なさ
 ・アーキテクチャリファクタリング DDDの実践に必要不可欠
 ・概念モデル(データモデル)とコードの同期と調査のしやすさ
 ・ArchUnitの活用による全体構造の維持
・苦労していること
 ・ビルド時間短縮のために、プロジェクト分割している。
 ・値オブジェクトの実装 演算可能オブジェクト(数値類)が実装困難

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

0-1フェーズの Kotlin × Spring なプロジェクトでバグを産まないために採用してよかった知見を共有するよ

sugoikondo 近藤 豊峰

私が担当するプロダクトでは、全社的に Ruby と Go を採用するプロジェクトが大多数な中、 Kotlin × Spring という新しい技術スタックを用いて開発がスタートしました。
なかなか社内に技術知見がない中でのスタートとなりましたが、その状況下でもエンジニアの実装と設計より、リリースから1年2ヶ月に至るまで大きなバグやインシデント無しで運用をしてくることができました。
そこで、このプロダクトを 2 年開発してくる中で、取り入れてよかった設計、または反省点などを共有・議論できればと考えております。
同じく 0-1 フェーズをこれから経験される方や、自分のプロダクト開発をより良くしていきたい方に向けて少しでも学びがある発表とできたら幸いでございます。

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

人生初めてのKotlinプロジェクトで毎秒50万プッシュ通知を処理した件について

trustin Trustin Lee

新年0時になると、人々はそれぞれの心を込めて大切な家族や友人にメッセージを送ります。LINEのメッセンジャーサーバーは、その心を伝えるために、APNsやFCMのプッシュ通知サーバーに多数のリクエストを送信します。毎年毎年プッシュ通知を処理してきましたが、2024年はKotlinで新規作成したサーバーがかなりの数のプッシュ通知を処理したという点が特別な年でした。 本発表では、Java開発はベテランですが、Kotlin開発は初めての立場で、大容量・高性能サーバーを開発した経験を以下の視点で共有します。

  • Java開発者が知っておくべきKotlinの特徴と機能
  • Jacksonユーザーのためのkotlin-serialization導入の話
  • Kotlin suspended functionとJavaの非同期APIとの共存について
  • APNsに安定的にプッシュ通知を送信する秘訣
5