iOS/Androidのネイティブアプリを並行して開発する場合は、SwiftとKotlinの様な言語の違いをはじめ、様々な違いを理解し、見極めながら進めていく必要があります。そして、双方を効率良く理解するために、違いをネガティブに捉えず、共通点や相違点等を上手に紐解く姿勢も重要です。
本発表ではKotlinでの実装を中心に据える前提で、Swift(iOS)と比較した際における、「1. UI実装・Layout処理の違いを見極める / 2. Swift・Kotlinを用いた実装における共通点や類似点を探し出す / 3. iOS・Androidで明確に異なるポイントを知る」ためのヒントを事例を含めて解説します。
開発を通して得られた過程や着眼点に加え、同様または似た形の機能やUI実装を要件〜具体へブレイクダウンする際のプロセスや解法アプローチについても、具体例を交え紹介する予定です。
多くのKotlinプログラマが、バリデーションに関する安全性と保守性を高くするためのより良い方法を模索していらっしゃるのではないでしょうか。
そのような方向けに、Kotlinの言語の持つ機能やライブラリを用いたテクニックを紹介しつつ、どのような目的で使うのが良いかについて、コード例を示しながらお話していきます。
また、Kotlin 2.0で正式リリースされるContext Receiver機能によって可能になることについても触れたいと考えています。
おおよそこのようなことを目次として話すことになる予定でいます。
※ ショートセッションとなった場合は③または④の内容が中心になります
① コンストラクタについておさらい
② スマートコンストラクタとResult/Either型
③ バリデーションDSLの実装
④ Context Receiverの解説と使い所
よろしくお願いします。
GitHub Copilotにより、世の中のプログラミングは劇的に進化しました。 LLMの力を使いコード生成、爆速開発できます。
より使いこなすには、LLMの技術的な制約・Kotlinの言語仕様を理解する必要があります。
・Kotlin 言語仕様を活用して可読性を維持しつつ意図したコード生成
・Single fileコーディングで十分なコンテキストを与えて、IDEの機能を使ってリファクタリング!
・Copilot Chatをコードリーディングに活用、実用的にするための一捻り
プレゼンテーションの構成
・LLMの原理原則から、できること・できないことの説明
・開発の流れに沿って活用のデモ
・Copilot Chatを活用して実用的なライブラリのコードリーディング
KotlinとGitHub Copilotを使った、未来のプログラミングスタイルを今日から始めましょう!
これまでKotlinに触れてこなかったチームが、新規プロジェクトの言語選定でKotlinを採用し、SpringとAxonを用いて、疎結合でスケーラブルなマイクロサービスの構築を行った知見を共有します。
本セッションではプロジェクトで得られた知見をもとに、Kotlinを用いたCQRS+ESマイクロサービスを設計・実装する際のベストプラクティスを共有します。
また、マイクロサービスアーキテクチャを採用する利点や注意点などについてもお話します。
本セッションのトピックは次の通りです。
1.CQRS+ESアーキテクチャの概要と採用の背景
2.Spring BootとAxon Frameworkを用いたマイクロサービスの設計
3.Kotlinの言語特性を活かした実装
4.マイクロサービス間の連携とデータの整合性の確保
5.開発における課題と解決策
6.実際のプロジェクトでの応用事例と得られた知見
Spring 5.0にて登場したSpring WebFluxですが、Reactive Programmingが難しいためか実際の現場では採用が見送られるケースが多かったように思います。
現在はCoroutinesがサポートがされ、以前よりも採用しやすくなりました。しかし、国内ではまだまだ情報が少ないため、採用に至っていない人もいると思います。
そんな人の背中を後押しするような情報をご紹介しようと思います。
2017年から大規模な環境でSpring WebFluxを使っているため、運用観点のお話も交えてご紹介致します。
Spring WebFlux/Coroutinesの概要
Observabilityはどうするか
ThreadLocal(MDC等)との付き合い方
Micrometer Context Propagation
BlockHound
Virtual Threadsとの比較
皆さんFlowを理解しながら使っていますか? 私はかつてはずっと雰囲気で使っていました。
数あるオペレータを使いこなしていますか? 私はcollectLatestくらいしか使っていませんでした。
このセッションではFlowに関する短いクイズの出題とその解答、解説を行い、その中でFlowの重要な概念に関して説明していきます。
クイズは実際の開発現場でのユースケースを想定した内容となっています。
一緒にFlowと仲良くなりましょう。
登壇者はkotlin-csvというKotlin製のOSSを自作し、5年運用してきました。
https://github.com/doyaaaaaken/kotlin-csv
その経験を振り返り、感想をシェアするセッションです。
なお2年前のKotlin Fest 2022にて、kotlin-csvをどのようにして普及させたのかについてはすでに語っています。
https://speakerdeck.com/doyaaaaaken/kotlinzhi-zi-zuo-ossnopu-ji-zhan-lue-kotlin-csvnoshi-li-woyuan-ni-at-kotlin-fest-2022
今年のセッションでは具体よりも、自身が5年の経験の中で得た知見について語ります。
楽しんでもらいかつ「自身もチャレンジしてみよう」と思ってもらえるセッションになるよう頑張ります。
Spring Boot × Kotlin でバックエンドの開発をする時に悩むのがアーキテクチャだと思います。
世の中には様々なアーキテクチャがありますが、サービス立ち上げの時からアーキテクチャに凝りすぎると開発の速度が落ちてしまいかねません。
かと言って、何も決まりがない状態ではだんだんとカオスになってしまうと思います。
このセッションでは、Kotlin × GraphQL (DGS) × Spring Boot で CQRS アーキテクチャを実現し、責務を分離すべき部分はしっかりと、そうでもない部分は柔らかい状態を残しておく例をご紹介します。
併せて、Kotlin で CQRS と一緒にイベントソーシングを実現する例と、その際に便利な Sealed class の利用例についてご紹介します。
このセッションではAndroidエンジニア向けにKMPライブラリの紹介をします。
Androidのライブラリ(Room,Retrofit,OkHttp)は触ったことがあるけど、KMPライブラリは触ったことがないといった方に向けてKMPで利用できるライブラリ(sqldelight,Ktorfit,Ktor)を紹介します。
また、Androidエンジニアが慣れ親しんだAndroidライブラリ風にKMPライブラリを使用する方法をご紹介します。
・sqldelightでRoomライクなDB実装
・Ktorfit+Ktor+kotlinx.serializationでRetrofit+OkHttpライクな通信実装
昨今、Androidの開発でもコードの品質の確保が重要となっており、その指標の一つとしてユニットテストのコードカバレッジが利用されています。
しかし、Androidのビルド環境は、使い慣れないGradle・マルチモジュールなどで複雑になっており、思い通りにカバレッジを取るのが非常に難しくなっています。
本セッションでは、Jacocoの設定を記述したStand Alone Gradle PluginをKotlinで作成する方法を解説し、モジュール間・プロジェクト間でのコードの再利用性を高める手段を紹介します。
以下目次
ArchUnit (https://www.archunit.org/) というツールをご存知でしょうか?
Java、Kotlin のプロジェクトに対してパッケージの依存関係から付与すべきアノテーションやクラス名など様々なコーディングルールを直感的に記述することができるフレームワークとなっています。
これによって暗黙知になりがちでコードレビューなどで担保しているようなコーディングルールを読みやすく管理でき、CI などで自動的に検知することが可能になります。
本セッションでは、「明日からプロダクトに ArchUnit を導入して暗黙的なコーディングルールを自動的にチェックできる」を目指し、以下に触れる予定です。
このセッションでは、Kotlin Notebook について解説します。
Kotlin Notebook は データサイエンスの領域などで使われている Jupyter Notebook のための、 Kotlin カーネル を 使用できる IntelliJ IDEA用の プラグインです。 Community Edition では使えず、 Ultimate で使えます。
対話型でKotlinのコードをすぐに動かすことができ、コードとその実行結果に、テキストや画像を1つのドキュメントにまとめることができます。
本セッションではツールの紹介から始め、基本的な使い方、さまざまな利用用途について触れます。
データサイエンス分野はもちろんのこと、普段アプリケーションコードを書いている人にとっても有用なユースケースが多くあるのでそういった点についても説明します。
Kotlinは普段IntelliJで開発している方がほとんどだと思いますが、中には発表者のようにNeovimや、VSCodeなどのJetBrains社製以外のエディタ等で開発したい方がいるかもしれません。これらのエディタを使う場合、いわゆるLanguage Server(LS)が必要になります。
Kotlinにはkotlin-language-serverというツールがあり、Language Server Protocol(LSP)を会話できるエディタであればコード補完等の機能を利用できます。
発表者は最近このツールにコントリビュートしており、
を話したいと思います。
Kotlin Multiplatform を用いた iOS/Android アプリ開発は、自由な範囲でソースコードの共通化ができます。それによって iOS/Android らしい UI/UX を実現しつつ、両アプリの仕様差異を仕組みで防ぐことができます。
このセッションでは Kotlin Multiplatform を導入したい人や、導入したけど iOS エンジニアの開発者体験をより良くしたい人に向けて、Swift から見た Kotlin Multiplatform の問題点と、それを解決する SKIE について解説します。また、実プロダクトに SKIE を導入した後のメンバーの感想や自発的取り組み、副作用とその対処法についても紹介します。