クラウドAPIに依存しない、デバイス上で動作するローカルAIアプリケーションの開発手法を解説します。GoogleのGemma3nモデルを使用し、テキスト・画像・音声に対応したマルチモーダルAIアプリをKotlinで構築する具体的な実装パターンを紹介します。
セッションでは、Android Studio+Kotlin環境でのGemma3nセットアップから、実際のチャットアプリケーション実装まで、重要なコードポイントを説明します。プライバシー保護、オフライン動作、レスポンス速度最適化など、実用アプリに必要な技術的課題とその解決策も深掘りします。
従来のクラウドAI開発との違いや、ローカルAIの限界と可能性についても議論し、参加者がすぐに自分のプロジェクトで試せる具体的な実装例とベストプラクティスを共有します。AI初心者から経験者まで、Kotlinでの新しい開発体験を一緒に探求しましょう。
ターゲット
・アーキテクチャの歴史を復習したい人
・最近Android,IOSに触れ、昔の歴史を加味してアーキテクチャを理解したい人
概要
参加者の中には最近Androidエンジニアになった方や学生の方々も多いのではないでしょうか。
そんな方々に向けた、今までの歴史を振り返り、アーキテクチャの理解度を上げるためのセッションです。
初期からのアーキテクチャの主要な部分をAndroid,IOS横断で遡り、現状のMVVM,TCA,Fluxなどの思想の分かれ方の理解を深めます。
テーマ理由
・宣言的UI普及により、アーキテクチャが転換期であるため
・他の方のセッションで最先端のアーキテクチャ考察があると考え、前提となるセッションがあった方が良いと考えたため。
ライブラリについて知りたい場合、APIドキュメントを読めば手早くライブラリのインターフェイスを俯瞰することができます。
Kotlinで実装されたライブラリも例外ではなく「いい感じのAPIドキュメント」が公開されています。
例) OkHttp https://square.github.io/okhttp/5.x/okhttp/okhttp3/
実はKotlinではDokkaというライブラリを使うことで「いい感じのAPIドキュメント」をかんたんに作成することができます。
このセッションでは実際に業務で得た知見を中心に、Kotlinコードのドキュメンテーションに用いられるKDocの文法を紹介し、そこからDokkaがどのような公開用ドキュメントを生成できるのか解説します。
ライブラリ利用者のことを考えた、いい感じのドキュメンテーションの方法を一緒に学んでいきましょう!
Kotlin を用いたプロダクト開発で以下のようなうっかりミスを経験したことはありませんか?
Kotlin の型システムや修飾子を正しく活用することで、こうした「うっかりミス」や「設計上の逸脱」をそもそも発生させない設計が可能です。
本セッションでは、Kotlin の型システムや修飾子(internal, private など)を活用し、間違いを事前に防ぐ手法を紹介します。
私たちは、レガシーコードのリファクタリングを通じてKotlinが持つ強力な言語特性を最大限に活かすための要素を模索し、「Kotlinらしいコードとは何か」という本質的な問いに向き合ってきました。
本セッションでは、AIを強力なパートナーとして活用し、単に動くコードを生成するだけでなくレガシーコードを「Kotlinらしい」真にモダンなコードに置き換える実践的なアプローチを深掘りします。
特に重要なのが、高品質な「Kotlinらしいコード」を生成させるための効果的なプロンプトです。本セッションでは、実際に試行錯誤を通じて得られた効果的な対話の例や、改善点、そしてそれによって生成されたコードの比較を具体的に示します。これにより、参加者の皆様が自身のプロジェクトでAIを用いてコードを刷新する際の実践的なヒントとノウハウを提供し、コードを生まれ変わらせる一助となることを目指します。
LINEマンガは累計5000万ダウンロードを超え、日々多くのユーザーにレコメンデーションを提供しています。 一見シンプルなバッチ処理も、この規模になると、億単位のデータを高速に連携する必要があるなど、全く別の課題が生まれます。 私たちは、これらの大規模データ処理を、Kotlinで実装したETLバッチパイプラインで支えています。
本セッションでは、この大規模ETLシステムの構築で直面している課題と、改善に向けたリアルな試行錯誤を共有します。
本セッションのポイント:
実サービスの試行錯誤を通じて見えてきた、Kotlinによる大規模データETLのリアルをお伝えします。
モバイルアプリ開発において 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をどう使い分けているかを実例とともに紹介します。
試したが合わずに離脱した方にも、再挑戦のヒントを提供します。
2020年にAndroid/Kotlinの開発をゼロから始めて以降、モバイルアプリ開発に向き合う中で、iOS(Swift)とAndroid(Kotlin)の違いと向き合いながら、両者の実装・設計思想に触れる機会を多く得てきました。
本セッションでは、Kotlinを軸としつつ、iOSとの比較を通じて得られた「UIやレイアウトの設計に対する考え方の違い」や「言語間の共通点・相違点から得られる学び」を事例ベースで紹介します。
また、業務で得たインプットをどのように実装や設計に落とし込んでいったか、初学者からある程度応用できるレベルに至るまでに意識していたポイントや、実務で活きた視点についてもお話しします。
iOS/Android両プラットフォームに関わる方や、これからKotlinやAndroidアプリ開発に取り組もうと考えている方にとって、実践のヒントとなるような内容をお届けします。
本セッションでは、主にSpring Bootアプリケーションについて、性能を左右する 同期・非同期 / Blocking・Non-Blockingの挙動を、syscallレベルまで掘り下げた解析と負荷試験の実測値を交えて解説します。
Kotlinの開発環境として、IDEやエディタ以外の選択肢があることをご存知でしょうか?
本セッションでは、Jupyter Notebook上でKotlinを実行できる「kotlin-jupyter」を中心に、インタラクティブなKotlin実行環境の魅力と活用方法を紹介します。
kotlin-jupyterは、コードの実行結果をその場で確認しながら開発を進められる環境で、グラフやテーブルなどの視覚的な出力も簡単に扱えます。また、コードと実行結果を一つのドキュメントとして保存・共有できるため、チーム内での知見共有や技術検証の記録にも最適です。
主に取り扱う内容 (予定)
-各種環境でのkotlin-jupyterの導入方法や基本的な使い方
過去に書いたその時にベストだったコードも、Kotlinの進化によって、今ではもっとスマートに書けるかもしれません。新しい機能の導入背景を知りながら、モダンKotlinに書き換えていきましょう。
このセッションでは、Kotlin 1.9以降に入った機能に触れつつ、主に以下のケースについてどう書き換えるかの具体的なユースケースを紹介していきます。
このセッションを、コードを書くとき・レビューするときに、なぜその機能が追加され、どのように使うことが推奨されているのか、という背景まで理解して、よりよいKotlinを書くきっかけにしましょう。私達の書くコードはもっとスッキリするはずです。
Androidのみのプロジェクトを利用して簡単にIOSのアプリもビルドできるようにしてみよう。
Androidプロジェクトにいくつか準備ができていれば、意外と簡単にIOSにもリリースできます
サービスのスケールに伴い負債を抱えた大規模なレガシーシステムでは、マイクロサービスの新規開発は0→1ではなく、負債を精算しつつ進める-1→1の開発です。
本セッションでは、共有DB、分解ではなく分散してしまったマイクロサービス群によって複雑化した環境での新規マイクロサービスの立ち上げにKotlinを採用し、
・data/value classを用いた効率的なドメインモデリングでのDDD
・copy()のvisibilityなどKotlinが持つ課題、また成長方向を見据えてのイミュータブルを軸にしたプログラミング
・Gradle Kotlin DSLによるマルチプロジェクトなクリーンアーキテクチャ
・マイクロサービス間の結合度合いを意識した段階的データ洗浄フローのアプリケーション実装
を通じて、Kotlinをなぜ選定したかどう活用したか、そして負債を解消する具体手法と知見を共有します。
▪️背景
「CoroutineやFlowのテストがうまく書けない」「期待した値が取れない」「テストが安定して成功しない」、これらはCoroutine・FlowのUnitテストに挑んだ開発者なら誰もが1度は直面する課題ではないでしょうか?
実際のコードでは、リトライ処理、Exception、複数Flowの合成といった、テストには複雑なケースが数多く存在します。
本セッションでは、プロダクション開発でよくある複雑な非同期処理を例に、安定したテストを書くための実践的な手法を紹介します。失敗するテストを出発点に、失敗の原因分析から修正方法までを解説します。
▪️具体的な内容:
・よくある失敗パターンから学ぶ
・時間を制御するテクニック
・Flowテストの基本と応用
・複雑な非同期ロジックに挑む
・MockK×Coroutineの活用法
・テストしやすい設計へのリファクタリング
本セッションでは、ビジネス仕様をできる限りありのままにコードで表現(翻訳)するテクニックをKotlinを用いて解説していきます。
なぜビジネス仕様をありのままに表現したいのでしょうか?それは仕様や解決したい課題を正しく理解するためです。
自然言語で書かれたビジネス仕様は、どうしても曖昧な表現を含んだり、全てのシナリオが考慮されていなかったりします。その結果として出来上がったシステムは、仕様を考えた人(ドメインエキスパート)が想定していない挙動をしてしまうことがあるでしょう。
Kotlinの言語機能を活用してビジネス仕様をコードへ翻訳していくことで、現行の仕様では情報が不十分なときに、コンパイルエラーという形でKotlinが教えてくれるようになります。
最終的に出来上がったコードが、ドメインエキスパートが読んでも理解できるのが理想!
KoogはAIエージェントを構築するためのライブラリです。
シンプルにLLMにアクセスできる一方、複雑なワークフローを構築することもできます。
Kotlin愛好者はKotlinの知識を活かせるほか、KMPの資産を活用して様々なアプリケーションを開発できます。
実際、私はKoogを利用して作業効率化のためのデスクトップアプリやCLIツールを開発しています。
いまこそKotlinの知識を活かしてAIエージェントを構築するチャンスです。
本セッションでは、まず基本的な概要と使い方をご紹介します。
その後、Koogの最大の特徴であるエージェントワークフローの構築方法を解説し、
その設計の考え方を具体的な事例を交えてご紹介します。
内容
・基本的な概要、他のフレームワークとの比較
・基本機能の使い方
・Strategy Graphsで複雑なワークフローを構築する方法
・ワークフローの設計の考え方
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 Compiler Pluginはコード中間表現の改変によって新しい言語パラダイムをもたらし、IntelliJ Pluginはツール拡張によって開発者を支援します。両者を組み合わせれば、もう1段階上の開発体験を作り出すことができます。
本セッションでは、IDEを経由してアプリ状態を巻き戻す、back-in-time-pluginを題材に、コンパイラ拡張とIDE拡張を組み合わせて、ユニークなToolingシステムを構築する実践的な例を紹介します。
アジェンダ:
・back-in-time-pluginのアーキテクチャ
・FIR/IR拡張による状態の追跡・巻き戻し
・IDEとアプリの連携方法
・Compiler PluginのIDEサポートの現在地
一見魔法に見える機能も、分割してみると単純な機能の組み合わせです。皆さんも大好きなKotlinで、魔法使いになってみませんか?