このセッションでは、5年間にわたりKotlinで認証システムのバックエンドを開発・運用してきた経験を振り返ります。2019年からこのプロジェクトを開始し、段階的に実装と運用のステージに進んできた私たちの旅を共有したいと思います。
特に以下の点について深く掘り下げます:
セッションを通し、Kotlinのバックエンド開発に興味がある、あるいはKotlinのバックエンド開発プロジェクトを始めたばかりでまだ運用の知見がそれほど溜まっていないといった開発者の方々にとって有益な情報をお伝えしたいと思います。
KotlinのCollection関数の有効活用に焦点を当てたこのセッションでは、100を超える豊富な関数を概観し、それぞれの使用時の利点を探ります。
実際のコード例を通じて、どんなCollection関数があるか、どのシナリオでCollection関数を選択するか等学びましょう。
トピック例
・Kotlin Collectionの概要 - Collectionのフレームワーク基本構造と主要なインターフェースの説明
・Collection関数のカテゴリー分け - 変換関数、フィルタリング関数、集約関数、分割関数などに分けて関数を紹介
・高度な関数 - groupBy, partition, fold などの高度な関数の活用方法と例。
・パフォーマンスの最適化 - Collection関数のパフォーマンスに影響を与える要素と、効率的なコードを書くためのテクニック。for文の出番も?
Kotlinのビット演算使っていますか?
おそらく多くの方はKotlinの入門書で見かけた程度で、実際のプログラミングで使っている方は少ないかもしれません。
実際何に使うものなのか?使ったことが無い方にとっては想像しにくいものです。このセッションでは、元組み込みエンジニアで現Androidエンジニアの私がデバイスとの通信でビット演算を使ってみた経験についてお話します。
対象者
お話する内容
本セッションでは、現在発表者が本番リリースに向けて開発中である、Mastodon用クライアントアプリの実装を通して得た経験から、Compose Multiplatformによるモダンかつ実用的なネイティブアプリを実装するための知見を紹介します。
「画像の表示」「動画の再生」「ファイルピッカー」のような、直接ユーザーが触れる機能はもちろんのこと、「ディープリンクの実装」「ローカルなデータストレージへの認証情報の保持」等の表から見えづらい部分まで、実用的なネイティブアプリの開発における頻出要素をどうすれば共通のKotlinコードで表現し、複数のプラットフォームに向けて実装できるのか、解説します。現時点でのCompose Multiplatformの実力を多くの方に知っていただき、"真のマルチプラットフォーム開発"への挑戦者を1人でも増やせるような発表にできればと思います。
Android LintはAndroidプロジェクトの静的分析ツールとして登場しましたが、JavaとKotlin両方の分析を行えることから、GoogleではサーバサイドJavaとKotlinプロジェクトでも使用されています。
そんなAndroid Lintですが、その内部ではどのファイルが読み込まれていて、何がチェックがされているのかを本セッションで紹介します。
また、Lintをカスタムすることでコードの一貫性を保ち、プロジェクトでの人員の入れ替わりなどにも耐えうる実装例も併せて取り上げていきます。
このような内容で話を進めていきます。
すべてのKotlinプロジェクトで使用できるので、この機会に改めてAndroid Lintの理解を深めましょう。
直近のGoogle I/O でも注目されているARCoreと、それを支えるSceneViewを活用したAR実装について話したいと思います。
現状の構想
自社プロダクトのバックエンドを100% Kotlinでリニューアルしました。
プロダクトは、IOTデータ収集、ビッグデータ処理、SaaS Webシステムからなる中規模のものです。
PoCや新規テーマでの限定的活用ではなく、業務システムをフルスクラッチで開発した例として、
Kotlin採用でよかったことと苦労したことを中心に、実システム開発事例の共有としてお話しします。
・よかったこと、うまくいったこと
・基礎品質の向上 ケアレスミスの予防 実行時エラー起因の手戻りの少なさ
・アーキテクチャリファクタリング DDDの実践に必要不可欠
・概念モデル(データモデル)とコードの同期と調査のしやすさ
・ArchUnitの活用による全体構造の維持
・苦労していること
・ビルド時間短縮のために、プロジェクト分割している。
・値オブジェクトの実装 演算可能オブジェクト(数値類)が実装困難
私が担当するプロダクトでは、全社的に Ruby と Go を採用するプロジェクトが大多数な中、 Kotlin × Spring という新しい技術スタックを用いて開発がスタートしました。
なかなか社内に技術知見がない中でのスタートとなりましたが、その状況下でもエンジニアの実装と設計より、リリースから1年2ヶ月に至るまで大きなバグやインシデント無しで運用をしてくることができました。
そこで、このプロダクトを 2 年開発してくる中で、取り入れてよかった設計、または反省点などを共有・議論できればと考えております。
同じく 0-1 フェーズをこれから経験される方や、自分のプロダクト開発をより良くしていきたい方に向けて少しでも学びがある発表とできたら幸いでございます。
新年0時になると、人々はそれぞれの心を込めて大切な家族や友人にメッセージを送ります。LINEのメッセンジャーサーバーは、その心を伝えるために、APNsやFCMのプッシュ通知サーバーに多数のリクエストを送信します。毎年毎年プッシュ通知を処理してきましたが、2024年はKotlinで新規作成したサーバーがかなりの数のプッシュ通知を処理したという点が特別な年でした。 本発表では、Java開発はベテランですが、Kotlin開発は初めての立場で、大容量・高性能サーバーを開発した経験を以下の視点で共有します。
構文エラーではなくともコンパイラがエラーとして扱い、コンパイルできないコードがKotlinにはある。これはコンパイラの限界によるものである。
例えば、data class のプロパティは何個まで宣言できるだろうか?あるいは、true && true && ... と繋げられる限界は何個だろうか?
このセッションで、そんなコンパイラの限界を探求しようじゃないか。
セッションの概要は以下となる。
ショートセッションでの採択の場合は、3と4の一部を省略する。このセッションを聞くことで、Kotlinコンパイラの内部構造と限界について理解を深めることができるだろう。
Compose for Webの登場により、Kotlin/JSの注目度も高まってきました。
さて、Compose for Webの登場以前からKotlin/JSでリッチなWebフロントエンドを行う手段がありました。それがkotlin-reactです。
このセッションでは、kotlin-reactを使ってどのようにWebフロントエンド開発を行うのかを解説します。
以下トピック
Kotlinを使ってIntellij IDEA向けのプラグインを開発する手法を紹介します。
実際にプラグイン開発する手順を詳細に紹介しつつ、実装に利用するクラスの役割も含めて解説することでセッションで紹介する題材以外のプラグイン開発にも役立つようになることを目指します。
現時点で題材として扱うプラグインでは、選択した範囲の文字列に対して加工して文字列を置き換えるという動作を行い、読み取りと書き込み両方をカバーします。
Kotlin言語自体の仕様には触れないため中級者向けにしていますが詳細に説明することで誰でも理解できるように努めます。
KotlinがAndroid開発の世界にやってきて早数年。もともとJavaで書かれていたライブラリのKotlin移行も加速度的に進んでいます。しかし実際にライブラリをKotlinに書き換えようとすると、意外にも考えるべきことが多いことに気付かされます。
このセッションではJavaで書かれたライブラリをKotlinに書き換える際に考慮したい・気をつけたいポイントを実例を交えて解説します。
互換性維持やKotlinのデータクラスを公開APIにする場合の注意点、Javaコードからの呼び出しの配慮など、今まさにKotlinへの書き換えを検討している開発者はもちろん、すでにKotlinのライブラリをメンテナンスしている開発者の方にも改善のヒントになるかもしれません。
より開発者フレンドリーなライブラリを作っていきませんか?
音声をKotlinで扱う方法について、基本的な考え方から実践的なテクニックまでを幅広く紹介します。
次に実践編として、Kotlinの各種ライブラリを活用した音声処理プログラミングに踏み込みます。
などを実際のコード例とデモを交えて紹介。Kotlinならではの簡潔で安全な記述で、音声プログラミングの敷居を大きく下げられることを示します。
KotlinはJetBrains社によって2011年にそのコンセプトが公開されてから今日に至るまで、幾つものバージョンアップを重ねてきました。
バージョン毎に公開されるリリースノートは、当時どのような課題があり、Kotlinがそれをどう解決したかを読み解くことができる非常に面白い歴史的資料です。
ユーザ目線でリリースノートを眺めることで、Kotlinの言語仕様の変遷を追うと共に、Kotlinが重要視している思想や、Kotlinはどのような言語であると言えるのか、一次情報であるリリースノートを読むときのtipsなどについてお話しします。
以下、扱うトピック
・リリースノートを読むことの楽しさ
・Pragmaticである、とは
・実際に当時のリリースノートを眺めてみる
Kotlinには様々な型が存在します。
その中の一つに、dynamicという型があるのをご存知でしょうか?
本セッションでは、dynamicという型について説明します。
そして、dynamic型で一体何ができるのか、
dynamic型の使い方やdynamic型を使うことのできる環境セットアップを説明します。
また、他言語での同様なdynamicの扱いとの比較などを絡めて、dynamic型が備える特性を活かしての利用シーンなどを検討していくセッションとなります。
Kotlin Multiplafromに対応したライブラリは数多くあります。新しいライブラリだけでなく、途中からKotlin Multiplafromに対応したライブラリもあります。
Android JetpackはAndroid開発における公式が提供するライブラリ群ですが、JetpackでもMultiplatform対応が進んでいます。
これにより、AndroidアプリをMultiplatformアプリに進化できる可能性が出てきました。
このセッションでは、いくつかのライブラリを用いたAndroidアプリを用意し、そのアプリをMultiplatformに進化させていく過程を紹介します。
その中で気をつけるべきポイントや、ハマりどころ、実用性や将来性についても話します。
現代では広く使われているKotlin言語ですが、2011年に公開されて以降、さまざまな発展を遂げてきました。
ソフトウェアは、利用者のニーズや開発環境の変化により日に日に「進化」します。ソフトウェア工学の研究分野においても、特に1990年代後半からソフトウェア進化は活発に議論され始め、今では研究手法、研究対象物、目的はさまざまです。中でも、SEV(Software Evolution Visualization)は、可視化を用いて対象とするソフトウェアの進化を分析するアプローチです。
このセッションでは、SEVの手法を用いてKotlinの進化を紐解きます。Kotlin開発当初の思想や目的、他の言語との関係についても触れつつ、可視化結果とその解釈を発表します。
私は2021年に「Kotlin サーバーサイドプログラミング実践開発」という書籍を出版しました。
その中ではサーバーサイドKotlinで必要なフレームワークの知識、実践的なアプリケーションの作成もしています。
しかしそこから3年が経ち、執筆当時からサーバーサイドKotlinを取り巻く環境は変わってきています。
そこで、今回は書籍の内容からアップデートし、2024年現在のトレンドに則った
・フレームワーク
・アプリケーションアーキテクチャ
・各種ツール
でのKotlinのサーバーサイドアプリケーションの作成方法について紹介していきます。
「サーバーサイドKotlinを導入してみたい」と考えている方にとって、一つの道筋になるかと思います。