構文エラーではなくともコンパイラがエラーとして扱い、コンパイルできないコードがKotlinにはある。これはコンパイラの限界によるものである。
例えば、data class のプロパティは何個まで宣言できるだろうか?あるいは、true && true && ... と繋げられる限界は何個だろうか?
このセッションで、そんなコンパイラの限界を探求しようじゃないか。
セッションの概要は以下となる。
ショートセッションでの採択の場合は、3と4の一部を省略する。このセッションを聞くことで、Kotlinコンパイラの内部構造と限界について理解を深めることができるだろう。
Compose for Webの登場により、Kotlin/JSの注目度も高まってきました。
さて、Compose for Webの登場以前からKotlin/JSでリッチなWebフロントエンドを行う手段がありました。それがkotlin-reactです。
このセッションでは、kotlin-reactを使ってどのようにWebフロントエンド開発を行うのかを解説します。
以下トピック
Kotlinを使ってIntellij IDEA向けのプラグインを開発する手法を紹介します。
実際にプラグイン開発する手順を詳細に紹介しつつ、実装に利用するクラスの役割も含めて解説することでセッションで紹介する題材以外のプラグイン開発にも役立つようになることを目指します。
現時点で題材として扱うプラグインでは、選択した範囲の文字列に対して加工して文字列を置き換えるという動作を行い、読み取りと書き込み両方をカバーします。
Kotlin言語自体の仕様には触れないため中級者向けにしていますが詳細に説明することで誰でも理解できるように努めます。
KotlinがAndroid開発の世界にやってきて早数年。もともとJavaで書かれていたライブラリのKotlin移行も加速度的に進んでいます。しかし実際にライブラリをKotlinに書き換えようとすると、意外にも考えるべきことが多いことに気付かされます。
このセッションではJavaで書かれたライブラリをKotlinに書き換える際に考慮したい・気をつけたいポイントを実例を交えて解説します。
互換性維持やKotlinのデータクラスを公開APIにする場合の注意点、Javaコードからの呼び出しの配慮など、今まさにKotlinへの書き換えを検討している開発者はもちろん、すでにKotlinのライブラリをメンテナンスしている開発者の方にも改善のヒントになるかもしれません。
より開発者フレンドリーなライブラリを作っていきませんか?
音声をKotlinで扱う方法について、基本的な考え方から実践的なテクニックまでを幅広く紹介します。
次に実践編として、Kotlinの各種ライブラリを活用した音声処理プログラミングに踏み込みます。
などを実際のコード例とデモを交えて紹介。Kotlinならではの簡潔で安全な記述で、音声プログラミングの敷居を大きく下げられることを示します。
KotlinはJetBrains社によって2011年にそのコンセプトが公開されてから今日に至るまで、幾つものバージョンアップを重ねてきました。
バージョン毎に公開されるリリースノートは、当時どのような課題があり、Kotlinがそれをどう解決したかを読み解くことができる非常に面白い歴史的資料です。
ユーザ目線でリリースノートを眺めることで、Kotlinの言語仕様の変遷を追うと共に、Kotlinが重要視している思想や、Kotlinはどのような言語であると言えるのか、一次情報であるリリースノートを読むときのtipsなどについてお話しします。
以下、扱うトピック
・リリースノートを読むことの楽しさ
・Pragmaticである、とは
・実際に当時のリリースノートを眺めてみる
Kotlinには様々な型が存在します。
その中の一つに、dynamicという型があるのをご存知でしょうか?
本セッションでは、dynamicという型について説明します。
そして、dynamic型で一体何ができるのか、
dynamic型の使い方やdynamic型を使うことのできる環境セットアップを説明します。
また、他言語での同様なdynamicの扱いとの比較などを絡めて、dynamic型が備える特性を活かしての利用シーンなどを検討していくセッションとなります。
Kotlin Multiplafromに対応したライブラリは数多くあります。新しいライブラリだけでなく、途中からKotlin Multiplafromに対応したライブラリもあります。
Android JetpackはAndroid開発における公式が提供するライブラリ群ですが、JetpackでもMultiplatform対応が進んでいます。
これにより、AndroidアプリをMultiplatformアプリに進化できる可能性が出てきました。
このセッションでは、いくつかのライブラリを用いたAndroidアプリを用意し、そのアプリをMultiplatformに進化させていく過程を紹介します。
その中で気をつけるべきポイントや、ハマりどころ、実用性や将来性についても話します。
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枚のみ格納し、解析が終わった際に確実にメモリを解放することでメモリーリークを防ぐといった方法について紹介する。
Gradleのプラグインとして開発されたAmperというプロジェクトを構成するためのツールが登場しました。
Amperを使うことでスムーズにプロジェクトを構成することができ、さらに開発者体験も向上します。
本セッションはAmperに関する知見を共有します。
概要は以下です。
トピックは以下を想定しています。
対象
セッションの目標
この一年で生成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で開発するならどういうミドルウェアの選定を行うか?
について自分の考えをお話します。
普段から自動テストを書いていく上で、以下のような悩みを持っている方は多いのではないでしょうか。
・実行するたびに結果が変わってしまう
・1箇所だけ修正したはずなのに、色々なところのテストが落ちる
・そもそもどれくらいテストを書くべきなのか分からない
など
このセッションではKotlin以外の言語でも使えるテスト設計全般的な話と、それをKotlinで具体的にどのように実現するのかをお話しします。
テストコードを負債にしないためのテクニックや考え方をお伝えできればと思います。
具体的なテーマの例
・観点が明確なテストを書こう
・不要なテストを減らそう
・モックの使い過ぎには注意
※ 取り扱わないテーマ
・E2Eテストに関すること
・実際にデータベースと接続して行う単体、結合テスト
KotlinにはJavaのように検査例外・非検査例外の区別はしません。
Java以外にも、他の言語にはエラーのハンドリングを強要させるような仕組みがありますが、Kotlinにはありません。
そのため、Kotlinにおける例外のthrowはすべて副作用となります。
このことから、Kotlinにおけるエラーハンドリングは多少工夫する必要があります。
そのための一つのテクニックとして、関数の戻り値にResult型という成功値もしくは失敗値を表現する型を利用する方法があります。
今回は、いくつかのライブラリの比較をしつつ、現場導入の際に考慮した事項と、実際にプロダクトへ導入した効果についてお話します。
Minecraftは世界で最も有名なサンドボックスゲームの一つであり、その魅力を拡張するのがマルチプレイサーバー上で動くプラグインです。
本セッションでは、Kotlinを利用してJava版Minecraftサーバーのためのプラグイン開発について取り上げます。
Kotlin初学者でも追いやすいよう、プラグイン開発の基礎から段階的にご紹介します。
Kotlinを学びたい方、またはMinecraftプラグイン開発に興味のある開発者にとって有意義に学べる内容を目指しています。