DI コンテナに慣れ親しんだ開発者が直面する課題として、ドメイン層への技術的依存の混入があります。ドメインサービスでフレームワークが提供する DI を使用しているのは、ドメインロジックが技術的要素に依存していないと言えるのでしょうか?
本セッションでは、Kotlin の高階関数とタイプエイリアスを活用することで、DI コンテナに依存せずにクリーンな依存関係の注入を実現する手法を紹介します。従来のクラスベースのドメインサービスから、純粋な関数としてドメインロジックを表現し、高階関数による依存関係の注入パターンを通じて、技術的関心事からドメインを完全に分離する実践的なアプローチを解説します。
Kotlinは「The Billion-Dollar Mistake」とも呼ばれるNull参照問題を防ぐために、Null Safetyをサポートしています。しかし、完全に安心するにはまだ早いかもしれません。 Kotlinでのソフトウェア開発では、未だ、Kotlinのみのエコシステムで完結することは難しく、Java(JVM)の資産を活用する場面が多くあります。そして、Javaとの連携の境界線上には意外な落とし穴があります。
本セッションでは、実際のプロジェクトで遭遇したKotlinの型システムを突破してきたnullの問題を共有しつつ、KotlinとJavaの相互運用におけるPlatform Type、 Generics、Type Erasure、Deserialization、Reflection などの内容を踏まえ、KotlinのNull Safetyついてお話しします!!
Kotlin は null 安全性を備えていますが、設計上「同一の概念に複数のタイプ(例:文字列・数値など)」を持たせたい場合、nullable プロパティや共通フィールドによる冗長で壊れやすい設計になりがちです。
本セッションではsealed interfaceを活用し、各バリアントを代数的データ型(ADT)として型安全に設計する関数型的アプローチを紹介します。null を排除し、型で制約を表現する設計によって、シンプルで堅牢なコードを実現できます。
さらに、
本セッションでは、月間アクティブユーザー約10万人規模のエンタメアプリにおける、Kotlin 1.9.25から2.0への移行の実例を共有します。
特に注目したいのは、Compose UIで頻繁に指摘されるUnstableCollections警告です。
13のComposable関数でList<>パラメータを使用していた当プロジェクトでは、この警告を「将来対応すればいい」と無視し続けてきました。
K2コンパイラの改善により、この問題がどの程度改善されたのか、実際の計測データを基に検証します。
主なトピック:
本セッションでは、Javaで構築されたコードベースをKotlinへ段階的に移行する際に、AIをどのように有効活用できるかを具体的に解説します。単なる機械的なコード変換にとどまらず、言語仕様や設計上の意図を考慮しながら、実用的かつ精度の高い移行を実現するために取り組んだ工夫を紹介します。AIによる自動変換の利点と限界、活用時の注意点を押さえた上で、実際のプロジェクト事例を交えながら、コードの安全性や可読性を損なわずにリファクタリングを進めるための実践的なテクニックとノウハウを共有します。
JavaバックエンドとReact/Next.jsでのWeb開発を経て、Kotlinの世界へ。
サーバーサイドやAndroid開発を通じ、ReactとKotlinでロジックの置き場所や設計思想が大きく異なる点に興味を持ちました。
ReactではHooksなどでロジックがUIに寄る傾向にある一方、Kotlinは責務ごとにロジックを分離し、UIから遠ざける傾向を感じています。
本セッションでは具体的なコード例を交え、ReactとKotlinの設計思想の違いからロジックとUIの置き場所を考察します。フロントエンド開発者がKotlinに入門する上で活かせた知見やつまづきをシェアし、Kotlinの魅力や今後の開発に役立つヒントを持ち帰っていただくことを目指します。
対象者
ライブラリについて知りたい場合、APIドキュメントを読めば手早くライブラリのインターフェイスを俯瞰することができます。
Kotlinで実装されたライブラリも例外ではなく「いい感じのAPIドキュメント」が公開されています。
例) OkHttp https://square.github.io/okhttp/5.x/okhttp/okhttp3/
実はKotlinではDokkaというライブラリを使うことで「いい感じのAPIドキュメント」をかんたんに作成することができます。
このセッションでは実際に業務で得た知見を中心に、Kotlinコードのドキュメンテーションに用いられるKDocの文法を紹介し、そこからDokkaがどのような公開用ドキュメントを生成できるのか解説します。
ライブラリ利用者のことを考えた、いい感じのドキュメンテーションの方法を一緒に学んでいきましょう!
Kotlin を用いたプロダクト開発で以下のようなうっかりミスを経験したことはありませんか?
Kotlin の型システムや修飾子を正しく活用することで、こうした「うっかりミス」や「設計上の逸脱」をそもそも発生させない設計が可能です。
本セッションでは、Kotlin の型システムや修飾子(internal, private など)を活用し、間違いを事前に防ぐ手法を紹介します。
モバイルアプリ開発において API など外部サービスとの連携は不可欠な要素です。
しかし、その連携で避けて通れないのがエラーハンドリングであり、より堅牢で保守性の高いアプリケーションを構築する鍵となるのが RFC によって標準化されたエラー表現の活用です。
RFC 9457 "Problem Details for HTTP APIs" は、エラー情報を構造化された形で交換するためのチーム間における「共通言語」を提供してくれます。
この RFC 9457 に準拠した API のエラーハンドリングについての Android/Kotlin における実装例を紹介します。
サーバーサイドKotlin開発において、JetBrains AI(Junie + AI Assistant)は設計・実装・調査・ドキュメント整理など、あらゆる開発フェーズを加速できます。
私自身、導入前は3日かかっていたタスクが1日で終わるといった生産性向上を実感しています。
一方で、「動作が重い」「使いこなせない」といった声も少なくなく、ツールの性能以前に「どのように使うか」が共有されていない現状を感じています。
本セッションでは、JetBrains AIを日常開発にどう組み込み、JunieとAI Assistantをどう使い分けているかを実例とともに紹介します。
試したが合わずに離脱した方にも、再挑戦のヒントを提供します。
Kotlinの開発環境として、IDEやエディタ以外の選択肢があることをご存知でしょうか?
本セッションでは、Jupyter Notebook上でKotlinを実行できる「kotlin-jupyter」を中心に、インタラクティブなKotlin実行環境の魅力と活用方法を紹介します。
kotlin-jupyterは、コードの実行結果をその場で確認しながら開発を進められる環境で、グラフやテーブルなどの視覚的な出力も簡単に扱えます。また、コードと実行結果を一つのドキュメントとして保存・共有できるため、チーム内での知見共有や技術検証の記録にも最適です。
主に取り扱う内容 (予定)
-各種環境でのkotlin-jupyterの導入方法や基本的な使い方
Androidのみのプロジェクトを利用して簡単にIOSのアプリもビルドできるようにしてみよう。
Androidプロジェクトにいくつか準備ができていれば、意外と簡単にIOSにもリリースできます
Kotlinは簡潔な言語であり、初学者でも基本的な文法は問題なく理解できると思います。
しかしライブラリやOSSの内部実装を読んでいると、普段自分では書かないような知らない文法が出てきて戸惑ったり、自分はKotlinの力を活かしきれていないのではと感じることもあるでしょう。
そこで本セッションでは、Kotlinをより深く知るために、押さえておきたいKotlinの言語機能を紹介します。
その際はコード例、図表、背景、使い所を交えながら分かりやすさを重視して解説します。
これらの機能を理解すれば、OSS等のコード読解やデバッグが容易になり、保守性・パフォーマンスの高いコードを書くための大きな助けとなるはずです。
内容
・ジェネリクス(in/outなど)
・インライン化(inline, reifiedなど)
・委譲(Delegation)
など
Kotlinでは、val / var、sealed class、suspend 関数、when 式など、Javaにはない独自の構文が存在します。では、それらが実際にどのように動作しているのか、Javaに変換されたコードで確かめたことはありますか?
このセッションでは、KotlinのコードをJavaにデコンパイルして比較することで、言語仕様の裏側を一緒に読み解いていきます。
取り上げるトピック例:
・val と var の違いは、Javaではどう表現される?
・sealed class の継承制限はどのように実現されている?
・suspend 関数の正体は?
・when 式はJavaでどう書き換えられる?
・Kotlinの List / MutableList の中身は何者?
近年のマイクロサービスアーキテクチャにおいて、サービス間通信の信頼性と効率性はますます重要になっています。本セッションでは、Kotlinを使ってRPC(Remote Procedure Call)通信を実現する方法を初心者向けに解説します。gRPCの概要やProtocol Buffersによるインターフェース定義、Kotlinでの実装方法を、実例を交えてわかりやすく紹介。RESTとの違いや、RPCのメリット・デメリットにも触れながら、Kotlin開発者が押さえておきたいリモート通信の基本を学びます。
チームのコーディング規約、形骸化していませんか?
コーディング規約はチーム開発において不可欠ですが、曖昧なルール、チームメンバーの変化、レビューコストの増加など、コーディング規約を運用するのには様々な課題があります。
本セッションでは、KotlinのLinterであるdetektのカスタムルール機能を利用してコーディング規約を運用する方法について以下の内容を紹介します。
・コーディング規約を取り巻く課題
・プロジェクト独自の規約を直感的なKotlinコードで明文化する方法
・実際に運用してみて効果的だったルール
このセッションを通じて、明日から開発生産性の向上に取り組める実践的な方法を得ることができます!
直近のCompose Animationのアップデートで、Modifier.animateBoundsが追加されました。
レイアウトのアニメーションが簡単に実装できるようになっています。
このアニメーションはアプリのUIを美しくし、ユーザー体験を向上させます。
本セッションは特にModifier.animateBoundsと、その基盤となるLookaheadScopeを深掘りし、
多様なレイアウトの変化をアニメーションさせる方法を紹介します。
・Compose Animationの新機能・動向
・Modifier.animateBounds、LookaheadScopeの概要と使い方、しくみ
・movableContentOfなどと組み合わせて多様なレイアウト変化をアニメーションする方法
・Modifierの適用順などの注意点
エンジニアリングマネージャー(EM)からエンジニアに戻り、初めてサーバーサイドKotlin開発に挑戦した実践と学びの記録です。
多言語でのプロダクト開発経験を持つKotlin初心者の私が、EM経験で培ったマインドを活用しながら、Kotlinやそのエコシステムをキャッチアップし、プロダクト開発にコミットした過程を紹介します。
以下のトピックを中心にお話しします。
これからサーバーサイドKotlinに挑戦する方へ、
苦戦したことも含めた実体験から「やってみたい!」と思える実践的なヒントをお届けします。
既存の機能を拡張する際に、手順書や仕様書を頼りに実装したことはありませんか?
しかし、ドキュメントはすぐに陳腐化します。コードこそが最も正確で信頼できる唯一のドキュメントです。
コードが実装漏れを教えてくれれば、手順書や仕様書は不要になるはずです。その表現方法の1つとしてコンパイルエラーを用いることができます。
もし、実装漏れによってコンパイルエラーになれば、コードを実行すること・本番環境にリリースすることはできません。
本セッションでは、コンパイルエラーによって実装漏れを検知するための設計と、その実践事例、トレードオフについて紹介します。
キーワード
・コンパイルエラー、直和型、網羅性、interface、設計
本セッションでは、生成AIの活用に特化した新しい仕組み「Model Context Protocol(MCP)サーバー」を、KotlinとSpring AIを用いてどのように構築したかをご紹介します。
MCPは、AIアプリケーションと外部のデータソースやツールを連携させるための標準化されたプロトコルであり、AIアプリケーションの柔軟性と再現性を高める注目のプロトコルです。
セッションでは、Spring AIを実際に使用した際の所感や、MCPサーバーとしての活用方法に加え、設計方針や実装上のポイントについて解説します。
次世代AIアーキテクチャの実践事例として、今後MCPの導入を検討している開発者の皆様に、具体的なヒントをお届けします。