Reduxはアプリケーションの状態管理のためのライブラリであり、主にJavaScriptで使用されるアーキテクチャパターンです。しかし、JavaScript以外の言語やプラットフォームでもReduxは有用です。本セッションでは、Androidアプリ開発においてKotlinのReduxライブラリであるReduxKotlinを活用したRedux導入アプローチを紹介します。
トピック
・Reduxアーキテクチャについて
・MVVMとの比較
・ReduxKotlinを用いたRedux導入アプローチ
Androidアプリ開発ではKotlinが使われるようになって久しいです。
Kotlinを使って開発を行っているならばKotlinが公式に用意してくれているkotlinxを使うと開発体験をより良くしていけると思います。
このセッションではAndroidアプリ開発で使えるkotlinxの紹介を行います。
Sansan株式会社のインボイス管理サービス「Bill One」では、サーバーサイドKotlinをフル活用しています。数年に渡って開発を継続する中で、コードの書き方をより良いものに変更したくなったり、大きく依存しているライブラリを別のものに変更したくなったりすることがあります。そんなとき、大規模かつ安全にコードを書き換えられるツールがあると、チームの開発を止めることなくスムーズにコードベースを改善できます。
本セッションでは、発表者が開発したコード変換ツールktcodeshiftと、Bill One開発におけるその活用例をご紹介します。変換スクリプトを書く際に必要なKotlinの抽象構文木(AST)の知識についても解説します。
本セッションを聴講することで、Kotlinのコードを大規模に書き換えるために使えるツールを知り、具体的な変換イメージを描くことができるようになります。
Kotlin Coroutines は2017年の実験的導入から始まり、2018年にはKotlin 1.3で安定版としてリリースされました。それ以来、コルーチンは多くの改善を経て、多様なプラットフォームとアプリケーションにおいて中心的な役割を果たしています。
Kotlin 2.0 が来る前に一度立ち止まって、これまでのKotlin Coroutines の歴史を振り返ります。
トピック
このセッションでは、KotlinのFlowデータをStateFlowに変換する戦略と方法を紹介します。
特に、この変換において重要な役割を果たす「SharingStarted」コンポーネントに焦点を当てて詳しく解説します。
セッションのハイライト
このセッションを通じて、参加者はFlowデータをStateFlowに変換する技術を効果的に習得し、活用するための知識を深めることができます。
昨今のWebアプリ開発において、Webブラウザは切っても切れない存在です。
このWebブラウザには、HTMLとCSSからテキストや画像を描画する「レンダリングエンジン」が含まれています。
これがどのような仕組みで動いているのか、その裏側についてはご存知でしょうか?
このトークでは、RobinsonというRust製簡易レンダリングエンジンをKotlinで実装することで、レンダリングエンジンの大まかな仕組みの理解を目指します。
また今回のトークで用いた、サンプルコードを他言語で再実装する勉強法も合わせてご紹介します。
このトークを聞き、レンダリングエンジンの裏側を垣間見ることで、Webアプリ開発におけるブラウザからの新たな視点を獲得できるでしょう。
初めてKMPに触れるAndroidエンジニアとiOSエンジニアがペアプロして既存プロジェクトの一機能をKMPで作り直してみました。
本セッションではその過程で気付いたメリットとデメリットや知見などを紹介したいと思います。
以下、トピックです。
このセッションでは、5年間にわたりKotlinで認証システムのバックエンドを開発・運用してきた経験を振り返ります。2019年からこのプロジェクトを開始し、段階的に実装と運用のステージに進んできた私たちの旅を共有したいと思います。
特に以下の点について深く掘り下げます:
セッションを通し、Kotlinのバックエンド開発に興味がある、あるいはKotlinのバックエンド開発プロジェクトを始めたばかりでまだ運用の知見がそれほど溜まっていないといった開発者の方々にとって有益な情報をお伝えしたいと思います。
Kotlinのビット演算使っていますか?
おそらく多くの方はKotlinの入門書で見かけた程度で、実際のプログラミングで使っている方は少ないかもしれません。
実際何に使うものなのか?使ったことが無い方にとっては想像しにくいものです。このセッションでは、元組み込みエンジニアで現Androidエンジニアの私がデバイスとの通信でビット演算を使ってみた経験についてお話します。
対象者
お話する内容
Android LintはAndroidプロジェクトの静的分析ツールとして登場しましたが、JavaとKotlin両方の分析を行えることから、GoogleではサーバサイドJavaとKotlinプロジェクトでも使用されています。
そんなAndroid Lintですが、その内部ではどのファイルが読み込まれていて、何がチェックがされているのかを本セッションで紹介します。
また、Lintをカスタムすることでコードの一貫性を保ち、プロジェクトでの人員の入れ替わりなどにも耐えうる実装例も併せて取り上げていきます。
このような内容で話を進めていきます。
すべてのKotlinプロジェクトで使用できるので、この機会に改めてAndroid Lintの理解を深めましょう。
直近のGoogle I/O でも注目されているARCoreと、それを支えるSceneViewを活用したAR実装について話したいと思います。
現状の構想
自社プロダクトのバックエンドを100% Kotlinでリニューアルしました。
プロダクトは、IOTデータ収集、ビッグデータ処理、SaaS Webシステムからなる中規模のものです。
PoCや新規テーマでの限定的活用ではなく、業務システムをフルスクラッチで開発した例として、
Kotlin採用でよかったことと苦労したことを中心に、実システム開発事例の共有としてお話しします。
・よかったこと、うまくいったこと
・基礎品質の向上 ケアレスミスの予防 実行時エラー起因の手戻りの少なさ
・アーキテクチャリファクタリング DDDの実践に必要不可欠
・概念モデル(データモデル)とコードの同期と調査のしやすさ
・ArchUnitの活用による全体構造の維持
・苦労していること
・ビルド時間短縮のために、プロジェクト分割している。
・値オブジェクトの実装 演算可能オブジェクト(数値類)が実装困難
私が担当するプロダクトでは、全社的に Ruby と Go を採用するプロジェクトが大多数な中、 Kotlin × Spring という新しい技術スタックを用いて開発がスタートしました。
なかなか社内に技術知見がない中でのスタートとなりましたが、その状況下でもエンジニアの実装と設計より、リリースから1年2ヶ月に至るまで大きなバグやインシデント無しで運用をしてくることができました。
そこで、このプロダクトを 2 年開発してくる中で、取り入れてよかった設計、または反省点などを共有・議論できればと考えております。
同じく 0-1 フェーズをこれから経験される方や、自分のプロダクト開発をより良くしていきたい方に向けて少しでも学びがある発表とできたら幸いでございます。
音声をKotlinで扱う方法について、基本的な考え方から実践的なテクニックまでを幅広く紹介します。
次に実践編として、Kotlinの各種ライブラリを活用した音声処理プログラミングに踏み込みます。
などを実際のコード例とデモを交えて紹介。Kotlinならではの簡潔で安全な記述で、音声プログラミングの敷居を大きく下げられることを示します。
Kotlinには様々な型が存在します。
その中の一つに、dynamicという型があるのをご存知でしょうか?
本セッションでは、dynamicという型について説明します。
そして、dynamic型で一体何ができるのか、
dynamic型の使い方やdynamic型を使うことのできる環境セットアップを説明します。
また、他言語での同様なdynamicの扱いとの比較などを絡めて、dynamic型が備える特性を活かしての利用シーンなどを検討していくセッションとなります。
現代では広く使われているKotlin言語ですが、2011年に公開されて以降、さまざまな発展を遂げてきました。
ソフトウェアは、利用者のニーズや開発環境の変化により日に日に「進化」します。ソフトウェア工学の研究分野においても、特に1990年代後半からソフトウェア進化は活発に議論され始め、今では研究手法、研究対象物、目的はさまざまです。中でも、SEV(Software Evolution Visualization)は、可視化を用いて対象とするソフトウェアの進化を分析するアプローチです。
このセッションでは、SEVの手法を用いてKotlinの進化を紐解きます。Kotlin開発当初の思想や目的、他の言語との関係についても触れつつ、可視化結果とその解釈を発表します。
Kotlin正式リリース後に追加されたKotlin Standard LibraryのAPIを、登壇者の独断と偏見でピックアップして紹介します。
2016年2月にKotlin 1.0が正式リリースされ、約8年が経ちました。正式リリース前から、趣味に、仕事にKotlinを使っていた方も多いのではないでしょうか?
一方でKotlin正式リリースから長い月日が経ち
という方もいるのではないでしょうか?
本セッションではそのような方をメインターゲットに、Kotlin正式リリース後に追加されたStandard LibraryのAPIを、登壇者の独断と偏見でピックアップして紹介します。
CameraXは、Android端末のカメラを操作する際に強力なライブラリである。
しかし、メモリやGPUのリソースが限られている端末や、サポートされていない外部カメラを搭載した端末でCameraXのライブラリを使う際には、注意が必要となる。
本セッションでは、AndroidOSを搭載したデジタルサイネージを用い、正しく広告を投影しているかを遠隔で撮影して確認できる保守システムを例に挙げ、メモリやGPUなどの制限のある環境下で外部カメラを制御する方法について解説を行う。
また、MLKitの顔認識をバックグラウンドで行う方法を例に挙げ、GPUの負荷を抑えた画像認識能方法についても説明する。GPUの負荷を抑えるため、撮影時以外は解像度を落として顔認識を行う方法や、メモリ内に画像を1枚のみ格納し、解析が終わった際に確実にメモリを解放することでメモリーリークを防ぐといった方法について紹介する。
対象
セッションの目標
この一年で生成AI・LLMを取り巻く環境は大きく変化し、今までAIに取り組んでいなかった企業・プロダクトも生成AI・LLMを用いた開発に取り組む例が増えた事を実感します。
しかし、世の中の事例はどうしてもPython環境が多く、KotlinでのLLMアプリケーション・機能開発に関しての情報は広く共有されていません。
例えば、Kotlin(JVM)環境でOpenAI APIにアクセスするためのライブラリはあるのでしょうか?どうしてもPythonでないと出来ないことは何でしょう?
本セッションでは、サーバーサイド言語としてKotlinを採用している企業・プロダクトでLLMに取り組んだ一年の体験談・悩みも交えながら、
KotlinでLLMアプリケーション・機能開発を取り巻く環境や、実際にどのような構成・考え方で取り組んだかについて紹介します。