チームのコーディング規約、形骸化していませんか?
コーディング規約はチーム開発において不可欠ですが、曖昧なルール、チームメンバーの変化、レビューコストの増加など、コーディング規約を運用するのには様々な課題があります。
本セッションでは、KotlinのLinterであるdetektのカスタムルール機能を利用してコーディング規約を運用する方法について以下の内容を紹介します。
・コーディング規約を取り巻く課題
・プロジェクト独自の規約を直感的なKotlinコードで明文化する方法
・実際に運用してみて効果的だったルール
このセッションを通じて、明日から開発生産性の向上に取り組める実践的な方法を得ることができます!
直近のCompose Animationのアップデートで、Modifier.animateBoundsが追加されました。
レイアウトのアニメーションが簡単に実装できるようになっています。
このアニメーションはアプリのUIを美しくし、ユーザー体験を向上させます。
本セッションは特にModifier.animateBoundsと、その基盤となるLookaheadScopeを深掘りし、
多様なレイアウトの変化をアニメーションさせる方法を紹介します。
・Compose Animationの新機能・動向
・Modifier.animateBounds、LookaheadScopeの概要と使い方、しくみ
・movableContentOfなどと組み合わせて多様なレイアウト変化をアニメーションする方法
・Modifierの適用順などの注意点
Model Context Protocol (MCP) の登場でAIと共存するアプリケーションへ変化しつつある今日において、
事実を残すことの大切さ、データの構造化・品質などが注目されています。
そんな時代にも活きる仕組みの一つとしてCQRS + Event Sourcingがあります。
本セッションでは サーバサイド Kotlin と Apache Pekko を用い、
CQRS + Event Sourcing で蓄積した「事実」を MCP 経由で AI に供給し、
活用するための道を実現する方法について解説します。
本セッションでは次の内容なども取り扱います
Projectionの活用やMCP Resource / Tool、推論結果の活用・ドリフト検知など
*発表時には内容が古くなっている可能性はあります
「rememberやderivedStateOfを使っているのにUIがもたつく…」そんな経験はありませんか?
パフォーマンス問題の多くは、再コンポーズの仕組み、特にComposition・Layout・Drawの3フェーズと、コンパイラが賢く再描画をスキップするための鍵となる「安定性(Stability)」への深い理解に、解決の鍵があります 。
本セッションでは、この「安定性」の仕組みを深掘りし、不要な再コンポーズを根本から防ぐ方法を解説します。Compose Compiler Metricsも活用しながら、不安定なクラスを特定・修正し、真に高速なUIを実現するための具体的なテクニックを学びます。
Kotlinでサーバーサイドアプリケーションを開発する際、Springは有力な選択肢の一つです。
今年はJetBrainsとの戦略的パートナーシップも発表され、さらにKotlinでの利用が活発になることが予想されます。
また現在のSpringは通常のサーバーサイド開発だけでなく、AIの使用やServerlessについてのサポートもあります。
そこで本セッションでは
・最新のSpring BootでのKotlinサポート
・Spring AIによるAIサービス連携
・Spring Cloud FunctionでのServerless開発
などを中心に、様々なシチュエーションでのKotlinのサーバーサイド開発のやり方について紹介します。
実際にこれらを活用して作成したアプリケーションを使いながら、解説していきます。
これからサーバーサイド開発の技術選定をする方の一助になればと思います。
エンジニアリングマネージャー(EM)からエンジニアに戻り、初めてサーバーサイドKotlin開発に挑戦した実践と学びの記録です。
多言語でのプロダクト開発経験を持つKotlin初心者の私が、EM経験で培ったマインドを活用しながら、Kotlinやそのエコシステムをキャッチアップし、プロダクト開発にコミットした過程を紹介します。
以下のトピックを中心にお話しします。
これからサーバーサイドKotlinに挑戦する方へ、
苦戦したことも含めた実体験から「やってみたい!」と思える実践的なヒントをお届けします。
既存の機能を拡張する際に、手順書や仕様書を頼りに実装したことはありませんか?
しかし、ドキュメントはすぐに陳腐化します。コードこそが最も正確で信頼できる唯一のドキュメントです。
コードが実装漏れを教えてくれれば、手順書や仕様書は不要になるはずです。その表現方法の1つとしてコンパイルエラーを用いることができます。
もし、実装漏れによってコンパイルエラーになれば、コードを実行すること・本番環境にリリースすることはできません。
本セッションでは、コンパイルエラーによって実装漏れを検知するための設計と、その実践事例、トレードオフについて紹介します。
キーワード
・コンパイルエラー、直和型、網羅性、interface、設計
本セッションでは、生成AIの活用に特化した新しい仕組み「Model Context Protocol(MCP)サーバー」を、KotlinとSpring AIを用いてどのように構築したかをご紹介します。
MCPは、AIアプリケーションと外部のデータソースやツールを連携させるための標準化されたプロトコルであり、AIアプリケーションの柔軟性と再現性を高める注目のプロトコルです。
セッションでは、Spring AIを実際に使用した際の所感や、MCPサーバーとしての活用方法に加え、設計方針や実装上のポイントについて解説します。
次世代AIアーキテクチャの実践事例として、今後MCPの導入を検討している開発者の皆様に、具体的なヒントをお届けします。
自分はわかっていませんでした。
HTTPクライアントでJSONレスポンスを扱う際、型変換の冗長な実装をジェネリクス使って書いたぐらい。
その時もコンパイルエラーと戦って試行錯誤してなんとか乗り切っていました。
本セッションでは、Kotlinの機能である inline + reified 型パラメータを使った関数がどのように振る舞うか、何が理解できたらコンパイルエラーに勝てるかを考えていきます。
話す内容
大規模なKotlinプロジェクトでは、数百から数千の依存ライブラリが存在し、それらの管理は容易ではありません。 また、昨今のサプライチェーン攻撃の高度化により、依存ライブラリ管理の重要性も増しています。
そこで、本セッションでは、開発者目線の、Gradle/Trivy/GitHub Actionsを用いた依存ライブラリ管理の自動化パイプラインの構築例を紹介します。
本セッションのポイント
Kotlin ScriptによるGradle Taskの実装例も交えつつ、明日からでもすぐに試せる、段階的に導入できる実践的なテクニックを紹介します。
私たちは、自社プロダクトのバックエンドを100% Kotlinでフルスクラッチ開発し、全面リニューアルを実現しました。
PoCや部分導入ではなく、Kotlinを採用したリアルシステム開発の結果を総括してお届けします。
特に設計方法として、DDDとクリーンアーキテクチャをKotlinと組み合わせることは非常に魅力的な選択肢であり、ぜひノウハウを紹介させてください。
プロダクトとしては、全国から収集したご家庭のテレビ視聴ビッグデータを解析してユーザに提供しており、toC向けとして "TVAL now" も公開しています。
Kotlinで本格的なプロダクト開発を検討中の方にとって、技術選定や体制づくりのヒントになる内容をお話しします。
アプリを開発していると「SNSでシェア」や「レポートを出力」という処理を実装することがあります。
その際、表示されている画面をそのままキャプチャする場合は問題ないのですが、そうではないケースも存在します。
例えば、シェア用にロゴを追加したい場合や、縦向き画面を横向きで画像生成したい場合です。
この際に役立つのが、画面に表示していないUI要素から画像を生成する技術です。
alpha=0FやViewCompositionStrategy、NoTouchFrameLayoutを組み合わせることで、
画面表示とは独立したシェア専用UI要素のキャプチャが実現できます。
実際のプロダクトでの実装例と共に、この実用的な技術をお伝えします。
長年にわたりKotlinを愛でてきた皆さんの中には、慣れ親しんだ「古き良き」書き方で開発を進めている方も多いでしょう。私もその一人です。しかしKotlinは進化し、最新バージョンでは設計を大きく改善できる新機能が豊富です。このセッションでは、皆さんのKotlin知識をアップデートし、最新機能がもたらす設計改善の可能性を探ります。
特に、使い分けに悩む数種類ある「class」について、それぞれの特性とユースケースを詳解します。
このセッションを通じて、「古き良き」良さを活かしつつ最新機能で設計を改善し、より質の高い開発を進めるヒントを得られるはずです。
CMPのiOS版がStableとなり、UIを一つのコードで表現できるようになりました。しかし、iOS側のUIがマテリアルデザインになってしまうというデザイン制約から、CMPではなくKMPを選択することも多いのではないでしょうか。
本セッションでは、大部分のUIをComposeで共通化し、iOS特有のこだわりがあるUIをSwiftUIで記述するハイブリッドCMP開発の手法についてご紹介します。この手法はiosAppモジュールに配置したSwiftUIをKoinでsharedモジュールに提供し、画面単位またはUIパーツ単位でSwiftUIをComposeの画面に埋め込むことで実現できます。これによりCMPの利点であるUIのコード共通化を行いつつ、デザイン自由度の制約を最小限にできます。
このセッションを通じ、iOSのUIにも妥協したくない人がCMPという選択肢を選べることを願っています。
Model Context Protocol (MCP) は、AI agentと外部を接続するためのプロトコルです。 JetBrainsにより公式Kotlin SDKがリリースされ、KotlinでもMCPサーバー/クライアントの実装が可能です。
本セッションでは、まずMCP Serverとは何かを説明した後、公式Kotlin SDKの内部実装を丁寧に解説します。基本的な技術の積み重ねで実現されています。
前半ではMCPの概要とユースケースを、後半では具体的な実装を扱います
・MCP Serverの役割と連携方法
・MCP Server プロトコルの基本構造
・Kotlin SDKのアーキテクチャ, Ktorを使ってる
・実際のMCP Server実装の解説
実際に動くコード例を交えながら、MCPをKotlinで扱う方法を基礎から実装まで体系的に解説します。
Claude CodeやGitHub Copilot, Cline, Junie等のコーディングエージェントはもはやソフトウェア開発に欠かせないツールと言えるでしょう。
しかし、これらのツールをKotlin開発で効果的に活用するには、Kotlin特有の言語機能や慣習を理解した上での使い方が重要です。
本セッションでは、コーディングエージェントとの協働でKotlinらしいコードを生成するための実践的なテクニックを紹介します。
また、具体的なプロンプトの書き方やKotlin固有の機能を正しく生成させる方法、MCPサーバ等のツールの使い所などについて触れていきます。
本セッションでは以下の内容を含みます。
Kotlinではイミュータブルなプログラミングスタイルが推奨され、kotlin.collectionsではListのようなイミュータブルなデータ構造が好まれます。
しかし、これらはミュータブルなコレクションへのダウンキャストが可能であったり、結合時に線形時間がかかったりといった欠点も存在します。
本セッションでは、この課題に対する選択肢として、kotlinx.collections.immutableで提供されるPersistentCollectionを紹介します。
PersistentCollectionは関数型プログラミングで頻繁に用いられるデータ構造であり、上記のイミュータブルコレクションが抱える欠点を克服しています。
本セッションが、PersistentCollectionの理解を深め、最適なコレクションライブラリを選択する一助となれば幸いです。
Kotlinでは、ベースとなるJavaで書かれたものを含めて、ライブラリが定義したGeneric Typeを安全にユーザー定義型と組み合わせて使えます。
皆さんも、日常的に List<User>, Map<ProductId, Product> 等の型を使ったコーディングを行っていると思います。
本セッションでは、この Generic Type について、型を越えたメソッドの再利用性以外の部分である、実際の継承関係にあるクラスと組み合わせたときの代入可能性を見ていきます。
タイトルの例は、まさに Java では×、Kotlin では○という、Kotlin をより安全たらしめる読み取り専用 List の例となっています。
このような活用について概念と実例の両方を理解し、Generics をより安全に利用・作成できるようになることをセッションのゴールとしています。
Coroutine、FlowはKotlinの便利な機能ですが、うまくテストできているでしょうか?
テストをうまく制御できなかったり、うまくテストできず、修正まで時間がかかってしまうこと、ありがちだと思います。
本セッションでは、CoroutineやFlowのテストに絞って、ポイントやハマりどころを解説します。
Flowのテストでは、Turbineというライブラリもご紹介します。
さらにこれらのテストの可読性や保守性を高めるためのTipsもご紹介します。
内容
・Coroutine、Flow、suspend関数のテストの基本とポイント
・Turbineライブラリの紹介
・機能テストなど大きめのテストでCoroutine/Flowを制御する方法
・テストダブルでうまくCoroutine/Flowを制御する方法
kotlin-metadata-jvmは、コンパイルされたKotlinクラスからメタデータを読み取るツールです。
kotlin-reflectよりも軽量で、よりKotlinに適したメタデータの取り扱いを行うことができます。
本セッションでは、kotlin-metadata-jvmの基本的な使い方と、実際の活用例を紹介します。
Metadataの概要を理解することでありがたみが伝わる、Binary Compatibility Validatorの「ビルドが壊れた」検知に触れます。
本セッションを通してkotlin-medadata-jvmを使ったメタプログラミングをより身近に感じてもらうことを目指します。
トーク予定内容