日々のコーディングで誰もが向き合う「文字列操作」。その面倒な作業が、いかにKotlinで楽しく、効率的になるか紹介します。
どのプログラミング言語でもある文字列というオブジェクトにフォーカスをあてて、Kotlinでは基本となる文字列操作から、あまり知られていない拡張関数まで、Kotlinで使える便利な文字列操作の世界へみなさまをご案内します。
KotlinPlaygroundはブラウザ上で編集・実行・共有が完結する、JetBrainsによって提供されているウェブサイトです。
Kotlinのバージョンや実行環境を簡単に変更して、ウェブ上で実行結果まで確認できるため、手軽に動作を確認できるサンプルコードを共有するツールとして活用されています。
直近では、Compose MultiplatformやSwift export、Canvas等の様々な実行環境のサポートが行われており、動くUIのサンプルを書いて共有することもできるようになっています。このセッションでは機能紹介からはじめ、ショートカットや、できることの限界といった点まで触れて効果的なコード共有を実現するためのベストプラクティスを含む内容を紹介します。
「動く」コードサンプルでチームのコミュニケーションをよりスムーズにしてみませんか?
みなさんはZodというTypeScriptのライブラリをご存じでしょうか。例えばメールアドレスを文字列として渡すと、それをパースして正しいメールアドレスの形式か?を判定してくれたりします。
では iolite というKotlin版ZodなOSSライブラリをご存じでしょうか。おそらく知らないと思います。なぜなら私がこのプロポーザルを書く5分前に公開したライブラリだからです。このライブラリはGeneric Value Objectの集まりとでも呼ぶべきものです。
このセッションでは、
Gradleでも使われているKotlin DSLはKotlinを利用してコンフィグなどのプロパティを記述することができる機能です 。
Kotlin DSLの一般的な利用方法と、変則的なKotlin DSLを使いこなすことでできることでできることを、実例を交えてお話ししたいと思います。
このセッションでは具体的に以下のことについてお話しします。
Dependency injection (DI) は保守性の高いアプリケーションを開発するために必須と言っても過言ではない設計パターンではないでしょうか。
Kotlinで開発をするうえで、言語機能を利用した手動DIや、KoinやDagger等のライブラリやSpring DIやQuarkus ArCのようなサーバサイドのアプリケーションフレームワークに組み込まれたものを利用するなど、様々なアプローチが存在します。
このセッションでは、DIの目的や原則などについて軽くおさらいをしながら、各アプローチについて具体的なコードとともに触れつつ、それらを利用するメリットとどのような場合に使うのが良いかの解釈についてお話していきます。
一部プラットフォーム固有の話が含まれる想定ですが、Kotlinが幅広い利用目的があることなどをふまえて、極力プラットフォームに関係なく話ができればと考えております。
業務オブジェクトが複雑化すると、新しい状態を追加するたびに「既存ロジックが壊れないか」と不安になりませんか?
私たちのプロジェクトでも同様の課題に直面しました。機能追加とともに業務オブジェクトの責務が肥大化し、プロジェクトが進むにつれて、さまざまな状態や処理が1つのクラスに集約され、ビジネスロジックが複雑化していきました。多様な状態を1クラスに詰め込んだ結果、可読性と保守性が低下し、新しい状態を追加するたびに既存ロジックへ影響するリスクが高まっていました。
本セッションでは、この複雑化したクラスを状態ごとに分割し、Railway-orientedフローを組み込むことで、「不正状態をコンパイル時に検知し、実行時には型で安全にハンドリングする」までの過程をお話しします。型システムを活かして、保守性と開発速度を両立させるヒントをお持ち帰りください。
KotlinによるServer Side Web FrameworkといえばSpringあるいはKtorかと思います。
Springを採用している組織がやや多い印象を受けますが、やはりPure KotlinなKtorも人気があります。
そんな昨今の状況において、Ktorを紹介する記事やセッションはちらほらと見かけますが「Ktorでしておくべき設定」にフォーカスした記事やセッションはあまり見た覚えがありません(主観)。
そこでこのセッションではよりKtorを深堀し、Ktorでぜひ設定しておきたい以下の機能についてお話ししようと思います。
またこれらの機能を設定することで、「実際にどのような恩恵を受けられるか?」までお話しします。
AIコーディングエージェントの真価は、言語固有の特性をどれだけ深く理解し、開発環境と統合できるかにあります。本セッションでは、JetBrains Junieの技術アーキテクチャを解剖し、IDE統合型アプローチがもたらす開発体験を技術的観点から解説します。
技術的に深掘りする内容
・Mellum LLMアーキテクチャの詳細
・IDE統合によるコンテキスト理解
・Kotlin開発における実践的活用方法
セッションでは、実画面を共有しながら、Junieがどのようにタスクを分解し、IDEの機能を活用して実行するかを可視化します。
また、他のAIツール(GitHub Copilot、Cursor)との技術的な比較を通じて、IDE統合型アプローチの優位性と現在の限界についても率直に議論します。
参加者は、AIエージェントの内部動作を理解し、最大限の価値を引き出すための具体的な知識を得られます。
Android Viewは既に公式にメンテナンスモードに入り、Jetpack Composeが次世代UIの標準とされています。しかしXMLレイアウトが膨大で部分移行が停滞し、全面導入を躊躇するチームも多いです。本セッションでは、既存Viewを止めずリスクを最小化しつつComposeの利点を即享受できる「ミニマムスタート戦略」を技術・組織運用の両面から具体的かつ実践的に紹介。技術負債を解消しつつ、モダンなUI開発の第一歩を踏み出しましょう。Compose移行の壁を突破し、組織で開発効率とUXを飛躍的に向上させます。
【セッション内容】
・新規画面/機能をComposeで実装
・ViewとCompose共存パターン
・Compose Preview/ホットリロード活用
・主要UIコンポーネント優先置換
・Material3テーマ共通化とAccompanist導入
・移行プロジェクトの組織戦略
Kotlin Multiplatform(KMP)はiOSとAndroid間でビジネスロジックを共有できる強力な手段ですが、導入初期にはライブラリ選定でつまずくことが少なくありません。本セッションでは、ネットワーク(Ktor)、DI(Koin)、DB(SQLDelight/Realm)、非同期処理・状態管理(StateFlow)など主要ライブラリの特徴と選定基準を、コード例を交えて解説します。さらにiOS/Android連携時のFlowの橋渡し、初期化タイミング、プラットフォーム固有処理の分離など、開発初期に陥りやすい設計上の落とし穴を紹介し、KMP新規開発におけるスムーズな立ち上げをサポートする実践的ノウハウを提供します。KMPは正しく設計すれば保守性と開発速度を向上させます。本セッションで開発初期の不安を乗り越え、「信頼できるスタートセット」を手に入れましょう。
Kotlinでデータベース操作を行うことを考えると、第一候補にはExposedが上がってくるのではないでしょうか?
Exposedは確かに素晴らしいORMですが、やはりORMにありがちな以下のようなデメリットもあります。
これらのトレードオフに対する別アプローチの選択肢として、私はSQLDelightをおすすめしたいです。
このセッションでは、
についてお話ししたいと思います。
私はKotlin愛好会、Server-side Kotlin Meetupという2つのKotlinコミュニティの運営に携わっています。
いずれも1〜3ヶ月程度のスパンで定期的に勉強会の開催をしていて、これまで多くの方とお話したり、様々なセッションを観てきました。
そこで2つのコミュニティの運営を通して知っている
・どんな雰囲気の場所か?
・どんなことを話しているのか?
・どういう属性の人が参加しているのか?
・運営メンバーってどんなことしてるの?
といった話を通じて、Kotlinコミュニティがどんな場所なのかや、コミュニティの意義や楽しさについて紹介します。
「勉強会に興味はあるけど、雰囲気がわからず不安・・・」そんな方に向けて、コミュニティのリアルな姿をお届けします。
またこのセッションを通して、聴講者のみなさんのコミュニティ参加や、新たな出会いのきっかけを作れればと考えています。
Server-side KotlinはKotlin活用におけるメインフィールドのひとつです。しかしプロジェクトが成長するとコンパイルやテストが低速化し、CI/CD体験が悪くなり、プロジェクト改善が回りにくくなります。CIが高速に実行できることは生成AI導入のためにも必要であり、今後も高速なCI/CDは必要とされます。
このセッションでは筆者がGradle, Koin, Ktor, KSP, OpenTelemetry (javaagent), kotest, Testcontainers, dokka, jibといった一般的な技術を採用したプロジェクトでGitHub ActionsでCI/CDを高速に実行するために、Develocityをはじめとした技術をどのように適用し、それがどのように高速化に貢献したかを紹介します。