どちらでも
Android 初級者

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

fumiyasac 酒井文也

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

また、始めた当初から約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
どちらでも
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
どちらでも
テスト 中級者

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

hiroaki08181359 Nosho Hiroaki

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

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

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

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

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

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

kaleidot725 Yusuke Katsuragawa

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

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

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

Kotlin coroutinesを使ってstructured concurrencyをマスターしよう

gotlinan George

「structured concurrency」とは日本語にすると「構造化された並行性」と呼ばれ、非同期処理を構造化して管理する概念です。
非同期処理を正しく構造化することで、安全にサービスのパフォーマンスを向上させることができます。
Kotlin coroutinesを深く理解して、一緒にstructured concurrencyをマスターしましょう。

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

どちらでも
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) との付き合い方・考え方
  • 導入に向けて、どのように画面要素から並行・並列処理可能性を導き出したのか
  • メトリクス・モニタリングの為の取り組み

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

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

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.
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の移行例の紹介

  • 本棚タブ
  • 単行本タブ
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
どちらでも
Android 中級者

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

experopero 北村 涼

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

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

探求!Kotlinコンパイラの限界に挑む

chigichan24 Kazuki Chigita

構文エラーではなくともコンパイラがエラーとして扱い、コンパイルできないコードがKotlinにはある。これはコンパイラの限界によるものである。
例えば、data class のプロパティは何個まで宣言できるだろうか?あるいは、true && true && ... と繋げられる限界は何個だろうか?
このセッションで、そんなコンパイラの限界を探求しようじゃないか。

セッションの概要は以下となる。

  1. Kotlinコンパイラの全体概要の紹介
  2. 例1 コンパイラのStack Overflowを回避する閾値の探求
  3. 例2 Backendによるコンパイラ挙動の違い<JVMによる制約>
  4. コンパイラの挙動の調べ方

ショートセッションでの採択の場合は、3と4の一部を省略する。このセッションを聞くことで、Kotlinコンパイラの内部構造と限界について理解を深めることができるだろう。

7
どちらでも
Webフロントエンド 上級者

Kotlinでも真面目にWebフロントエンド開発がしたい!kotlin-reactのはじめかた

yt8492 マヤミト

Compose for Webの登場により、Kotlin/JSの注目度も高まってきました。
さて、Compose for Webの登場以前からKotlin/JSでリッチなWebフロントエンドを行う手段がありました。それがkotlin-reactです。

このセッションでは、kotlin-reactを使ってどのようにWebフロントエンド開発を行うのかを解説します。

以下トピック

  • kotlin-reactの紹介
  • ライブラリの実装から紐解くkotlin-reactのしくみ
  • Kotlin + kotlin-reactでの開発をTypeScript + Reactでの開発と見比べながら理解する
  • 周辺ライブラリの紹介
  • kotlin-reactに対応していないReact周辺ライブラリを自力でKotlin/JSでラップする方法
どちらでも
ツール/エコシステム 中級者

Plugin development by Kotlin

mitohato14 mito

Kotlinを使ってIntellij IDEA向けのプラグインを開発する手法を紹介します。
実際にプラグイン開発する手順を詳細に紹介しつつ、実装に利用するクラスの役割も含めて解説することでセッションで紹介する題材以外のプラグイン開発にも役立つようになることを目指します。
現時点で題材として扱うプラグインでは、選択した範囲の文字列に対して加工して文字列を置き換えるという動作を行い、読み取りと書き込み両方をカバーします。

Kotlin言語自体の仕様には触れないため中級者向けにしていますが詳細に説明することで誰でも理解できるように努めます。

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

Convert Java Library to Kotlin Library

n_seki_ uwaseki

KotlinがAndroid開発の世界にやってきて早数年。もともとJavaで書かれていたライブラリのKotlin移行も加速度的に進んでいます。しかし実際にライブラリをKotlinに書き換えようとすると、意外にも考えるべきことが多いことに気付かされます。

このセッションではJavaで書かれたライブラリをKotlinに書き換える際に考慮したい・気をつけたいポイントを実例を交えて解説します。
互換性維持やKotlinのデータクラスを公開APIにする場合の注意点、Javaコードからの呼び出しの配慮など、今まさにKotlinへの書き換えを検討している開発者はもちろん、すでにKotlinのライブラリをメンテナンスしている開発者の方にも改善のヒントになるかもしれません。

より開発者フレンドリーなライブラリを作っていきませんか?

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

リリースノートから読み解くKotlinの歴史と思想

iNoma_main いのま

KotlinはJetBrains社によって2011年にそのコンセプトが公開されてから今日に至るまで、幾つものバージョンアップを重ねてきました。
バージョン毎に公開されるリリースノートは、当時どのような課題があり、Kotlinがそれをどう解決したかを読み解くことができる非常に面白い歴史的資料です。
ユーザ目線でリリースノートを眺めることで、Kotlinの言語仕様の変遷を追うと共に、Kotlinが重要視している思想や、Kotlinはどのような言語であると言えるのか、一次情報であるリリースノートを読むときのtipsなどについてお話しします。

以下、扱うトピック
・リリースノートを読むことの楽しさ
・Pragmaticである、とは
・実際に当時のリリースノートを眺めてみる

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

Amperを使って様々なKMPプロジェクトを構成

yoppie_x Yoshiya Maeda

Gradleのプラグインとして開発されたAmperというプロジェクトを構成するためのツールが登場しました。
Amperを使うことでスムーズにプロジェクトを構成することができ、さらに開発者体験も向上します。

本セッションはAmperに関する知見を共有します。
概要は以下です。

  • Amperは最近開発されたツールであるため、あまり親しみのない方に向けてAmperを解説
  • Amperを用いて様々な種類のKMPプロジェクトを構成するまでの知見を共有

トピックは以下を想定しています。

  • Amperの説明
  • module.yamlの書き方
  • Fleetで利用できるmodule.yamlに関するコードアシスタンス
  • Kotlin Multiplatformを構成
  • Compose Multiplatformを構成
  • Gradleを用いた既存のプロジェクトと統合する方法と、移行する方法
1
どちらでも
テスト 中級者

Kotlinで保守性が高く変更容易なテストを書こう

wooootack Kyosuke Awata

普段から自動テストを書いていく上で、以下のような悩みを持っている方は多いのではないでしょうか。

・実行するたびに結果が変わってしまう
・1箇所だけ修正したはずなのに、色々なところのテストが落ちる
・そもそもどれくらいテストを書くべきなのか分からない
など

このセッションではKotlin以外の言語でも使えるテスト設計全般的な話と、それをKotlinで具体的にどのように実現するのかをお話しします。
テストコードを負債にしないためのテクニックや考え方をお伝えできればと思います。

具体的なテーマの例
・観点が明確なテストを書こう
・不要なテストを減らそう
・モックの使い過ぎには注意

※ 取り扱わないテーマ
・E2Eテストに関すること
・実際にデータベースと接続して行う単体、結合テスト

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

KotlinでResultを取り扱う方法とライブラリ選定

mako_makok Makoto Kobayashi

KotlinにはJavaのように検査例外・非検査例外の区別はしません。
Java以外にも、他の言語にはエラーのハンドリングを強要させるような仕組みがありますが、Kotlinにはありません。
そのため、Kotlinにおける例外のthrowはすべて副作用となります。

このことから、Kotlinにおけるエラーハンドリングは多少工夫する必要があります。
そのための一つのテクニックとして、関数の戻り値にResult型という成功値もしくは失敗値を表現する型を利用する方法があります。
今回は、いくつかのライブラリの比較をしつつ、現場導入の際に考慮した事項と、実際にプロダクトへ導入した効果についてお話します。

9
どちらでも
Webバックエンド/サーバサイド 初級者

Kotlinで始めるMinecraftマルチサーバープラグイン開発

ken_kentan Kentaro Doi

Minecraftは世界で最も有名なサンドボックスゲームの一つであり、その魅力を拡張するのがマルチプレイサーバー上で動くプラグインです。
本セッションでは、Kotlinを利用してJava版Minecraftサーバーのためのプラグイン開発について取り上げます。
Kotlin初学者でも追いやすいよう、プラグイン開発の基礎から段階的にご紹介します。

  1. 開発環境の設定: Minecraftプラグイン開発に最適な開発環境の構築
  2. Minecraftサーバープラグイン開発の基礎: プラグインの基本的な構成要素、コマンド等の実装方法
  3. 実践的なプラグイン開発: コルーチンを使用した非同期処理など
  4. デプロイメント: Minecraftサーバーへのデプロイ方法

Kotlinを学びたい方、またはMinecraftプラグイン開発に興味のある開発者にとって有意義に学べる内容を目指しています。

3