初めて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正式リリース後に追加された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アプリケーション・機能開発を取り巻く環境や、実際にどのような構成・考え方で取り組んだかについて紹介します。
Kotlinでdata class宣言を行うとequalsやhashCode, componentNなど、便利なメソッドが自動的に生成されます。
自動生成メソッドの中にcopyというメソッドがありますが、このメソッドは非常に便利な反面、利用シーンを間違えると不整合データが簡単に作れてしまうなどデメリットも併せ持っています。
今回は、copyメソッドとの付き合い方と、アーキテクチャテストでの解決方法についてお話します。
現在SpringBootとKotlinで開発しています。
以前SpringBootの2系 -> 3系にアップデートをした際、周辺ライブラリの見直しも一緒に行いました。
実際悪戦苦闘した結果と、今改めてKotlin + SpringBootで開発するならどういうミドルウェアの選定を行うか?
について自分の考えをお話します。
私たちベンチャー企業がサーバーサイド言語にKotlinを採用するメリットについて、「ビジネスモデル」「採用」「育成」の観点からお話します。
このセッションは、私たちならではの視点を多分に盛り込んだものとなる予定です。
私は言語選定と組織の戦略は密接に関わるものだと思っています。
まず、私たちのビジネスモデルを簡単にご紹介します。
そのうえで、そのビジネスモデルを実現するためにはどんな人を採用して育成していきたいかをお話します。
その中でKotlinが有用であると思える点についてお伝えします。
もし他の組織であればどの言語を選択していたか、など別の言語についても少しだけ言及したいと考えています。
興味を持っていただけると嬉しいです。
よろしくお願いいたします。
DSL(Domain Specific Language)とは、特定の問題領域に特化して設計された言語のことです。
Kotlinの言語機能を活用すると、開発者は自身のニーズに合わせたDSLを容易に作成できます。
これによりプログラミングの生産性とコードの品質を大きく向上させることができます。
このセッションでは、HTMLをテーマにゼロからDSLを構築します。
より具体的には、ラムダ式、レシーバ付きラムダ、拡張関数を用いて、型安全なHTMLビルダーを作成します。
Kotlin初心者でもすぐに取り組めるDSLの基本から応用までを実践します。
JetpackComposeを使ったアプリケーション開発はAndroidは勿論のこと、iOSやデスクトップアプリ、Webアプリも開発可能となっています。
その中唯一Web向けのものは以前はDom操作を行う形で実現されていました。
2022年頃に新しくskiaを利用した描画方式が登場し、Webでも他のプラットフォームと同様の仕組みでのUI描画が可能になりました。
このセッションではそんなCompose for Webがどんな仕組みで動いているかを簡単に見つつ、小規模なWebアプリ構築のTipsを段階を追って紹介します。
モバイルアプリ開発は日々進化している状況ですが、Android/iOSの仕様差異、いつまでも定まらないバックエンドなど未だ現場には課題が山積みです。
私はKotlinFest2019でKMPと出会い、その可能性に衝撃を受けました。これまで抱えてきた様々な課題を解決できるのではないか、と。
その後、社内でKMP導入に向けた共有会や技術調査を実施して、新規サービスの開発にてKMPの導入を実現化し、無事リリースまで成し遂げることができました。
本セッションでは、そんな私の体験談を交えながら、